こんにちは。ccieojisan です。
今回はネットワーク屋さんなら良く使う traceroute について紹介したいと思います。
皆さん、普通に traceroute <宛先> としてデフォルトで実行していませんか?もちろんデフォルトで使ってもまったく問題ありません。
私が最近経路の確認で何回も traceroute をする必要があった際に高速に traceroute を行う方法を模索したため、それを紹介したいと思います。 (traceroute結果が出るまでの待ち時間を短縮したかった)
まずは default のまま、www.yahoo.co.jp へ traceroute した結果です。実行時間を測るため、time コマンドを先頭に入れてます。 ※プロバイダから支給されたルータが traceroute(UDP) をフィルタしているみたいなので、-I オプションを付けて ICMP で実行しています。
virl@virl:~$ time sudo traceroute -I www.yahoo.co.jp traceroute to www.yahoo.co.jp (118.151.235.191), 30 hops max, 60 byte packets 1 XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 0.345 ms 0.199 ms 0.186 ms 2 XXXXXX (XXX.XXX.XXX.XXX) 6.755 ms 6.735 ms 6.841 ms 3 XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 15.653 ms 21.272 ms 22.135 ms 4 blk-212-126-173.eastlink.ca (XXX.XXX.XXX.XXX) 22.438 ms 22.375 ms 22.171 ms 5 ns-hlfx-dr001.ns.eastlink.ca (24.222.79.57) 23.001 ms 22.918 ms 22.798 ms 6 ns-hlfx-br001.ns.eastlink.ca (24.215.101.221) 22.480 ms 14.201 ms 19.373 ms 7 ns-hlfx-br002.ns.eastlink.ca (24.215.102.10) 18.464 ms 14.797 ms 19.513 ms 8 core1.nyc4.he.net (198.32.118.57) 42.887 ms 26.993 ms 32.529 ms 9 100ge11-1.core1.ash1.he.net (184.105.223.165) 44.436 ms 39.393 ms 38.835 ms 10 100ge11-1.core1.lax1.he.net (184.105.80.202) 114.742 ms 114.580 ms 106.539 ms 11 100ge11-1.core1.lax2.he.net (72.52.92.122) 106.271 ms 101.377 ms 101.188 ms 12 softbank221111203001.bbtec.net (221.111.203.1) 215.298 ms 219.079 ms 218.992 ms 13 * * * 14 61.202.251.242 (61.202.251.242) 209.243 ms 202.090 ms 202.701 ms 15 202.93.95.142 (202.93.95.142) 184.046 ms 180.288 ms 185.643 ms 16 202.93.95.198 (202.93.95.198) 187.933 ms 189.960 ms 189.728 ms 17 118.151.224.90 (118.151.224.90) 194.922 ms 189.253 ms 189.439 ms 18 f1.top.vip.bbt.yahoo.co.jp (118.151.235.191) 195.028 ms 193.694 ms 194.790 ms real 0m7.329s user 0m0.004s sys 0m0.032s
特に何もオプションをしなければ、完全な traceroute の出力を得るのに 7秒 もかかってしまいます。
下記のオプションを付けることで高速に実行できます。
- -q1 : クエリを1回のみにする(デフォルトは3回)
- -w1 : タイムアウトを1秒にする
- -n : 名前解決をしない
virl@virl:~$ time sudo traceroute -I -q1 -w1 -n www.yahoo.co.jp traceroute to www.yahoo.co.jp (182.22.40.240), 30 hops max, 60 byte packets 1 XXX.XXX.XXX.XXX 0.121 ms 2 XXX.XXX.XXX.XXX 1.743 ms 3 XXX.XXX.XXX.XXX 11.465 ms 4 173.212.126.XXX 19.975 ms 5 24.222.79.57 21.344 ms 6 24.215.101.221 21.273 ms 7 24.215.102.10 22.192 ms 8 198.32.118.57 40.659 ms 9 184.105.223.165 42.160 ms 10 184.105.80.202 108.039 ms 11 72.52.92.122 118.242 ms 12 221.111.203.1 222.179 ms 13 * 14 61.202.251.242 223.295 ms 15 202.93.95.142 203.048 ms 16 118.151.224.250 205.376 ms 17 182.22.34.94 224.557 ms 18 182.22.40.240 213.383 ms real 0m1.243s user 0m0.008s sys 0m0.008s
おっと、約1秒弱とかなり高速になり、およそ6倍に高速化されました。※宛先や区間によって差異は当然異なります。
経路確認だと、名前解決は欲しいなという場合は -n を外してこんな感じの結果。
virl@virl:~$ time sudo traceroute -I -q1 -w1 www.yahoo.co.jp traceroute to www.yahoo.co.jp (118.151.231.231), 30 hops max, 60 byte packets 1 192.168.163.2 (192.168.163.2) 0.252 ms 2 MG6002 (192.168.1.1) 4.245 ms 3 10.86.0.1 (10.86.0.1) 14.666 ms 4 blk-212-126-173.eastlink.ca (173.212.126.173) 15.704 ms 5 ns-hlfx-dr001.ns.eastlink.ca (24.222.79.57) 15.267 ms 6 ns-hlfx-br001.ns.eastlink.ca (24.215.101.221) 22.687 ms 7 ns-hlfx-br002.ns.eastlink.ca (24.215.102.10) 21.286 ms 8 core1.nyc4.he.net (198.32.118.57) 35.765 ms 9 100ge11-1.core1.ash1.he.net (184.105.223.165) 39.856 ms 10 100ge11-1.core1.lax1.he.net (184.105.80.202) 105.130 ms 11 100ge11-1.core1.lax2.he.net (72.52.92.122) 105.829 ms 12 softbank221111203001.bbtec.net (221.111.203.1) 219.180 ms 13 * 14 61.202.251.242 (61.202.251.242) 212.950 ms 15 202.93.95.142 (202.93.95.142) 194.904 ms 16 202.93.95.198 (202.93.95.198) 197.377 ms 17 118.151.224.90 (118.151.224.90) 196.820 ms 18 f2.top.vip.bbt.yahoo.co.jp (118.151.231.231) 202.357 ms real 0m2.318s user 0m0.003s sys 0m0.025s
名前解決ありだと、ちょっとタルくなり2秒くらい。まぁ7秒よりは大分マシですね。
他のオプションなども man traceroute で調べてみてくださいね。