・名称 …… tcptraceroute
・配布制限 …… フリーウェア
・商用版の有無 …… 無
・類似ツール …… tracetcp
・DL URL …… http://michael.toren.net/code/tcptraceroute/
・対応OS …… Unix系OS
・分野 …… 経路調査
・コマンド一覧
(1) 基本項目と概要
この記事を読まれている方の中では「traceroute」という言葉をご存知の方が殆どだろう。「traceroute」とはホスト間のネットワーク上の経路を調査するコマンドで、ホスト間に存在するルータやフィアウォールなどのネットワーク機器をリストアップすることができる。Windows系OSやLinux系OSにも標準で付属しているコマンドバイナリであり、主にネットワークのトラブルシューティングに用いられる。
(Linux系OSのコマンド名は「traceroute」Windows系OSの場合は「tracert」であるが本稿では「traceroute」と統一する。)
今回は、このOS標準で付属しているものから一歩発展した「tcptraceroute」を紹介する。
(2) コマンドサンプル
本題の「tcptraceroute」の説明に入る前に、前提として「traceroute」の仕組みを簡単ではあるが解説したい。
「traceroute」は、TTL(Time To Live)というパケットの生存時間を利用している。
例えば、TTLに1という値をセットしたパケットを送出し、一つ目のネットワーク機器がそのパケットを受信した段階で1つTTLが減らされ0となり、そのネットワーク機器からは通常(*1)、ICMP Time ExceededというTTLの超過によるパケットの破棄報告のパケットが返される。そして、次にTTLに2という値をセットしたパケットを送出し、二つ目のネットワーク機器の結果を得る。
「traceroute」は目的のホストに辿り着くまで、これを繰り返すことで経路情報をリストアップすることを実現している。
ご存知の方もいるとは思うが、「traceroute」は、Windows系OSとLinux系OSとでデフォルトで用いられる方法が異なっている。
Windowsでは、ICMP Echo Request(Ping)の送出、Linux系OSでは、ハイポートへのUDPパケットの送出で行っている。(Linux系OSでは「-I」オプションを用いることでICMPでの「traceroute」を行うことが可能である。)
それでは、本題に入ろう。
「traceroute」はICMPとUDPのみと思われがちだが、今回紹介するツール名にもあるように「tcptraceroute」を使用することでTCPにおける「traceroute」を行うことも可能である。
インストールには、libnetとlibpcapが事前にインストールされている必要があるが、インストール自体は非常に簡単なので割愛させていただく。
libnet:
http://www.packetfactory.net/libnet
libpcap:
http://www.tcpdump.org/
HELPは以下のようになっている。
・tcptraceroute
tcptraceroute 1.5beta7
Copyright (c) 2001-2006 Michael C. Toren
Updates are available from
http://michael.toren.net/code/tcptraceroute/
Usage: tcptraceroute [-nNFSAE] [-i
[-l
[-m