なぜIPアドレスをpingできても「traceroute」できないのですか?


46

IPアドレスをpingできますが、tracerouteできません。これはどうやってできるの?

[USERNAME@HOSTNAME ~]$ ping CENSORED.CENSORED
PING CENSORED.CENSORED (CENSORED) 56(84) bytes of data.
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=1 ttl=49 time=52.8 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=2 ttl=49 time=49.4 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=3 ttl=49 time=49.2 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=4 ttl=49 time=50.4 ms
^C
--- CENSORED.CENSORED ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 49.276/50.494/52.804/1.401 ms
[USERNAME@HOSTNAME ~]$
[USERNAME@HOSTNAME ~]$ traceroute CENSORED.CENSORED
traceroute to CENSORED.CENSORED (CENSORED), 30 hops max, 60 byte packets
 1  CENSORED (CENSORED)  5.733 ms  6.000 ms  5.977 ms
 2  CENSORED (CENSORED)  0.428 ms  0.417 ms  0.393 ms
 3  CENSORED (CENSORED)  1.726 ms  1.718 ms  1.682 ms
 4  CENSORED (CENSORED)  26.699 ms  26.693 ms  26.670 ms
 5  CENSORED (CENSORED)  27.785 ms  27.769 ms  27.746 ms
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
[USERNAME@HOSTNAME ~]$

CENSOREDtraceroute の5番目のIPアドレスは、「ping CENSORED.CENSORED」と同じではありません。


tracerouteからの出力は何ですか?
-ChrisF

1
IPが「検閲」されるのはなぜですか?
サティアジスバート

1
なぜIPが「検閲」されるのか...多分それがパブリックではないからでしょうか?? pff
ランスベインズ

8
私たちが彼のマシンをハッキングしようとしないように、ポスターがIPを編集したと思います。
msw

これらの星は検閲を意味するものではありません、彼らは何の応答がなかったわけ
JBU

回答:


42

tracerouteでデフォルトのUDPメソッドの代わりにTCP SYNやICMPなどの別のメソッドを使用してみてください。

たとえば、ICMPとTCPの違いに注意してください。

x@x:~$ ping -qc4 94.254.2.51
PING 94.254.2.51 (94.254.2.51) 56(84) bytes of data.
--- 94.254.3.90 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 7.781/7.807/7.836/0.067 ms

x@x:~$ sudo traceroute -I 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.307 ms  1.299 ms  1.432 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  7.166 ms  7.364 ms  7.336 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.251 ms  7.099 ms  7.220 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.059 ms  7.074 ms  7.145 ms
9  h-2-51.A322.priv.bahnhof.se (94.254.2.51)  7.619 ms  7.750 ms  8.070 ms

x@x:~$ sudo traceroute -T 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.621 ms  1.683 ms  1.817 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  8.530 ms  7.861 ms  7.820 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.724 ms  7.539 ms  7.486 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.572 ms  7.537 ms  7.553 ms
9  * * *
10  * * *
11  * * *
12  * * *
13  * * *

2
-TはOSXのスイッチではないようです。OSXでTCP SYNを使用する代替手段はありますか?
マナチ

2
@Manachi:brew install tcptraceroute
iolsmit

1
@Manchi:マンページを読む...: "traceroute -P TCP <IP>"
ベンバ

23

tracerouteはICMPまたはUDPパケットに基づいています。これは、ユーザーとcensored.censoredの間のパス上の各ルーターに効果的にpingを実行します。各パケットが最後からTTLを増やして送信されると、パス内の次のルーターがエラーコードを返すことを期待して、送信する後続の各パケットの生存時間(TTL)を増やします(通常1から30)。 。

ホップ6が応答しない場合、おそらくICMP / UDPメッセージを特にブロックしている可能性があります。したがって、pingは機能します。これは、tracerouteの場合のように、ユーザーとルーターの間のルーターがICMP / UDPパケットを応答するのではなく、単に通過させるためです。


2
ほとんどの(すべて?)* nixディストリビューションでは、tracerouteはICMPではなくUDPをデフォルトで使用します。
h0tw1r3

良い点は、修正します。
リースギブソン

5ブロックUDPの後にすべてのルーターは?あれは正しいですか?
ランスベインズ

そうは思いません。他の誰かがより良い説明を持っているかもしれませんが、ホップ6が応答しておらず、パケットを渡していないと思います。
リースギブソン

1
しかし、私はそれが30ホップ未満であると確信しています。したがって、答えは良くありません。ホップ7、8、9など tracerouteに返信があります。\
LanceBaynes

12

なぜ質問の一部に答えがなかった。

いくつかのISPは、ルーターをtracerouteに2つの方法でステルスにすることで知られています:IPパケットのTTLを減らさない(IPワームホールになる)か、ICMPの転送中に期限切れのTTLに応答しません。

その理由は、内部ネットワークトポロジをプライベートに保つためです。それで全部です。

traceroute複数のソース/宛先から/にsを発行すると、ネットワークトポロジに関する情報が明らかになります。


2

TracerouteはICMPメッセージに依存しますが、一部のルーターは応答しないように構成されている場合があります。


PingもICMPであり、違いを説明しません。ステートtracerouteがudpを使用できる他の回答を読むことには利点がありますが、これは以前は知りませんでした。
リッチホモルカ

さて、traceroute ICMPパケットを明示的にブロックする1つの方法は、TTL = 1である着信ICMPをドロップすることです。たぶん、彼らは何らかの理由でそうしているのでしょう。
ローレンス

2

pingtracerouteのような情報を取得するために使用する価値がある場合があります。

#!/bin/bash
for TTL in 1 2 3 4 5 6 7 8 9 10 11 12
do
    ping -c 1 -n -t $TTL a.b.c.d
done

-t $ TTL引数を指定してpingを呼び出すと、ファイアウォールを回避し、ファイアウォールの背後にあるルーターのIPアドレスなどを見つけることができます。


3
これは-Iフラグを指定してtracerouteを呼び出すのと同じですが、(奇妙なことに)スーパーユーザーステータスが必要になります。
ツァリアム

1
@Tzarium pingにはスーパーユーザーステータスも必要です。suidビットが設定されているだけなので、無料で入手できます。
itsadok

0

6以降のノードすべてがUDPパケットに応答しないか、ノード6自体がudpパケットをブロックします。fllowingメソッドを試すことができます。これは、経路のどのノードがICMP / TCP SYNをブロックするかに基づいて機能することを期待しています。

  1. ICMPを使用してtracerouteを実行します:$ sudo traceroute -I

  2. tracerouteにTCP synを使用します:$ sudo traceroute -T

  3. ホップが超過している場合は、次のいずれかを使用します。$ sudo traceroute -I -m 60

または

$ sudo traceroute -T -m 60

後者は、大陸を渡るftpへのトレースルーティング中に私のために働きました。


0

UNIX環境でpingコマンドを使用してtracerouteを実行するには、次を試してください。

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.