Почему добавление одновременно частных и публичных DNS-серверов в Windows вызывает неожиданное поведение?

Почему добавление одновременно частных и публичных DNS-серверов в Windows вызывает неожиданное поведение?

У меня в сетевых настройках Windows настроены два DNS-сервера:

  • Preferred DNS server:Мой DNS-сервер
  • Alternate DNS server:Публичный DNS, предоставляемый интернет-провайдером

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

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

Почему это происходит и как это исправить?

решение1

1) Это так не работает.

Я усвоил тяжелый урок, который Windows делаетнетиспользуйте этот список DNS-серверов по порядку. Выне могупредположим, что он просто пройдется по списку, если не сможет определить имя.

На TechNet есть довольно длинное объяснение, которое вы можете найтиздесьПроблема, с которой я лично столкнулся, была вызвана этим небольшим фрагментом:

Служба DNS-клиента отслеживает, какие серверы быстрее отвечают на запросы имен, и перемещает серверы вверх или вниз по списку в зависимости от того, насколько быстро они отвечают на запросы имен.

У нас было пять DNS-серверов, перечисленных в наших настройках DHCP, последние два были местными ISP. Наши остальные три были очень старыми машинами, и мы решили, что лучше всего будет добавить серверы местного ISP в качестве резервных. Угадайте, чьи были быстрее?

Неприятно, когда серверы перестают разрешать внутренние имена.

Это побудило меня пригрозитьперейти на Linux.

2) Так почему же это сработало в командной строке?

Я предполагаю, что вы использовали nslookup, что будетвсегдаиспользуйте первый сервер в вашем списке DNS, если вы не указали иное. Поскольку вы всегда проверяли свой частный DNS-сервер, это всегда работало. Как только вы открываете Internet Explorer и начинаете фактически пытаться разрешить имена, поведение становится другим (как указано в длинной блок-схеме выше).

Разве это не чудесно сбивает с толку? Я гонялся за проблемами разрешения имен в течение недели, удивляясь, почему это всегда работало nslookup, но по какой-то причине Lotus Notes не мог найти свой почтовый сервер. Я не понял этого, пока не использовал Wireshark, чтобы проверить, как он на самом деле разрешает имена.

3) Как это исправить?

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

решение2

Вместо того, чтобы настраивать два DNS-сервера, вам следует использовать только ваш частный DNS, а затем заставить этот DNS-сервер проверять неизвестные ему результаты с помощью внешнего DNS. Точный способ настройки будет зависеть от вашего частного DNS-сервера, но это должно дать более однородные результаты, поскольку ваш альтернативный DNS-сервер может использоваться, когда он думает, что основной занят.

Связанный контент