wgetがハングしているのはなぜですか?


12

サーバーの1つから特定の1つのURLにwgetすると、タイムアウトが発生し続けます。このボックスの他のURLはすべて正常に機能します。このURLは、私が持っている他のどのボックスでも問題なく機能します。出力は次のとおりです。

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)を使用しています

事前にどうもありがとうございました、私のnoobish無知を許してください:)

ping、telnet、nc www.fcc-fac.ca 80-すべてハングします。ただし、ホストの一部のみがping可能ですが、簡単にwget'ableである他のいくつかの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  * * *

回答ありがとうございます!

回答:


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を強制する場合、それは失敗します:

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ブルーネット

1

実行しnc www.fcc-fac.ca 80GET /入力してEnterキーを2回押します。

リモートサイトがダウンしているか、ブロックされている可能性があります。


ねえ、答えてくれてありがとう-元の質問を更新しました
シュチェパン

アドレスにnetcatできない場合は、おそらく途中でブロックされています。
ジョディC

1

wgetはポート80でIPに接続できないようです。

サーバーがping可能かどうかを確認します。

ping 65.87.238.35
ping 207.195.108.140

IPがping可能であれば、uがtelnetを使用してポート80に接続できるかどうかを確認します。

telnet 65.87.238.35 80

サーバーがpingに応答しない場合は、おそらくソースネットがダウンしているか到達不能です。

tracerouteツールでテストして、接続が失敗した場所を確認します。


ねえ、答えてくれてありがとう-元の質問を更新しました
シュチェパン

www.fcc-fac.caを調べると、タイプAの2つのDNSレコードがあることがわかります。回答セクション:www.fcc-fac.ca。120 IN A 65.87.238.35 www.fcc-fac.ca。120 IN A 207.195.108.140両方に到達できない場合、ホストはダウンしており、当然wgetは必要なファイルを取得できません。到達可能なIPがある場合、wgetは、到達可能なIPに遭遇するまで、ダウンIPをスキップし、そこからファイルをダウンロードします。あなたの場合、両方のホストが長い応答時間(タイムアウト)のためにダウンしているように見えます。
Goez

uは、wgetで-Tオプションを使用してタイムアウト値を延長できます。タイムアウトは秒から秒までなので、より高い値が役立つ場合があります
-Goez

OK。そうですか。両方のipsはpingeableではありません(2つの異なるマシンからチェックしました)。それでも、リンクはブラウザで正常に機能し、トラブルを起こすマシンとは異なるマシンからwgetされた場合:/
Szczepan

タイムアウトを
長く

1

CURLライブラリを使用したPHPスクリプトでのDNS解決の遅延を修正。

libcurlドキュメントから:

CURLOPT_IPRESOLVE

ホスト名を解決するときに使用するIPアドレスの種類をアプリケーションが選択できるようにします。これは、複数のバージョンのIPを使用してアドレスを解決するホスト名を使用する場合にのみ興味深いものです。許可される値は次のとおりです。

CURL_IPRESOLVE_WHATEVER

デフォルトでは、システムが許可するすべてのIPバージョンにアドレスを解決します。

CURL_IPRESOLVE_V4

IPv4アドレスに解決します。

CURL_IPRESOLVE_V6

IPv6アドレスに解決します。

これらは環境変数として設定できると思います。少なくともPHPを使用している間、これらの設定はリゾルバーの速度に大きな違いをもたらしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.