「あれ、パケットが帰ってこない?」――tracerouteで紐解く、ネットワークの迷宮と非対称ルーティングの正体
こんにちは。NOC(ネットワークオペレーションセンター)で日々、パケットの溜息と格闘しているシニアエンジニアです。
皆さんは、「tracerouteを打ったけれど、なんだか結果が腑に落ちない」という経験はありませんか? 「途中で星印(* * *)が並ぶし、そもそも行きの道筋と帰りの道筋が違うなんて、そんなのズルいじゃないか!」と画面の前で叫びたくなる気持ち、よくわかります。
今回は、ネットワークの「非対称ルーティング」という、一見すると厄介な現象を、現場の視点から紐解いていきましょう。難しい理論は一旦横に置いて、まずは「郵便配達」の話から始めますね。
—
ネットワークは「往復書簡」の世界
ネットワークの通信は、手紙のやり取りに似ています。あなたが誰かに手紙を出すとき、往路(行きの道)と復路(帰りの道)を完璧に同じルートに指定して投函することなんて、まずありませんよね。
インターネットの世界も同じです。
- 往路: あなたのPCから目的地へ向かう道
- 復路: 目的地からあなたのPCへ帰ってくる道
この2つが、必ずしも同じ経路を通るとは限らない。これを「非対称ルーティング」と呼びます。現場では「非対称」という言葉だけで身構えてしまうかもしれませんが、実はこれ、インターネットという巨大な郵便システムではごく自然なことなんです。
tracerouteで「どこで消えたか」を追う
さて、ここで登場するのが traceroute(Windowsなら tracert)です。このコマンドは、いわば「荷物にGPSを仕込んで、各中継地点で挨拶をさせながら目的地まで送る」ツールです。
なぜ「星印(*)」が出るのか?
tracerouteを実行したとき、たまに * * * と表示されて止まってしまうことがありますよね。「ここが障害地点だ!」と焦る前に、一呼吸おきましょう。
- 単に「無視されただけ」かもしれません: 中継地点のルーターは、セキュリティ上の理由や処理負荷を減らすために、tracerouteの調査用パケットをあえて無視する(回答しない)設定になっていることが多いのです。
- 復路の迷子: これが今日の本題です。往路は無事に届いても、ルーターからの「届いたよ!」という返事が、復路で別の道を通ってしまい、あなたのもとに届かない。その結果、「あ、返事がないな」とtracerouteが判断して星印を表示するのです。
—
現場で役立つ「非対称ルーティング」検知のテクニック
非対称ルーティングが疑われるとき、私たちはどのように切り分けるのでしょうか。ここからは、CLIを使った具体的なアプローチを紹介します。
1. 経路を「AS番号」で確認する
インターネットは「AS(自律システム)」という大きな組織のネットワーク同士が繋がってできています。経路確認には traceroute に -A オプション(または -a)を付けて実行してみましょう。
# -Aオプションで、各ホップのAS番号を表示させる
traceroute -A 8.8.8.8
もし、往路で通るASの並び順が、本来の設計や期待しているものと明らかに違う場合、そこには「経路制御(BGP)」の不整合が隠れている可能性があります。
2. 往復の時間を計測する
非対称ルーティングが起きていると、片道が極端に遠回りしているため、RTT(往復にかかる時間)が不自然に増大することがあります。
# pingでパケットの応答時間を継続的に監視する
# もし特定のホップだけで遅延が跳ね上がるなら、そこがボトルネックです
ping -c 10 8.8.8.8
3. 「どこで分かれたか」を特定する(MTRの活用)
単発の traceroute よりも、現場で愛用されているのが mtr(My Traceroute)です。これは ping と traceroute を掛け合わせたようなツールで、リアルタイムで各ホップの状況を更新してくれます。
# インストール済みなら是非使ってみてください
mtr -rw 8.8.8.8
mtr でパケットロス(Loss%)が発生している箇所を特定し、それが「往路の途中でロスしているのか」「復路の不整合で戻ってきていないのか」を判断する材料にします。
—
初学者の皆さんへのアドバイス
ネットワークトラブルシューティングの現場では、「ツールが言っていることを鵜呑みにしない」のが鉄則です。
traceroute はあくまで「往路の記録」をベースにしたスナップショットに過ぎません。もし、どうしても通信が成立しない、あるいは特定の経路でパケットが消える場合は、以下のように考えてみてください。
1. 「行きの切符」は正しいか?(ルーティングテーブルの確認)
2. 「帰りの切符」は用意されているか?(戻り経路の確認)
3. 途中の検問所で没収されていないか?(ファイアウォールのポリシー確認)
最初は難しく感じるかもしれませんが、パケットの流れを「郵便配達」や「迷路」のようにイメージできるようになれば、ネットワークはもっと面白くなります。
今日の結果が * * * だったとしても、それはネットワークがあなたに「別の視点から見てごらん」とヒントをくれている証拠です。焦らず、一歩ずつコマンドを叩いてみてくださいね。
また現場でお会いしましょう。皆さんの通信が快適であることを願っています!
コメント