Я настроил 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 ничего не работает.