1

Я настроил DNS-сервер в моей домашней сети. Он обслуживает несколько дополнительных доменных имен, таких как foo . Обратите внимание, что foo настроен на возврат 404 для всех запросов. (Я не получил, чтобы это делало то, что я хочу.) Также обратите внимание, что foo является одноуровневым доменным именем, то есть foo. это полное доменное имя Надеюсь, очевидно, что это не то имя, которое я ожидаю найти где-либо, кроме моей домашней сети.

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

Топология сети, просто для справки:

^ out to Comcast
|
* Comcast modem
|
+-* 10.1.10.2, a server, hosting a webserver and a DNS server.
+-* 10.1.10.3/192.168.2.1, a wireless router.
  |
(via WiFi)
  |
  +-* an Android phone
  +-* a Windows laptop.
  +-* a Linux laptop.

Беспроводной маршрутизатор настроен на использование 10.1.10.2 для DNS. Тем не менее он отправляет 192.168.2.1 в качестве DNS-сервера в своем ответе DHCP (проверено с помощью Wireshark).

Телефон Android, если его попросят сделать http://foo/ в Chrome, получит 404. (Что правильно.)

Компьютер с Windows, если его просят сделать то же самое в Chrome, завершает работу с ошибкой «Ой! Google Chrome не может найти страницу. Используя nslookup на машине и выдавая foo по запросу, он не может найти foo . Он утверждает, что использует 192.168.2.1 в качестве DNS-сервера. Если я nslookup foo. (обратите внимание на точку), я получаю верный IP-адрес. Если я запрашиваю http://10.1.10.2 , я получаю 404.

На машине с Linux правильный ответ dig @10.1.10.2 foo . Кроме того, dig @192.168.2.1 foo также дает правильный результат.

Что, черт возьми, происходит? Почему машина Windows, возвращающая не найденный для ответов DNS, в то время как все другие машины, кажется, получают правильный ответ?

Изменить: У меня есть Python на компьютере с Windows. У меня фактически есть два домена, foo и bar . socket.gethostbyname Python может видеть foo , но не bar . (Имейте в виду, что их обслуживает один и тот же DNS-сервер - записи идентичны, за исключением имени.) nslookup не может видеть приседания, кроме того, что имеет точку. В Chrome ничего не работает.

0