У меня в сетевых настройках 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-сервер может использоваться, когда он думает, что основной занят.