Я пытаюсь получить несуществующую страницу (неразрешимое имя хоста) с помощью wget. Я ожидаю, что это не удастся, но это не так.
Вот стенограмма
[mark@cn ~]$ cat /etc/resolv.conf ; google public nameserver 8.8.8.8 nameserver 8.8.4.4 [mark@cn ~]$ host nonexistent.example.com Host nonexistent.example.com not found: 3(NXDOMAIN) [mark@cn ~]$ wget -O - http://nonexistent.example.com/ --2010-09-05 22:12:09-- http://nonexistent.example.com/ Resolving nonexistent.example.com... 205.178.189.131 Connecting to nonexistent.example.com|205.178.189.131|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://127.0.0.1 [following] --2010-09-05 22:12:09-- http://127.0.0.1/ Connecting to 127.0.0.1:80... connected. HTTP request sent, awaiting response... 200 OK Length: 524 [text/html] Saving to: `STDOUT' 0% [ ] 0 --.-K/s (some HTML that my local Apache serves) 100%[======================================>] 524 --.-K/s in 0s 2010-09-05 22:12:09 (62.5 MB/s) - `-' saved [524/524]
Почему это происходит? Любые идеи?
ОС: Centos 5.5 x86_64 Сеть: выделенные виртуальные серверы cloudnext
Я спрашиваю, потому что я пробовал то же самое в коде Python, и происходит нечто подобное. Что-то происходит подозрительно, и я не могу понять, что именно.
Вы, возможно, упустили часть своего resolv.conf
где указаны ваши поисковые домены?
Если хотя бы в одном из ваших поисковых доменов есть записи с подстановочными знаками (или домен FQDN вашего сервера), то что wget
действительно решает, это nonexistent.example.com.your.domain.com.
. Это, вероятно, приводит к веб-серверу, который настроен для перенаправления клиента на localhost, если он получает запрос на неизвестный VHost.
На мой взгляд, правильный способ исправить это - не использовать домены с подстановочными знаками или, по крайней мере, не использовать их в качестве доменов поиска. Если на самом деле полное доменное имя вашего сервера находится в домене с подстановочными знаками, вы можете обойти проблему, поместив это в свой resolv.conf
:
options ndots:1
search .
Я столкнулся с очень похожим симптомом, когда wget разрешал адреса до 127.0.0.1. Это произошло, несмотря на то, что другие машины в той же сети правильно разрешили адрес, поэтому он выглядел локализованным. Машина, на которой возникла проблема, использовала cntlm для обработки прокси, но оказалось, что процесс cntlm в то время не работал. После запуска процесса cntlm wget функционировал должным образом и разрешил правильный адрес.
Я подозреваю, что это потому, что Google DNS возвращает ответ практически на все запросы. OpenDNS тоже похож ... идея в том, что они могут перенаправлять запросы неизвестного хоста в другое место для исправления (* кашляет) и дохода от рекламы (* кашляет).
Что произойдет, если вы измените DNS-серверы на что-то другое? Нравится 4.2.2.2?
-M