
По поводу этой настройки:
Мой публичный авторитетный DNS-сервер по адресу <public dns ip>
:
example.com. A <public webserver IP>
foo.bar.example.com. TXT "Hello World"
Мой частный авторитетный DNS-сервер по адресу 192.168.0.2
:
foo.bar.example.com. A "192.168.0.1"
bar.bar.example.com. CNAME "foo.bar.example.com"
Итак, у меня есть два авторитетных DNS-сервера, один в публичном домене, один в частном домене. Мне нужно, чтобы публичный обслуживал некоторые записи TXT, но не записи A, для определенного подмножества доменов. Частный должен обслуживать записи A и CNAME, только для внутреннего использования, но не будет обслуживать записи TXT.
Если у моих клиентов IP-адреса DNS-серверов указаны в неправильном порядке (публичный, частный), будет ли ответ публичного авторитетного DNS-сервера препятствовать отправке запросов на частный DNS-сервер?
Пример:
Клиент resolv.conf
установил:
<public dns ip>
192.168.0.2
Если они запустят его nslookup foo.bar.example.com
со своей консоли, разрешится ли он 192.168.0.1
или публичный DNS-сервер сообщит им, что имя не существует, и что нужно прекратить поиск?
решение1
Разрешение не работает так, как вы думаете. Когда у вас есть несколько строк в вашем, resolv.conf
они используются как запасной вариант: система всегда использует первый сервер имен, и только если он вообще не отвечает (что отличается от ответа о том, что имя не существует), она затем запрашивает второй и так далее. Это применяется в основном к каждому запросу.
Вам следует настроить все по-другому: иметь только один авторитетный сервер имен, и если вы используете bind
его views
механизм, чтобы отвечать разным клиентам на разные вещи. Позвольте нормальному обходу дерева DNS клиентами найти его.
Но в остальном в теории вы правы: если "публичный" сервер ответит и скажет NXDOMAIN, поиск на этом остановится. За исключением того, что вы смешиваете авторитетное и рекурсивное (те, что в resolv.conf
), что является очень плохой привычкой. И у вас все еще есть настройка, которая сложнее, чем нужно, и это создаст вам проблемы в дальнейшем.
решение2
Это распространенная настройка в сетях Windows, где (благодаря интеграции Active-Directory DNS) рекурсивный распознаватель также является уполномоченным сервером для этой зоны DNS.
Если зона с таким же именем (но с другими записями) также существует в публичном DNS, попытки запросить публичные записи завершатся на внутреннем рекурсивном резолвере (поскольку он является авторитетным для этой зоны, он может авторитетно заявить, что запись не существует); таким образом, публичная зона маскируется частной зоной для любого клиента, использующего частный резолвер.
решение3
По моему мнению, если у вас <public dns ip>
нет записи A для домена, то вам определенно нужно обратиться к вторичному DNS-серверу.192.168.0.2