
私の Linux ボックスではtraceroute
動作しません。出力は次のようになります。
$ traceroute google.com
traceroute to google.com (209.85.231.104), 30 hops max, 52 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
なぜ動作しないのか誰か教えてもらえますか? 何か考えられる理由はありますか?
答え1
デフォルトでは、traceroute
ホストのトレースには高レベルの UDP ポートを使用します。ただし、ファイアウォールによってこれらの UDP ポートがブロックされることがあります。
-I
コマンドラインに (大文字の i) パラメータを追加してみてください。例:
traceroute -I www.google.it
これにより、ホストのトレースに UDP ではなく ICMP が使用されます。
答え2
ファイアウォールをバイパスするには、-T (tcp) または -U (udp) を使用してください。
一部のルーター/ファイアウォールは、icmp エコーを通過させないため、これら 2 つを使用してバイパスします。
とにかく、Wikipedia に書かれていることとは反対に、私の Debian ボックスでは、traceroute は udp ではなく icmp パケットを使用します。
編集
間違っていました...UDP を使用しています...返ってくる ICMP は到達不可能なポート用です...申し訳ありません
答え3
上流のファイアウォールがUDPパケットをブロックしている可能性があります トレースルート
最新の Unix 系オペレーティング システムでは、traceroute ユーティリティはデフォルトで、宛先ポート番号が 33434 から 33534 までの UDP データグラムを使用します。
答え4
これはおそらく、icmp TIME_EXCEEDED 応答が、デフォルトゲートウェイとして使用しているルーター/ファイアウォールまたは Linux システム自体によってフィルタリングされているためです。