我试图使用wget获取一个不存在的(无法parsing的主机名)页面。 我期望它会失败,但事实并非如此。
这是一个成绩单
[mark @ cn〜] $ cat /etc/resolv.conf ; 谷歌公众 名称服务器8.8.8.8 域名服务器8.8.4.4 [mark @ cn〜] $ host nonexistent.example.com 主机nonexistent.example.com未find:3(NXDOMAIN) [mark @ cn〜] $ wget -O - http://nonexistent.example.com/ - 2010-09-05 22:12:09-- http://nonexistent.example.com/ 正在parsing不存在的.example.com ... 205.178.189.131 连接到nonexistent.example.com | 205.178.189.131 |:80 ...已连接。 发送HTTP请求,等待响应... 301永久移动 地点:http://127.0.0.1 [关注] - 2010-09-05 22:12:09-- http://127.0.0.1/ 连接到127.0.0.1:80 ...已连接。 发送HTTP请求,等待响应... 200 OK 长度:524 [text / html] 保存为:“标准输出” 0%[] 0 - .- K / s (我的本地Apache服务的一些HTML) 100%[======================================>] 524 --.- K / s在0s 2010-09-05 22:12:09(62.5 MB / s) - ` - '保存[524/524]
为什么发生这种情况? 有任何想法吗?
操作系统:Centos 5.5 x86_64networking:cloudnext专用虚拟服务器
我问,因为我已经在Python代码中尝试过,发生类似的事情。 有什么可疑的事情正在发生,我无法弄清楚什么。
你有没有把你的search域列出来的resolv.conf
的一部分?
如果至less有一个search域具有通配符条目(或者您的服务器FQDN域),那么wget
真正解决的是nonexistent.example.com.your.domain.com.
。 这可能会导致Web服务器被configuration为将客户端redirect到本地主机,如果它得到一个未知的VHost的查询。
在我看来,解决这个问题的正确方法是,不要使用通配符域,或者至less不要将它们用作search域。 如果事实上你的服务器的FQDN是在通配符域中的,你可以通过把这个放在你的resolv.conf
解决这个问题:
options ndots:1 search .
我怀疑这是因为Google DNS几乎要为所有请求返回一个答案。 OpenDNS也是类似的…他们的想法是,他们可以redirect未知的主机请求纠正(*咳嗽)和广告收入(*咳嗽)。
如果将DNS服务器更改为其他内容,会发生什么情况? 像4.2.2.2一样?
-M
我遇到了一个非常相似的症状,wget将地址parsing为127.0.0.1。 尽pipe同一networking中的其他机器正确地parsing了地址,但是这种情况发生了,所以似乎是本地化的。 有问题的机器利用cntlm进行代理处理,但事实certificatecntlm进程当时没有运行。 启动cntlm进程后,wget按预期运行并parsing为正确的地址。