ネットワークの「迷子」を救え!tracerouteのTTL制御を、郵便配達で理解しよう
こんにちは!NOCで深夜の障害対応に追われながら、パケットの美しさに魅せられ続けているシニアエンジニアです。
ネットワークエンジニアの「三種の神器」といえば、ping、traceroute、そしてdig(またはnslookup)ですよね。特にtracerouteは、通信がどこで止まっているのか、どのルートを通って目的地へ向かっているのかを教えてくれる、まさに「ネットワークの探偵」のような存在です。
今回は、このtracerouteがどんな魔法を使って経路を特定しているのか、その心臓部である「TTL(Time to Live)」の仕組みを、小難しい技術書を脇に置いて、皆さんと一緒に紐解いていきましょう。
—
郵便配達で例える「TTL」の正体
tracerouteの仕組みを理解するには、IPヘッダーにあるTTLという値を理解する必要があります。IT用語で「Time to Live(生存時間)」なんて聞くと難しく感じますが、実はこれ、「郵便物の有効期限」だと考えてみてください。
例えば、あなたが手紙を送るとします。しかし、もし宛先が間違っていたら、その手紙は宛先不明で永遠に世界中を漂ってしまうかもしれません。そんな「ゾンビ郵便」を避けるために、手紙には「最大10回までしか転送してはいけない」というスタンプが押されていると想像してください。
1. ルーターに到着するたびに、スタンプの数字が「10→9→8…」と減っていきます。
2. 数字が「0」になったら、ルーターは「もうこれ以上は運べない!」と判断し、手紙をゴミ箱に捨てるのではなく、差出人であるあなたに「期限切れですよ!」とお手紙を返してくれるのです。
これがTTLの基本的なルールです。
—
tracerouteが使っている「意地悪な」テクニック
tracerouteは、この「期限切れ」という仕組みを逆手に取って、経路を突き止めます。
1. TTL=1で送る: まずは「1回だけ転送OK」なパケットを送ります。最初のルーターでTTLが0になり、ルーターはあなたに「期限切れだよ(ICMP Time Exceeded)」と返してきます。これで「1つ目のルーター」が判明します。
2. TTL=2で送る: 次は「2回だけ転送OK」にします。最初のルーターでTTL=1になり、次のルーターで0になります。すると2番目のルーターが「期限切れだよ」と返してきます。これで2つ目が判明します。
3. これを目的地に届くまで繰り返す!
こうして、各ルーターから送られてくる「期限切れ通知」を拾い集めることで、「あ、1番目はAルーター、2番目はBルーター…」と地図を描き上げているわけです。非常に泥臭いですが、確実な手法ですよね。
—
実践!コマンドで見てみよう
実際にLinux環境などで traceroute を実行すると、裏側ではこのようなやり取りが行われています。
# 8.8.8.8(Google DNS)への経路を確認
# -nオプションを付けると、名前解決をせずにIPアドレスのみ表示するので高速です
traceroute -n 8.8.8.8
# 出力結果のイメージ:
# 1 192.168.1.1 0.5ms 0.4ms 0.3ms <- TTL=1で最初のルーターが反応
# 2 10.0.0.1 1.2ms 1.1ms 1.0ms <- TTL=2で次のルーターが反応
もし、特定のルーターで * * * と表示されたら、それはそのルーターがセキュリティのために「期限切れ通知を返さない設定」になっているか、単にパケットがドロップされている可能性が高いです。現場ではよくある「あるある」ですね。
Windowsの場合は tracert です
Windowsを使っている方はコマンドプロンプトで tracert と打ち込んでみてください。基本的な原理は同じですが、WindowsはデフォルトでICMP(Pingの仲間)ではなく、UDPやICMP Echoを使ってパケットを投げることが多いです。
:: Windowsで実行する場合
tracert 8.8.8.8
—
エンジニアとしての一歩先へ
現場でトラブルシューティングをする際、このtracerouteの仕組みを知っていると、ただ画面を眺めるだけでなく、「今、パケットはどの辺りで拒絶されているのか?」「ファイアウォールが特定のプロトコルを遮断しているのではないか?」といった仮説を立てられるようになります。
例えば、tracerouteが途中で止まってしまう場合、単に経路が切れているだけでなく、「その先のルーターがICMP応答を意図的に捨てている」という可能性を常に疑う必要があります。
技術は、魔法のように見えて、実はこうした非常に論理的で地道なルールの積み重ねでできています。皆さんも、ネットワークの向こう側にあるルーターたちが、今日もパケットを必死にバケツリレーしている様子を想像してみてください。
この記事が、皆さんのネットワーク学習の一助になれば幸いです。また現場でお会いしましょう!
コメント