技術部ネットワーク課の二之宮です。
はじめに
なにげなく traceroute コマンドの man を見ていたら、大変、興味深いオプションが沢山ありましたので、試してみました。
環境
項目 | 内容 |
---|---|
ディストリビューション | CentOS 7.9.2009 |
linux カーネル | 3.10.0-1160.11.1.el7.x86_64 |
traceroute | 2.0.22 |
traceroute コマンドとは
送信したパケットが、宛先のホストに到達するまでに経由した経路を表示するコマンド。
いつもの使い方
いつもは、-n オプションや -A オプションを使用するくらいです。
オプション無し
$ traceroute google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 1 l3-1-01.kgo.synapse.ne.jp (202.208.174.253) 0.896 ms 0.977 ms 1.097 ms 2 bb02-te5-15.kgo.synapse.ne.jp (202.208.178.169) 6.883 ms bb01-te5-15.kgo.synapse.ne.jp (202.208.178.161) 0.380 ms 0.358 ms 3 bb15-po51.kgo.synapse.ne.jp (202.208.178.194) 0.185 ms 0.348 ms bb15-po52.kgo.synapse.ne.jp (202.208.178.198) 0.323 ms 4 103.246.232.95 (103.246.232.95) 11.002 ms 10.981 ms 11.835 ms 5 108.170.243.33 (108.170.243.33) 12.072 ms 10.998 ms 108.170.243.65 (108.170.243.65) 12.076 ms 6 142.251.70.23 (142.251.70.23) 12.034 ms 142.251.69.231 (142.251.69.231) 10.101 ms 11.054 ms 7 kix06s11-in-f14.1e100.net (142.250.207.110) 10.999 ms 11.990 ms 11.968 ms $
-n
ホスト名を表示しない。
$ traceroute -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 1 202.208.174.253 1.128 ms 1.151 ms 1.261 ms 2 202.208.178.161 0.162 ms 0.317 ms 202.208.178.169 0.145 ms 3 202.208.178.198 1.264 ms 1.245 ms 1.219 ms 4 103.246.232.95 10.918 ms 10.917 ms 11.855 ms 5 108.170.243.33 11.917 ms 11.895 ms 108.170.243.65 12.085 ms 6 142.251.69.231 10.188 ms 142.251.70.23 11.109 ms 142.251.69.231 10.225 ms 7 142.250.207.110 10.963 ms 11.969 ms 11.935 ms $
2列目に表示されていたホスト名が表示されなくなりました。
-A
AS番号を表示する。
$ traceroute -A -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 1 202.208.174.253 [AS7511] 1.402 ms 1.427 ms 1.459 ms 2 202.208.178.169 [AS7511] 29.981 ms 29.959 ms 202.208.178.161 [AS7511] 0.164 ms 3 202.208.178.198 [AS7511] 0.177 ms 202.208.178.194 [AS7511] 0.346 ms 0.316 ms 4 103.246.232.95 [*] 11.000 ms 10.978 ms 10.990 ms 5 108.170.243.33 [AS15169] 12.127 ms 12.252 ms 11.039 ms 6 142.251.70.23 [AS15169] 12.114 ms 11.110 ms 142.251.69.231 [AS15169] 10.157 ms 7 142.250.207.110 [AS15169] 12.063 ms 10.985 ms 11.972 ms $
IPアドレスの右の [] に AS番号が表示されるようになりました。
興味深いオプションの数々
-f [最初の ttl]
開始する ttl を指定する。
5 から開始する場合。
$ traceroute -f 5 -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 5 108.170.243.65 11.145 ms 108.170.243.33 11.254 ms 108.170.243.65 12.036 ms 6 142.251.70.23 11.062 ms 142.251.69.231 10.125 ms 142.251.70.23 12.051 ms 7 142.250.207.110 10.996 ms 12.001 ms 11.999 ms $
-I
経路の調査に ICMP ECHO を使用する。
※権限不足のエラーになるため、root で実行しています。
# traceroute -I -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 1 202.208.174.253 0.776 ms 0.920 ms 1.032 ms 2 202.208.178.169 0.185 ms 0.198 ms 0.319 ms 3 202.208.178.198 1.109 ms 1.113 ms 1.109 ms 4 103.246.232.95 10.996 ms 11.008 ms 11.047 ms 5 108.170.243.33 11.353 ms 11.355 ms 11.352 ms 6 142.251.69.231 10.121 ms 10.092 ms 10.106 ms 7 142.250.207.110 10.976 ms 10.993 ms 10.978 ms #
-m [最大 ttl]
調査する最大ホップ数を指定する。
10 に指定した場合。
$ traceroute -m 10 -n yahoo.co.jp traceroute to yahoo.co.jp (182.22.28.252), 10 hops max, 60 byte packets 1 202.208.174.253 1.229 ms 1.332 ms 1.435 ms 2 202.208.178.169 45.290 ms 45.263 ms 45.239 ms 3 202.208.178.206 0.319 ms 202.208.178.202 0.300 ms 202.208.178.206 0.249 ms 4 210.171.224.162 19.617 ms 19.595 ms 19.141 ms 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * $
デフォルトでは 30ホップまで調査しますが、10ホップで終わっています。
-q [パケット数]
各ホップに送信するパケット数を指定する。
$ traceroute -q 1 -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 1 202.208.174.253 0.794 ms 2 202.208.178.169 0.157 ms 3 202.208.178.198 0.170 ms 4 103.246.232.95 12.814 ms 5 108.170.243.33 12.258 ms 6 142.251.69.231 10.145 ms 7 142.250.207.110 11.008 ms $
デフォルトでは、1つのホップに 3パケットづつ送信しますので、レスポンス時間が 3列表示されますが、1列しか表示されていません。
-r
ルーティングテーブルを無視して、直接ネットワーク上のホストに送信する。
$ traceroute -r -n dev2.synapse.ne.jp traceroute to dev2.synapse.ne.jp (202.208.174.2), 30 hops max, 60 byte packets 1 202.208.174.2 0.271 ms 0.231 ms 0.169 ms $
同一ネットワーク上に宛先ホストが存在するので応答がありました。
$ traceroute -r -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets connect: Network is unreachable $
同一ネットワーク上に宛先ホストが存在しないのでエラーになりま した。
-T
調査に TCP SYN を使用する。
※権限不足のエラーになるため、root で実行しています。
# traceroute -T -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 52 byte packets 1 202.208.174.253 0.889 ms 0.981 ms 1.104 ms 2 202.208.178.161 0.173 ms 0.344 ms 0.328 ms 3 202.208.178.198 0.173 ms 0.361 ms 202.208.178.194 0.343 ms 4 103.246.232.95 10.979 ms 10.966 ms 11.834 ms 5 108.170.243.33 11.894 ms 108.170.243.65 11.112 ms 108.170.243.33 11.153 ms 6 142.251.69.231 10.204 ms 142.251.70.23 12.064 ms 11.058 ms 7 142.250.207.110 10.026 ms 10.268 ms 12.070 ms #
-p [宛先ポート番号]
宛先のポート番号を指定する。
以下の例は 443/tcp を宛先ポートに指定した場合です。
※-T オプションが権限不足のエラーになるため、root で実行しています。
# traceroute -T -p 443 -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 52 byte packets 1 202.208.174.253 1.069 ms 1.330 ms 1.563 ms 2 202.208.178.161 4.147 ms 4.135 ms 4.117 ms 3 202.208.178.198 0.184 ms 0.361 ms 202.208.178.194 0.350 ms 4 103.246.232.95 11.002 ms 10.987 ms 10.968 ms 5 108.170.243.33 11.261 ms 11.945 ms 11.222 ms 6 142.251.69.231 10.110 ms 142.251.70.23 12.050 ms 142.251.69.231 11.118 ms 7 142.250.207.110 12.063 ms 11.101 ms 11.001 ms #
-w [待ち時間]
応答待ちの時間を指定する。
1秒を指定した場合
$ traceroute -w 1 -n yahoo.co.jp traceroute to yahoo.co.jp (183.79.217.124), 30 hops max, 60 byte packets 1 202.208.174.253 1.037 ms 1.063 ms 1.152 ms 2 202.208.178.169 0.153 ms 0.327 ms 0.302 ms 3 202.208.178.198 26.465 ms 26.442 ms 202.208.178.194 26.393 ms 4 103.246.232.162 11.050 ms 11.030 ms 11.871 ms 5 * * * 6 * * * 7 * * * ~途中省略~ 28 * * * 29 * * * 30 * * * $
「*」で表示される応答待ち時間切れのところが、デフォルトでは 5秒待ちますが、1秒しか待ちませんので、どんどん進みます。
-z [パケット送信待ち時間]
調査用のパケットの送信間隔を指定する。
3 を指定した場合
$ traceroute -z 3 -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 1 202.208.174.253 0.930 ms 0.770 ms 0.785 ms 2 202.208.178.169 0.157 ms 0.150 ms 0.152 ms 3 202.208.178.194 0.170 ms 47.458 ms 202.208.178.198 0.189 ms 4 103.246.232.95 10.882 ms 12.286 ms 13.708 ms 5 108.170.243.65 12.075 ms 108.170.243.33 11.003 ms 108.170.243.65 11.104 ms 6 142.251.69.231 10.112 ms 11.151 ms 10.114 ms 7 142.250.207.110 11.987 ms 11.976 ms 11.991 ms $
調査用のパケットの送信が 3秒間隔になりますので、次の応答時間が表示されるまでに 3秒程度かかるようになります。
--back
順方向と異なるようであれば、逆方向のホップ数を表示する。
$ traceroute --back -n google.com traceroute to google.com (142.250.207.110), 30 hops max, 60 byte packets 1 202.208.174.253 '-2' 1.305 ms 1.336 ms 1.363 ms 2 202.208.178.169 0.158 ms 0.307 ms 0.281 ms 3 202.208.178.198 0.203 ms 0.357 ms 202.208.178.194 0.330 ms 4 103.246.232.95 10.967 ms 10.932 ms 10.953 ms 5 108.170.243.33 '-7' 11.463 ms 108.170.243.65 '-8' 11.114 ms 108.170.243.33 '-7' 11.251 ms 6 142.251.69.231 '-9' 10.159 ms 142.251.70.23 '-9' 11.077 ms 142.251.69.231 '-9' 11.074 ms 7 142.250.207.110 '-10' 11.003 ms 11.963 ms 11.974 ms $
「'」で囲まれた負の値が逆方向のホップ数らしいです。
番外編
traceroute の man に ping コマンドの -R オプションが登場したので試してみました。
ping -R
経路を表示する。
$ ping -n -c 1 -R twitter.com PING twitter.com (104.244.42.129) 56(124) bytes of data. 64 bytes from 104.244.42.129: icmp_seq=1 ttl=58 time=27.0 ms NOP RR: 202.208.174.33 202.208.178.170 202.208.178.205 218.100.6.134 199.16.159.40 199.16.159.39 163.139.22.40 163.139.136.54 163.139.22.44 --- twitter.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 27.001/27.001/27.001/0.000 ms
ping なのに経路が表示されています。
おわりに
traceroute コマンドが、これほどまでに興味深いオプションの数々を取り揃えているとは思ってもみなかったので、夢中で試してしまいました。
また、興味深いコマンドを見つけたら、試してみようと思います。