[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

traceroute6【コマンド】

pointこの用語のポイント

pointUNIX系で使えるコマンドだよ

point通信経路を調査するよ

pointIPv6用だよ

point多分「traceroute -6」と同じだよ

スポンサーリンク

簡単に書くよ

traceroute6【コマンド】とは

どんな経路を通って通信相手のところまで行くか確認するときに使うコマンド(IPv6版)
です。

image piyo

詳しく書くよ

私はCentOS上でコマンドの動作確認をしているのですけどね。
私の環境では「traceroute」コマンドに「-6」オプションを指定した

traceroute -6 [対象のIPv6アドレス]



traceroute6 [対象のIPv6アドレス]

は同じ動きをします。

ということで「traceroute」の使い方をご存じの方は「traceroute6」の説明を見る必要は無いと思います。
違いは、対象の指定をIPv4で行うか、IPv6で行うか、くらいのはずです。
あっ、でもUbuntuの場合は違うのかな。使ってないから分からないや。ごめんなさい。

ちなみに、IPv4とは、普通に使っている「192.168.1.1」みたいな形式のIPアドレスのことです。
IPv6は、これから使うことになりそうな「8fe0::8f61:ac8:30cd:a16e」みたいな形式の長ったらしいIPアドレスのことです。
昔はIPv4(「192.168.1.1」形式)しかなかったのですが、数が足りなくなりそうだったのでIPv6(「8fe0::8f61:ac8:30cd:a16e」形式)が生まれました。
今は過渡期なので両方とも使われている……けど、まだまだIPv4(「192.168.1.1」形式)が主流です。

せっかくなので、一応「traceroute6」コマンドの説明を書いておきますね。
これ以降は「traceroute」の説明と、ほとんど同じです。
既に「traceroute」の説明をご覧になった方は、読んでも意味は無いと思います。

それでは「traceroute6」の説明です。

「traceroute6」コマンドは、コマンドライン上から通信相手までの通信経路(どんな道を通って相手のところまで辿り着くか)を調査するときに使うコマンドです。
例えば「あなたのコンピュータから出たデータルータAを通ってルータBを通って相手のコンピュータに到着しましたよ~」といった情報を得ることができます。

「traceroute6」コマンドはUNIX系(LinuxとかMacとか)で使えます。

書き方は

traceroute6 [オプション] [対象のIPv6アドレス]

です。
IPアドレスの指定をIPv6で行うのがポイントですね。

オプションは、あれやこれやとたくさんあります。

オプション説明
-4IPv4を使う
-6IPv6を使う
-IICMPパケットを使って調査する
-TTCPパケットを使って調査する
-UUDPパケットを使って調査する
-dデバッグ・モードで動く
-Fフラグメントするな!フラグをセットする?
Set the "Don’t Fragment" bit. This tells intermediate routers not
to fragment the packet when they find it’s too big for a network hop’s MTU.
-f最初に送るTTLの値を指定する
-g【ゲートウェイ】経由したいゲートウェイを指定する?
Tells traceroute6 to add an IP source routing option to the outgoing packet that tells the network to route the packet through the specified gateway. Not very useful, because most routers have disabled source routing for security reasons.
-i【インターフェイス】使用するインターフェイス(ネットワークカード名)を指定する
-m【最大TTL】TTLの最大値を指定する
-NSpecifies the number of probe packets sent out simultaneously. Sending several probes concurrently can speed up traceroute6 considerably. The default value is 15. Note that some routers and hosts can use ICMP rate throttling. In such a situation specifying too large number can lead to loss of some responses.
-n結果をIPアドレスで表示する
-p【ポート】パケットを送り付けるポートを指定する
-t【TOS】パケットのTOSを指定する
For IPv4, set the Type of Service (TOS) and Precedence value. Useful values are 16 (low delay) and 8 (high throughput). Note that in order to use some TOS precendence values, you have to be super user. For IPv6, set the Traffic Control value.
-l【ラベル】Use specified flow_label for IPv6 packets
-w【秒】タイムアウトと判断する時間を指定する
-q【回数】一つの経由地に対する試行回数を指定する
-rルーティングテーブルを気にしないで、指定したところに直接送り付ける
-s【ソースアドレス】Chooses an alternative source address. Note that you must select the address of one of the interfaces. By default, the address of the outgoing interface is used.
-zMinimal time interval between probes (default 0). If the value is more than 10, then it specifies a number in milliseconds, else it is a number of seconds (float point values allowed too). Useful when some routers use rate-limit for icmp messages.
-APerform AS path lookups in routing registries and print results directly after the corresponding addresses
-Vバージョン情報を表示する

などです。
オプションが多くて、げんなりしそうですね。

ですが、心配はいりません。

オプションを何も指定しないで

traceroute6 8fe0::8f61:ac8:30cd:a16e

のように指定すれば、ほぼ事足ります。
オプションは、調査条件を変えるものがほとんどなので、必要になってから必要な分だけ覚えれば良いと思います。

ちなみに、オプションの説明で「TTL」という用語がちょいちょい出てきましたね。
この「TTL」という用語ついて補足しておきます。
TTLが分かると「traceroute6」コマンドの動きもイメージしやすいので、頑張って理解してください。

結論から書くと、TTLは

1.数字である
2.機器を一つ経由する毎に数字を1減らす
3.数字が「0」になったら、その時点で中継を止める


の特徴がある、パケット(通信用に細切れにしたデータ)にくっつく情報です。
このTTLがあることによって、パケットさんがネットワークの世界で永遠に放浪する事態が、回避されています。

例えば、何かの間違いで輪っか構造になっているネットワークがあったとしましょう。
ルータAは「ルータBに行けよ」と指示を出すし、ルータBは「ルータAに行けよ」と指示を出す状態です。
この指示に従うと、パケットさんは永遠にルータAとルータBの間をぐるぐる行き来し続けることになります。

traceroute6

この状況はマズイですよね?
流れ込むパケットは増えていくのに、出て行くパケットは無いので、いずれパンクしてしまいます。

これを回避するためにあるのがTTLです。

仮に最初、TTLの値が4だったとしましょう。
ルータAに到着した時点で、TTLの値を一つ減らして3にします。

traceroute62

ルータAには「ルータBに行けよ」と言われました。
パケットさんはルータBに行きます。
そして、ルータBに到着した時点で、TTLの値を一つ減らして2にします。

traceroute63

ルータBには「ルータAに行けよ」と言われました。
おっと、何かの設定ミスで「ぐるぐる同じところを回っちゃうよ構造」になっているようです。
それでもパケットさんは、指示に従いルータAに行きます。
そして、ルータAに到着した時点で、TTLの値を一つ減らして1にします。

traceroute64

案の定、ルータAには「ルータBに行けよ」と言われました。
パケットさんは涙目になりながらルータBに行きます。
そして、ルータBに到着した時点で、TTLの値を一つ減らして0にします。

traceroute65

TTLの値が0になった時点で、パケットさんの旅は終わりです。
力尽きて倒れてしまいます。
力尽きたパケットさんを看取ったルータBさんは、パケットさんを送り出してきたコンピュータに対して「俺はルータBって、ケチな者だけどよー。あんたのところから来たパケットさん、今、力尽きたぜ」と報告のお手紙を出します。

これがTTLです。
繰り返しになりますが

1.数字である
2.機器を一つ経由する毎に数字を1減らす
3.数字が「0」になったら、その時点で中継を止める


情報です。
パケットがネットワーク上で永遠に放浪する事態になることを避けるために使われます。

よく分からない人は、パケットさんの体力ゲージだと思えば良いでしょう。
機器を経由する度に1ずつ減っていって、最終的に0になると力尽きます。
数字が大きい方が長生きできるあたりが、人間様の寿命みたいですね。
そのせいか、TTLを設定することを指して「パケットの寿命を設定する」と表現する人もいます。

さて、これでTTLが何かは、何となく分かったでしょうか。
それでは、TTLを踏まえて「traceroute6」コマンドについて、もう少し突っ込んで見ていきます。

例えば、ピヨ太君のパソコンからピヨ子さんのパソコンに行くまでに、ルータA、ルータBの2つのルータを経由していたとしましょう。
「ピヨ太→ルータA→ルータB→ピヨ子」なネットワーク構成です。

traceroute66

ここでピヨ太君は、ピヨ子さんのパソコンを指定して「traceroute6」コマンドを実行しました。
そうすると、ピヨ太君のパソコンからは、TTLが「1」に設定されたパケットさんが出発します。

traceroute67

TTLが「1」に設定されたパケットさんは、ルータAに到着した時点でTTLが「0」になり、力尽きます。

traceroute68

そうすると、ルータAからピヨ太君のパソコンに対して「俺はルータAって、ケチな者だけどよー。あんたのところから来たパケットさん、今、力尽きたぜ」と報告のお手紙が出されます。
お手紙を見たピヨ太君は「ふむふむ、最初の到達地点は『ルータA』ね」と頷きました。

traceroute69

次に、ピヨ太君のパソコンからは、TTLが「2」に設定されたパケットさんが出発します。

traceroute610

TTLが「2」に設定されたパケットさんは、ルータAに到着した時点でTTLが「1」になります。

traceroute611

まだ力尽きていませんね。
そこで、ルータAの案内に従い、ルータBの元に向かいます。

traceroute612

ルータBに到着したパケットさんは「1」だったTTLが「0」になり、力尽きます。

traceroute613

そうすると、ルータBからピヨ太君のパソコンに対して「俺はルータBって、ケチな者だけどよー。あんたのところから来たパケットさん、今、力尽きたぜ」と報告のお手紙が出されます。
お手紙を見たピヨ太君は「ふむふむ、ルータAの次の到達地点は『ルータB』ね」と頷きました。

traceroute614

次に、ピヨ太君のパソコンからは、TTLが「3」に設定されたパケットさんが出発します。

traceroute615

TTLが「3」に設定されたパケットさんは、ルータAに到着した時点でTTLが「2」になります。

traceroute616

まだ力尽きていませんね。
そこで、ルータAの案内に従い、ルータBの元に向かいます。

traceroute617

ルータBに到着したパケットさんは「2」だったTTLが「1」になります。

traceroute618

まだ力尽きていませんね。
そこで、ルータBの案内に従い、ピヨ子さんのパソコンの元に向かいます。

traceroute619

長旅を終えたパケットさんは、ついにピヨ子さんの元に着きました。

traceroute620

最後に、ピヨ子さんからピヨ太君に「パケットさんが届いたわよ」とお返事が出されます。

traceroute621

ここまでの情報をまとめたピヨ太君は「ふむふむ、まずはルータAに着いて、ルータAの次の到達地点はルータBで、その次がピヨ子さんのパソコンね」と頷きました。
ピヨ太君のパソコンからピヨ子さんのパソコンまでの経路が明らかになりましたね。

これが「traceroute6」コマンドのやっていることです。

TTLが1のパケットを送る→到着先を控える
TTLが2のパケットを送る→到着先を控える
TTLが3のパケットを送る→到着先を控える
   ・
   ・
   ・
TTLがXのパケットを送る→目的地に到着


というように、TTLを1つ増やしたパケットを順番に送り出し、到着先の情報を履歴として控えることによって、目的地までの経路を割り出します。

仕組みまで理解しなくてもコマンド自体は使えますけどね。
覚えておくと、ちょっと自慢げな気分になれると思います。

image piyo2

一言でまとめるよ

まぁ「traceroute6」ってコマンドが出てきたら「IPv6で通信経路を調査するときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク