为什么wget挂了?


12

从我的一台服务器到单个特定URL的wget不断超时。此框中的所有其他网址都可以正常工作。这个网址在我拥有的任何其他框中都可以正常工作。这是输出:

wget -T 10 http://www.fcc-fac.ca
--2011-07-14 14:44:29--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... failed: Connection timed out.
Connecting to www.fcc-fac.ca|207.195.108.140|:80... failed: Connection timed out

您能告诉我什么地方可能出问题了,我该如何解决呢?我正在使用Ubuntu 11.04(GNU / Linux 2.6.38-8-server x86_64)

提前非常感谢您,原谅我的无知:)

ping,telnet,nc www.fcc-fac.ca 80-全部挂起。但是,尽管只有某些主机可以ping通,但其他一些很容易获得的url 。

traceroute并不能告诉我很多:

7  rx0nr-access-communications.wp.bigpipeinc.com (66.244.208.10)  148.834 ms  149.018 ms  148.940 ms
8  sw-1-research.accesscomm.ca (24.72.3.9)  158.901 ms  159.805 ms  160.162 ms
9  65.87.238.126 (65.87.238.126)  150.069 ms  148.861 ms  148.846 ms
10  * * *
...
30  * * *

非常感谢您的回答!

Answers:


14

我认为问题在于wget无法很好地处理IPv6地址,并且DNS服务器正在为该站点发送IPv6。对不起,如果我误解了你的问题。检查那些测试:

hmontoliu@ulises:~$ wget -T10 http://www.fcc-fac.ca
--2011-07-14 16:44:34--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: Connection timed out.
wget: unable to resolve host address `www.fcc-fac.ca'

如果我因为认为您的问题与IPv6有关而强制使用IPv6,则它将失败:

hmontoliu@ulises:~$ wget -6 http://www.fcc-fac.ca
--2011-07-14 16:40:44--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: No address associated with hostname.
wget: unable to resolve host address `www.fcc-fac.ca'

但是,如果我强制使用IPv4,它将下载正确的索引页

hmontoliu@ulises:~$ wget -4 http://www.fcc-fac.ca
--2011-07-14 16:40:56--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6554 (6,4K) [text/html]
Saving to: `index.html'

他使用IPv4地址就可以解决它。
朱迪C

为什么我不喜欢IPv6的另一个示例:-/
PJ Brunet

1

运行nc www.fcc-fac.ca 80,输入,GET /然后按两次Enter。

远景可能已关闭或挡住了您。


嘿,谢谢您的回答-我更新了原始问题
Szczepan

如果您无法通过netcat到达该地址,则可能是您在途中被某处阻止。
朱迪·C

1

似乎wget无法通过端口80连接到您的ip。

检查您的服务器是否可ping通:

ping 65.87.238.35
ping 207.195.108.140

如果IP可ping通,请检查您是否可以使用telnet连接到端口80:

telnet 65.87.238.35 80

如果服务器不响应ping,则源网络可能已关闭或无法访问。

使用traceroute工具进行测试,以查看连接失败的地方。


嘿,谢谢您的回答-我更新了原始问题
Szczepan

在www.fcc-fac.ca上进行的一次挖掘告诉我,它具有2个类型A的DNS记录:;; 解答部分:www.fcc-fac.ca。120英寸65.87.238.35 www.fcc-fac.ca。120 IN A 207.195.108.140如果两者均无法访问,则主机已关闭,自然wget将无法检索您想要的文件。如果有一些ip可达,wget将跳过向下的ip,直到遇到可以访问的ip,然后从那里下载文件。在您的情况下,由于我认为响应时间过长(超时),因此两个主机似乎都处于关闭状态。
Goez

您可以在wget中使用-T选项来扩展超时值超时是秒到秒,所以也许更高的值会有所帮助
Goez 2011年

好。我知道了。这两个IP都不可修改(我从2台不同的计算机上进行了检查)。然而,该链接在浏览器中以及从麻烦的机器上从不同的机器获取wget时,都可以正常工作:/
Szczepan

较高的超时时间无济于事
Szczepan

1

修复了使用CURL库的PHP脚本中DNS解析速度慢的问题。

从libcurl文档中:

CURLOPT_IPRESOLVE

允许应用程序在解析主机名时选择使用哪种IP地址。仅当使用使用多个IP版本解析地址的主机名时,这才有意义。允许的值为:

CURL_IPRESOLVE_WHATEVER

默认值,将地址解析为系统允许的所有IP版本。

CURL_IPRESOLVE_V4

解析为IPv4地址。

CURL_IPRESOLVE_V6

解析为IPv6地址。

我相信这些可以设置为环境变量。至少在使用PHP时,这些设置对解析器速度产生了巨大的影响。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.