【入門編】 ICMPベースのtraceroute実装(Windows tracert) – トラブルシューティング&ネットワーク運用監視実践ガイド

なぜ「tracert」は宛先に届くまでの道筋を知っているのか?——郵便配達で読み解くネットワークの旅

現場で障害対応をしていると、「インターネットが重い」「特定のサーバーに繋がらない」という連絡が絶え間なく飛び込んできます。そんな時、駆け出しのエンジニアがまず最初に叩くコマンドが tracert(Windows環境の場合)ですよね。

黒い画面に流れる無機質な数字の羅列。皆さんは、あれが一体「どうやって」宛先までの道筋を突き止めているか、不思議に思ったことはありませんか?

今回は、技術書を読み込んでもピンとこなかった方のために、ネットワークの「郵便配達」という視点から、tracert の知られざる裏側を紐解いていきましょう。

—

1. 宛先までの道のりは「迷路」みたいなもの

ネットワークの世界は、何台ものルーターという「中継地点」を経由してデータが運ばれます。あなたが送った手紙(パケット)が、どのルーターを通って目的地に着くのか。それを可視化するのが tracert の役割です。

しかし、ルーターたちは基本的に「次の宛先」しか知りません。ゴールまでの全体図を知っているルーターなんて、どこにもいないんです。では、どうやって「今、どこを通っているか」を調べるのでしょうか?

TTL(生存時間)という名の「カウントダウンタイマー」

ここで登場するのが、パケットに付いている「TTL(Time To Live)」という小さな数字です。これは、パケットがネットワーク上を彷徨い続けないようにするための「カウントダウンタイマー」のようなもの。

  • ルーターを1つ通過するたびに、この数字が「1」減ります。
  • 数字が「0」になると、そのパケットは「もう寿命ですね、お疲れ様でした」と破棄されます。

tracert は、この「わざと寿命切れを起こさせる」という、ちょっとずる賢いテクニックを使っているんです。

—

2. 郵便配達員に例える「tracert」の仕組み

想像してみてください。あなたは、遠く離れた友達に手紙を送りたい。でも、どのルートを通るか分からない。そこであなたは、こんな配達員を何人も送り出します。

1. 1人目の配達員:カウントを「1」に設定。「最初のルーターに着いた瞬間、寿命が切れるようにしてね」と頼みます。
2. 最初のルーター:手紙を受け取ると、「あ、寿命が0になった。送り主に『ここ(私)で期限切れですよ』って返事してあげなきゃ」と、あなたに通知を送り返します。
3. 2人目の配達員:カウントを「2」に設定。「2つ目のルーターで寿命が切れるようにしてね」。
4. 2つ目のルーター:同様に、「ここで期限切れです!」とあなたに報告。

こうして、1個目、2個目、3個目……と、わざと途中で「ごめんなさい、寿命切れです」という返事をもらうことで、「あ、今1個目のルーターを通ったな」「次は2個目だな」と、道のりを特定していくのです。これが tracert の正体です。

—

3. Windowsの「tracert」とLinuxの「traceroute」の決定的な違い

実は、Windowsの tracert と、Linuxなどで使われる traceroute は、使っている「手紙の種類」が違います。

  • Windows (tracert): ICMP Echo Request(「届いてますか?」という確認の手紙)を使います。
  • Linux (traceroute): 基本的に UDP や TCP のパケットを使います。

なぜこれが重要かというと、「ファイアウォールのガード」に関係してくるからです。

多くの企業やサーバーでは、セキュリティのために「余計な通信は遮断せよ」というルールがあります。ICMP(pingの仲間)は、セキュリティ上の理由で途中のルーターが返事を返さないように設定されていることがよくあります。そのため、tracert を打っても途中で * * * と表示され、星印ばかりが並ぶ現象が起きるのです。

—

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

まずは、お使いのWindowsのコマンドプロンプト(またはPowerShell)を開いて、以下のコマンドを打ってみてください。

:: GoogleのDNSサーバーへの道のりを追跡する
tracert 8.8.8.8

:: オプションをつけて、ホスト名の名前解決をスキップして高速化する(-d)
tracert -d 8.8.8.8

もし、特定の地点で * * * が続く場合は、「そこにあるルーターが、セキュリティ設定で返事を返すのを拒否しているんだな」と判断します。これはネットワークが故障しているわけではなく、単に「沈黙している」だけかもしれません。

よく使うオプション

  • -h 30:最大ホップ数(経由するルーターの数)を30個までに制限します。
  • -w 1000:タイムアウトまでの待ち時間を1000ミリ秒(1秒)に設定します。

—

最後に:ネットワークは「対話」である

障害対応をしていると、パケットをただのデータとして見てしまいがちですが、実際には一つひとつのパケットが「届いた?」「あ、ここだよ!」と会話を交わしています。

tracert が星印ばかりを返してくる時、それは「道が閉ざされている」のではなく、「誰かが静かに見守っている(フィルタリングしている)」というサインかもしれません。

まずは tracert を使って、パケットがどんな「旅」をしているのかを想像してみてください。その視点を持つだけで、あなたのトラブルシューティングの腕前は、今日から確実に一段階レベルアップするはずです。

それでは、次回の現場でお会いしましょう!

コメント

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