なぜ「届かない」のか?ICMP到達不能メッセージでネットワークの迷宮を読み解こう
ネットワークエンジニアとして現場に立っていると、必ずと言っていいほど直面する壁があります。それが「通信が通らない」という事態です。
「pingは通るのに、なぜかWebサイトが見られない」「SSHでログインしようとすると拒否される」。そんな時、ネットワークの深淵から届く、エンジニアへのささやかなヒント……それが今回解説するICMP Destination Unreachable(到達不能メッセージ)です。
今日は、パケットがネットワークという広大な海を渡る際、なぜ途中で挫折してしまうのか、その理由を「郵便配達」に例えて紐解いていきましょう。
—
郵便配達でイメージする「到達不能」の正体
インターネットの世界は、実は郵便システムと非常によく似ています。あなたが送ったデータ(パケット)は、宛先という「住所」を頼りに旅をしますが、何らかの理由で宛先にたどり着けないことがあります。
そんな時、郵便屋さんが「宛先不明で戻ってきましたよ」と通知をくれるように、ネットワーク機器が送信元に「ごめん、届けられなかったよ」と送り返してくれるのが、ICMPの到達不能メッセージです。
このメッセージには「なぜ届けられなかったのか」を示すサブコードというものが付いています。これを知るだけで、トラブルシューティングの時間は劇的に短縮されます。
—
よく遭遇する「サブコード」のリアルな現場
主要なサブコードを、現場でよくあるケースに当てはめて見ていきましょう。
1. ネットワーク到達不能 (Code 0)
「そもそも、その住所(ネットワーク)が存在しない」という状態です。
- 現場の光景: ルーターがルーティングテーブル(地図)を確認しても、「そんなネットワークへの行き方は知らないよ」とさじを投げている状態です。
- 対策: ルーターのルート設定を確認しましょう。スタティックルートの記述ミスや、隣接ルーターとの経路情報の交換ができていないことがほとんどです。
2. ホスト到達不能 (Code 1)
「ネットワークまでは分かったけど、肝心の家(ホスト)が特定できない」という状態です。
- 現場の光景: ネットワーク内には入れたけれど、ARP解決ができない、あるいはファイアウォールで遮断されている可能性があります。
- 対策:
arp -aコマンドで物理アドレス(MACアドレス)が解決できているか確認してください。
3. プロトコル到達不能 (Code 2)
「届いたけど、その言語(プロトコル)は解読できないよ」という状態です。
- 現場の光景: 例えば、TCP通信を送ったのに、受け取り側の機器が「自分はUDPしか喋れないんだ」と拒否しているような状況です。
4. ポート到達不能 (Code 3)
エンジニアが最も頻繁に目にするエラーです。
- 現場の光景: 「家にはたどり着いたし、言語も通じるけど、その部屋(ポート)は鍵がかかっていて入れないよ」という状態です。
- 実務でのチェック例:
サーバー上でWebサービス(ポート80や443)が起動していない、あるいはLinuxの iptables や firewalld でポートがブロックされている場合に発生します。
—
トラブルシューティングの実践:現場の勘所
もし接続トラブルが起きたら、まずは traceroute (Windowsなら tracert) を使って、どこでパケットが「断絶」しているかを確認しましょう。
トラブルシューティングの基本コマンド例
# 1. まずは宛先まで届いているか、経路を確認
traceroute 192.168.1.10
# 2. ポートが開いているか、nc (netcat) で確認してみる
# -z はスキャンモード、-v は詳細表示
nc -zv 192.168.1.10 80
# 結果が "Connection refused" なら、ポート到達不能(Code 3)の可能性大
ファイアウォールでの遮断と「到達不能」の境界線
ここで一つ、ベテランらしい注意点を。
実は、セキュリティを強固にするために、あえて「到達不能メッセージを返さない」設定にする場合があります。
- ドロップ(Drop): パケットを黙って捨てる。送信元は「タイムアウト」まで待つしかなく、攻撃者にポートの状態を悟らせません。
- リジェクト(Reject): 到達不能メッセージを丁寧に返す。開発中には便利ですが、セキュリティ的にはポートの存在を教えてしまうリスクがあります。
—
最後に:ネットワークを「視る」力を養おう
ICMPのサブコードは、ネットワーク機器が発する「心の声」です。パケットを単なる電気信号の羅列として見るのではなく、「宛先を必死に探している郵便屋さんの苦悩」として捉えてみてください。
「なぜ届かないのか?」という問いに対して、ログの中に隠された小さなサブコードを見つけたとき、ネットワークの迷宮はクリアな道筋へと変わります。
最初は難しく感じるかもしれませんが、トラブルが起きたときは「どのサブコードが返ってきているかな?」と深呼吸して、パケットの旅路を想像してみてください。その視点こそが、あなたを一流のエンジニアへ導く最短ルートです。
それでは、また次回のネットワーク探訪でお会いしましょう!
コメント