【入門編】 UDPベースのtraceroute実装とエフェメラルポートの利用 – トラブルシューティング&ネットワーク運用監視実践ガイド

ネットワークの「迷子」を探し出せ!tracerouteとUDPが織りなす追跡劇

こんにちは。データセンターの片隅で、深夜のアラート音を子守唄に育ったNOCエンジニアです。

皆さんは、Webサイトに繋がらないとき、あるいは通信がやけに重いとき、まず何をしますか? そう、pingですよね。でも、pingはあくまで「相手が生きているか、どれくらい遠いか」を教えてくれるだけの名探偵。もしその道中で「どこか特定のルーターがサボっている」としたら、pingだけでは犯人を見つけることができません。

そこで登場するのが traceroute です。今回は、このツールが裏側で一体どんな「泥臭い」仕事をしているのか、郵便配達に例えて紐解いていきましょう。

—

郵便配達で例えるtracerouteの仕組み

あなたが遠くの友人に手紙を送るとします。でも、その手紙がどのルートを通っているのか、どこで止まっているのか分かりませんよね。

tracerouteの仕組みは、まさに「配達中の手紙に『3回角を曲がったら燃やしてね』というメモを添える」ようなものです。

1. TTL(生存時間)という名の「爆発タイマー」
ネットワークの世界には TTL(Time To Live)という仕組みがあります。パケットがルーターを通過するたびに、この数値が「1」ずつ減っていきます。もし 0 になったら、ルーターはそのパケットを「これ以上運べない!」と判断して破棄し、送信元に「ごめん、ここで燃やしちゃったよ」というエラー通知を返します。

2. 階段を登るように調査する
traceroute は、まず TTL=1 でパケットを送ります。すると、最初のルーターが「寿命が尽きたよ」と返してくる。次に TTL=2 で送ると、2番目のルーターが「寿命が尽きた」と返してくる。こうして、1つずつルーターの住所を特定していくわけです。

—

なぜ「UDP」と「エフェメラルポート」を使うのか?

ここからが本題。なぜ traceroute は(Windowsの tracert とは少し違い)UNIX系OSで UDP というプロトコルを好んで使うのでしょうか?

宛先ポート「33434」の謎

traceroute は、宛先のIPアドレスに対して、普段使われないような非常に大きな番号のポート(デフォルトでは 33434 から開始)を狙い撃ちにします。

  • 理由1:相手を驚かせるため

通常、Webサーバーは 80 や 443 番といった「お店の入口」を開けていますが、33434 なんて中途半端な番号には誰も待ち構えていません。すると、最終目的地にたどり着いたとき、サーバーは「そんなポート開いてないよ!」というICMPエラーを返してくれます。これが traceroute にとっての「ゴール到達の合図」になります。

  • 理由2:エフェメラルポート(一時的な待合室)

33434 以降の数字は「エフェメラルポート」と呼ばれ、通信ごとに使い捨てられる一時的なポートです。この番号を少しずつずらしていくことで、前の通信と混ざることなく、正確に「何往復目の調査結果か」を管理しているんですね。

—

実践!コマンドを叩いてみよう

まずは、ターミナルで traceroute を試してみましょう。

# google.com までの経路を追跡する(UNIX系OS)
traceroute google.com

# もし「* * *」と表示されたら?
# それはルーターがセキュリティのために応答を拒否しているか、
# 混雑でパケットが落ちている可能性が高いです。

もし、特定のポートを指定して調査したい場合は以下のようにコマンドを打ちます。

# 宛先ポートを 80 (HTTP) に指定してUDPパケットを投げる
# 経路上のファイアウォールが特定のポートを通すか確認する際によく使います
traceroute -p 80 google.com

—

NOCエンジニアからのアドバイス

現場でトラブルシューティングをする際、traceroute の結果を鵜呑みにしてはいけません。

  • * * * が出ても諦めない: 最近はルーターが応答を制限していることが多く、ゴールまで到達しても途中で星印(*)が出ることは珍しくありません。
  • 経路は一方通行ではない: 往路と復路は必ずしも同じ道を通るとは限りません。インターネットの非対称性を常に頭の片隅に置いておいてくださいね。

ネットワークのトラブルは、まるで迷路の中にいるような不安を感じるかもしれません。しかし、traceroute は「自分がどこまで進めて、どこで止まっているのか」を明確にしてくれる頼もしい相棒です。

まずは自分のPCから、よく使うサーバーまでの経路を覗いてみることから始めてみましょう。そこには、パケットが秒速で世界を駆け巡る、壮大な旅路が待っていますよ!

次回は、netstat や ss を使った「PC内部の渋滞チェック」について深掘りしていきましょう。それでは、また現場でお会いしましょう!

コメント

タイトルとURLをコピーしました