2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

traceroute を ping でエミュレートする

Last updated at Posted at 2016-03-31

はじめに

  • traceroute コマンドに関する小ネタです
  • ルーティング経路の調査には traceroute コマンドがよく使用されますが、これを ping コマンドで代替してみます
  • ネットワーク調査ツールの理解に役立つのではないかと思います

traceroute コマンドの基本的な仕組み

  • traceroute コマンドは、まずターゲットのアドレスに対して TTL=1 の UDP パケットを送信します
  • もし TTL exceeded が返ってきたら TTL を +1 してパケットを再送します
  • ターゲットアドレスに到達するまで TTL をインクリメントしながらパケットの送信を繰り返します
  • TTL exceeded が返ってくるごとに到達地点の IP アドレスを記録することでターゲットアドレスへの経路を調べることが出来ます

ping コマンドでエミュレート

  • traceroute コマンドの挙動を ping コマンドでエミュレートするとこんな感じになります
$ TARGET=www.example.com; MAX=64; for i in $(seq 1 ${MAX}); do echo -n " ${i}  "; ping -t ${i} -c 1 ${TARGET} | grep exceeded | awk '{print $2}'; done
  • Linux の iputils に含まれている ping コマンドを使用しました
  • TTL は -t オプションで指定できます
  • 最大 HOP 数は 64 にしました
  • UDP の代わりに ICMP のパケットを送信しています
  • エラー処理はしていません

参考

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?