Назад | Перейти на главную страницу

Порядок внешних DNS-серверов на DNS-сервере ОС маршрутизатора

У нас есть DNS-сервер на нашем Mikrotik (RouterOS 6.36).

[admin@xxx] /ip dns> print 
                servers: 10.0.10.3,8.8.8.8
        dynamic-servers: 
  allow-remote-requests: yes
    max-udp-packet-size: 4096
   query-server-timeout: 2s
    query-total-timeout: 10s
             cache-size: 10240KiB
          cache-max-ttl: 1w
             cache-used: 243KiB
[admin@xxx] /ip dns> 

Есть список DNS-серверов, где он должен спросить. Я ожидал, что сначала он спросит 10.0.10.3, если запись не найдена, чем спросит 8.8.8.8?

Проблема в том, что 10.0.10.3 - это наш внутренний DNS-сервер с некоторыми локальными адресами. Они недоступны в 8.8.8.8

Когда у меня есть оба сервера, nslookup для адреса не работает. Когда удаляю гугл (8.8.8.8) и оставляю только наш внутренний, он работает.

Почему в RouterOS не соблюдается порядок серверов?

Пробовал сделать заказ 10.0.10.3,8.8.8.8 или 8.8.8.8, 10.0.10.3, не важно.

Любые идеи? Спасибо

Если у вас есть внутренние имена, которые необходимо разрешить, вам не следует определять какие-либо внешние DNS-серверы. Создайте второй внутренний DNS-сервер для HA, укажите его вместе с другим внутренним сервером и укажите эти два в конфигурации вашего внутреннего маршрутизатора.

Когда есть список серверов имен, он работает не так, как вы думаете: второй запрашивается только в том случае, если первый вообще не ответил. Если первый сервер имен ответил, что запись не найдена, она же NXDOMAIN, то поиск останавливается на этом, более поздние серверы имен не используются.

Как правило, не рекомендуется смешивать внутренние частные серверы имен и общедоступные, что, безусловно, приведет к странному взаимодействию.

Если у вас есть только несколько локальных имен хостов, вы можете добавить их как статические записи на Mikrotik и полностью заменить свой внутренний DNS-сервер на Mikrotik. Когда клиент отправляет некоторый DNS-запрос к Mikrotik, маршрутизатор сначала проверяет свои статические записи, и, если не удастся, он запросит настроенный внешний DNS-сервер.

Чтобы добавить несколько статических записей:

/ip dns static add name="laptop2.local" address=192.168.1.10 ttl=1d
/ip dns static add name="desktop1.local" address=192.168.1.11 ttl=1d
/ip dns static add name="server8.local" address=192.168.1.20 ttl=1d

Вы даже можете использовать регулярные выражения. Например, если у вас есть один внутренний веб-сервер с несколькими виртуальными хостами www:

/ip dns static add regexp="\w*\.webserver\.local" address=192.168.1.21 ttl=1d