У меня есть сервер Windows 2012 с двумя интерфейсами - общедоступный с выходом в Интернет и частный.
Частный интерфейс использует наши внутренние DNS-серверы. У этого интерфейса нет шлюза. Статический IP - не DHCP.
Я хочу отключить публичный интерфейс, так как мы используем прокси для исходящего трафика.
Отключив его, я обнаружил, что разрешение DNS не работает:
Я не могу пинговать foo.external.com - хост не найден
Однако я могу nslookup, заметить, что он подключается к нашему внутреннему DNS, и успешно разрешить foo.external.com
ipconfig / displaydns ДЕЙСТВИТЕЛЬНО показывает правильную запись. Я совершенно сбит с толку, почему ping просто не использует эту запись.
Если я вручную добавлю запись в файл локальных хостов для «1.1.1.1 foo» в качестве эксперимента и попытаюсь выполнить команду ping foo, это не удастся - не сможет разрешить host. То же самое для foo.external.com и "foo.external.com.". Пинг "foo.external.com" или "foo.external.com". тоже не получается.
Однако если я снова включу публичный интерфейс, все заработает. Включая файл hosts. Я могу пинговать "foo" (аспект разрешения). Отключите его, и он снова перестанет работать.
Я перепробовал все перезагрузки, ipconfig / flushdns, nbtstat -R прочее.
a) Почему ping (и наше приложение) не может должным образом решать проблемы, когда публичный интерфейс отключен, несмотря на то, что Windows может разговаривать со своим DNS-сервером и кэшировать результат (как показано в ipconfig / displaydns).
б) Почему файл hosts игнорируется для частного интерфейса?
Большое спасибо.
Находятся ли ваши внутренние DNS-серверы в той же подсети, что и ваш частный интерфейс? Если нет, то ваш сервер не будет знать маршрут к вашим DNS-серверам, и ваш DNS-запрос завершится ошибкой. Добавьте шлюз в настройки вашей частной сети или добавьте статический маршрут, чтобы ваша частная сетевая карта знала, что она может получить от нее.
Вернулся быстрый поиск в Google этот пользователь с таким же вопросом:
Пользователь сделал снимок Wireshark и обнаружил, что при попытке проверить связь с хостом DNS-запрос не выполнялся.
Объяснение такого поведения было:
Я считаю, что nslookup открывает соединение winsock через порт DNS и выдает запрос, тогда как ping использует службу DNS-клиента. Вы можете попробовать остановить эту службу и посмотреть, имеет ли это значение.
Некоторые команды, которые повторно инициализируют различные состояния сети:
Сбросьте записи WINSOCK до значений по умолчанию:
netsh winsock reset catalog
Сбросить стек TCP / IP до значений по умолчанию:netsh int ip reset reset.log
Очистить кеш преобразователя DNS:ipconfig /flushdns
Обновите регистрацию клиента DNS и обновите аренду DHCP:ipconfig /registerdns
Очистить таблицу маршрутизации:route /f
(требуется перезагрузка)