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