目 次
目 次/関連項目

2.4 ICMPを利用したツール

 本節ではICMPを利用したツール(ソフトウェア)について説明する。これらのツールはネットワーク機能を有するOS(例えばLinux)に最初からインストールされている。本節で紹介するツールはLinuxを使用することを前提としている。他のOSでもこれらと同じ機能のツールはあるが、コマンド名が違うのなどの若干の違いがある。


2.4.1 ping

 ブラウザであるサイトを閲覧しようとしたときに、サーバに繋がらないといったトラブルが起きるときがある。こうしたトラブルは誰もが経験したことがあると思う。このように宛先ホストに繋がらないといったトラブルが発生したときに最初に利用すべきコマンドがpingである。pingはホストやルータが正常に動作しているかを確認するときに使用する。pingは自ホストから宛先ホスト(ルータ)へ試験用のパケットを送り、パケットが届けば応答が返される。応答が正常に返されれば「通信経路上に問題はない」ということになる。pingはICMPのエコー要求メッセージ/エコー応答メッセージを使用する。

2.4.1.1 pingの仕組み

  • pingの実行手順
    1. ICMPのエコー要求メッセージを宛先ホストへ配送する。
    2. 目的ホストはパケットの内容からICMPのエコー要求と判断する。
    3. ICMPのタイプを0(エコー応答)にセットしてパケットを返す。識別子、シーケンス番号、データはそのままである。
    4. 送信元がパケットを受け取る。パケットの内容からエコー要求に対する返答だという事が分かる。
 pingの仕組みを図2.4.1に示す。

図2.4.1:pingの仕組み

2.4.1.2 pingの実行例

 図2.4.2はpingコマンドを実行した時の結果である。相手のホストが正常に動作している場合、図のようなメッセージが表示される。一番下にパケットの送信に成功した数と失敗した数、往復時間などが表示される。しかし、正常にpingの応答があったときでも、往復時間がEthernetで30ミリ秒以上かかる場合は、回線に何らかの障害が発生している可能性がある。

[root@host /root]# ping www.foocrane.jp
PING www.foocrane.jp (10.10.10.10) from 192.168.0.121 : 56(84) bytes of data.
Warning: time of day goes back, taking countermeasures.
64 bytes from www.foocrane.jp: icmp_seq=0 ttl=254 time=22.070 msec
64 bytes from www.foocrane.jp: icmp_seq=1 ttl=254 time=614 usec
64 bytes from www.foocrane.jp: icmp_seq=2 ttl=254 time=639 usec
64 bytes from www.foocrane.jp: icmp_seq=3 ttl=254 time=616 usec

--- www.foocrane.jp ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/mdev = 0.614/5.984/22.070/9.287 ms

図2.4.2:pingの実行例

 回線に障害がある場合、図2.4.3のようにpingの応答が表示されない。

[root@host /root]# ping www.foocrane.jp
PING www.foocrane.jp (10.10.10.10) from 192.168.0.121 : 56(84) bytes of data.

--- www.foocrane.jp ping statistics ---
12 packets transmitted, 0 packets received, 100% packet loss

図2.4.3:pingの応答がないときの例


2.4.2 traceroute

 pingコマンドで応答が返らない場合に、通信経路上のどこまでが正常なのか、どこが異常なのかを探るときに利用するのがtracerouteである。tracerouteは宛先ホスト(ルータ)に到達するまでに経由したルータのIPアドレスや時間を把握することができる。つまり、どこまでは正常に通信ができて、どこからが異常なのかを知ることができ、障害が発生しているポイントを特定することができる。taracerouteはICMPのエコー要求メッセージ/エコー応答メッセージ、時間超過メッセージを利用する。

2.4.2.1 tracerouteの仕組み

  • tracerouteの実行手順
    1. 送信元がICMPエコー要求メッセージを宛先ホストへ送信する。このときIPパケットのTTLフィールドを1にセットする。
    2. ルータは受信したIPパケットのTTLから1引くように設計されているのでパケットがルータに到達したときにTTLは0になる。
    3. TTLが0になるとルータはそのパケットを破棄したことを送信元ホストにICMP時間超過メッセージで通知する。
    4. このメッセージ(正確にはIPパケット)の送信元IPアドレスフィールドにはルータのIPアドレスが記述されているため、送信元ホストは通信経路上にあるルータとそのIPアドレスを知ることができる。
    5. 送信元ホストは再びエコー要求メッセージを送信する。その際、TTLフィールドの値を1増やして2にする。
    6. すると今度は2番目のルータからICMP時間超過メッセージが送信されることが分かる。
    7. 以下、宛先ホストにパケットが到達するまで繰り返し、目的のサーバからエコー応答メッセージ返されることによりこの処理は終了する。
 tracerouteの仕組みを図2.4.4に示す。

図2.4.4:tracerouteの仕組み

2.4.2.2 tracerouteの実行例

 図2.4.5はtracerouteコマンドを実行した時の結果である。相手のホストに到達するまでに経由したルータとそのルータに到達するまでの時間が表示される。

[root@host /root]# traceroute www.foocrane.jp
traceroute to www.foocrane.jp (10.10.10.10), 30 hops max, 38 byte packets
1 192.168.0.1 (192.168.0.1) 0.567 ms 0.464 ms 0.438 ms
2 192.168.1.1 (192.168.1.1) 9.404 ms 8.579 ms 8.997 ms
3 192.168.2.1 (192.168.2.1) 16.169 ms 12.059 ms 13.317 ms
4 192.168.3.1 (192.168.3.1) 183.719 ms 13.536 ms 25.227 ms
5 192.168.4.1 (192.168.4.1) 69.758 ms 24.928 ms 15.097 ms
6 www.foocrane.jp (10.10.10.10) 22.555 ms 15.405 ms 15.930 ms
図2.4.5:tracerouteの実行例

 回線に異常がある場合は図2.4.6のように表示される。この例では2番目のルータから3番目のルータまでの回線に何らかの障害があることが予測できる。

[root@host /root]# traceroute www.foocrane.jp
traceroute to www.foocrane.jp (10.10.10.10), 30 hops max, 38 byte packets
1 192.168.0.1 (192.168.0.1) 0.567 ms 0.464 ms 0.438 ms
2 192.168.1.1 (192.168.1.1) 9.404 ms 8.579 ms 8.997 ms
3 * * *
4 * * *
5 * * *
6 * * *
図2.4.6:tracerouteによる応答がないときの例