Warum hängt Wget?

12

Wenn Sie eine bestimmte URL von einem meiner Server aus aufrufen, treten immer wieder Timeouts auf. Alle anderen URLs aus dieser Box funktionieren einwandfrei. Diese URL funktioniert einwandfrei von allen anderen Boxen, die ich habe. Hier ist die Ausgabe:

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

Können Sie mir sagen, was möglicherweise falsch ist und wie ich Fehler beheben kann? Ich verwende Ubuntu 11.04 (GNU / Linux 2.6.38-8-Server x86_64)

Vielen Dank im Voraus und verzeihen Sie meine noobish Unwissenheit :)

ping, telnet, nc www.fcc-fac.ca 80 - alles hängt. Einige andere URLs, die leicht zu finden sind, obwohl nur einige ihrer Hosts pingfähig sind.

Traceroute sagt mir nicht viel:

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  * * *

Vielen Dank für Antworten!

Szczepan
quelle

Antworten:

14

Ich denke, dass das Problem ist, dass wget nicht gut mit IPv6-Adressen umgeht und der DNS-Server ein IPv6 für diese Site sendet. Entschuldigung, wenn ich Ihre Frage falsch verstanden habe. Überprüfen Sie diese Tests:

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'

Wenn ich IPv6 erzwinge, weil ich glaube, dass Ihr Problem damit zusammenhängt, schlägt dies fehl:

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'

Wenn ich jedoch die Verwendung von IPv4 erzwinge, wird die Indexseite direkt heruntergeladen

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'
hmontoliu
quelle
Er löst es ganz gut mit einer IPv4-Adresse.
Jodie C
Ein weiteres Beispiel, warum ich IPv6 nicht mag: - /
PJ Brunet
1

Führen Sie aus nc www.fcc-fac.ca 80, geben Sie es ein GET /und drücken Sie zweimal die Eingabetaste.

Das entfernte Visier ist möglicherweise ausgefallen oder blockiert Sie.

Jodie C
quelle
Hey, danke für die Antwort - Ich habe die ursprüngliche Frage aktualisiert
Szczepan
Wenn Sie nicht an die Adresse netcat können, werden Sie wahrscheinlich irgendwo auf dem Weg blockiert.
Jodie C
1

Es sieht so aus, als ob wget keine Verbindung zu Ihrer IP-Adresse auf Port 80 herstellen kann.

Überprüfen Sie, ob Ihr Server pingfähig ist:

ping 65.87.238.35
ping 207.195.108.140

Wenn die IP-Adresse pingfähig ist, prüfen Sie, ob Sie über Telnet eine Verbindung zu Port 80 herstellen können:

Telnet 65.87.238.35 80

Wenn der Server nicht auf Ping antwortet, ist er wahrscheinlich inaktiv oder für Ihr Quellennetz nicht erreichbar.

Testen Sie mit dem Traceroute-Tool, um festzustellen, wo die Verbindung fehlschlägt.

Goez
quelle
Hey, danke für die Antwort - Ich habe die ursprüngliche Frage aktualisiert
Szczepan
Eine Grabung auf www.fcc-fac.ca sagt mir, dass es 2 DNS-Einträge vom Typ A gibt: ;; ANTWORT ABSCHNITT: www.fcc-fac.ca. 120 IN A 65.87.238.35 www.fcc-fac.ca. 120 IN A 207.195.108.140 Wenn beide nicht erreichbar sind, ist der Host inaktiv und wget kann die gewünschte Datei natürlich nicht abrufen. Wenn einige IP-Adressen erreichbar sind, überspringt wget die heruntergeladene IP-Adresse, bis eine IP-Adresse gefunden wird, die erreicht werden kann, und lädt die Datei von dort herunter. In Ihrem Fall scheinen beide Hosts aufgrund der langen Antwortzeit (Timeout) nicht verfügbar zu sein.
Goez
Sie können die -T-Option in wget verwenden, um den Zeitlimitwert zu verlängern. Das Zeitlimit beträgt Sek. bis Sek., daher kann ein höherer Wert hilfreich sein
Goez
In Ordnung. Aha. Beide IPS sind nicht pingfähig (ich habe von 2 verschiedenen Maschinen aus nachgesehen). Doch der Link funktioniert gut im Browser und wenn von anderen Rechnern wget'ed als derjenige, der Probleme macht: /
Szczepan
Höhere Timeout hilft nicht
Szczepan
1

Behebung der langsamen DNS-Auflösung in PHP-Skripten mithilfe der CURL-Bibliothek.

Aus der libcurl-Dokumentation:

CURLOPT_IPRESOLVE

Ermöglicht einer Anwendung, auszuwählen, welche Art von IP-Adressen zum Auflösen von Hostnamen verwendet werden sollen. Dies ist nur interessant, wenn Hostnamen verwendet werden, die Adressen auflösen, die mehr als eine IP-Version verwenden. Die zulässigen Werte sind:

CURL_IPRESOLVE_WHATEVER

Standardmäßig werden Adressen in alle IP-Versionen aufgelöst, die Ihr System zulässt.

CURL_IPRESOLVE_V4

Auf IPv4-Adressen auflösen.

CURL_IPRESOLVE_V6

Auf IPv6-Adressen auflösen.

Ich glaube, dass diese als Umgebungsvariablen festgelegt werden können. Zumindest während der Verwendung von PHP haben diese Einstellungen einen großen Unterschied zur Auflösungsgeschwindigkeit bewirkt.

Bryan Hunt
quelle