ネットワークの「荷物」が届かない?pingのペイロード調整でパケットの限界を見極める
ネットワークエンジニアの世界へようこそ。新人エンジニアの皆さんが最初に覚えるコマンドといえば、間違いなく ping ですよね。「とりあえず疎通確認!」と打つあのコマンドですが、実は奥が深く、トラブルシューティングの現場では「魔法の杖」にもなり得るツールなんです。
今日は、ただ「届くかどうか」を調べるだけではない、ping を使った「パケットの体格検査」についてお話しします。
—
郵便配達でイメージしてみよう:MTUの壁
ネットワークを流れるデータは、いわば「荷物」です。この荷物を運ぶトラック(ネットワーク機器)には、一度に運べる荷物の大きさに制限があります。これを専門用語で MTU (Maximum Transmission Unit) と呼びます。
もし、MTUが1,500バイトの道路に対して、それより大きな荷物を送ろうとしたらどうなるでしょうか?
郵便局のスタッフ(ルーター)は慌てて荷物をバラバラに解体して、いくつかの小さな箱に詰め替える必要があります。これを「フラグメンテーション(断片化)」と言います。
しかし、この解体作業はルーターにとって非常に重労働。さらに、もし「荷物を解体してはいけない(Don’t Fragment)」という指示があれば、その荷物は「大きすぎて運べません」と突き返されてしまうのです。
pingの -s オプションで「荷物の重さ」を測る
私たちが普段使う ping は、とても小さな「お手紙」を送るようなものです。しかし、実際の業務データはもっと巨大です。そこで、ping の -s(Linux系)や -l(Windows系)オプションを使って、わざと大きな荷物を作って送ってみましょう。
これで、ネットワークのどこかで「これ以上は無理!」という限界点(ボトルネック)がないかを確認できます。
Linuxでの実行例
# サイズを1472バイトにして送信(IPヘッダー20バイト+ICMPヘッダー8バイト=1500バイトの境界線)
# -M do は「フラグメント禁止(Don't Fragment)」という重要フラグを立てる設定です
ping -s 1472 -M do 192.168.1.1
Windowsでの実行例
# -l オプションでペイロードサイズを1472バイトに指定
# -f は「フラグメント禁止」を指示するオプションです
ping -l 1472 -f 192.168.1.1
—
なぜ「1472バイト」が境目なの?
「なんで中途半端な数字なの?」と疑問に思いますよね。
標準的なEthernetのMTUは1,500バイトです。そこから、パケットが宛先まで迷子にならないようにするための「住所などの情報(ヘッダー)」として、IPで20バイト、ICMPで8バイトが必ず消費されます。
1,500 – 20 – 8 = 1,472バイト。
これが、フラグメンテーションを起こさずに一度で運べる最大の「中身(ペイロード)」の限界値なんです。もし 1473 バイトで送ってエラーになるなら、どこかの中継地点でMTUが小さく設定されている可能性が高いと判断できます。
—
現場で役立つトラブルシューティングのヒント
現場で「Webサイトが見られない」「特定サーバーへの通信だけが途切れる」という相談を受けたとき、私はまずこのテストを行います。
1. 段階的にサイズを上げる: 1000 → 1300 → 1400 と増やしていき、どこで反応がなくなるか探ります。
2. VPNやトンネル接続を疑う: VPNを経由している場合、カプセル化(荷物の中に荷物を入れること)が発生し、実質的なMTUが1,500を下回ることが多々あります。
3. 「通信はできるのに表示が止まる」現象: これは、小さなパケットは通るけれど、大きなパケットがドロップしている典型的なMTU不整合のサインです。
—
まとめ:道具を使いこなす楽しさ
ping は単なる疎通確認ツールではありません。「ネットワークの道路幅を測るメジャー」であり、「機器の限界を試すストレステストツール」でもあります。
最初は難しく感じるかもしれませんが、まずは自分のPCからルーターに向けて、-s や -l で少しずつサイズを変えてパケットを投げてみてください。「あ、ここを超えると返事が来なくなるんだ!」という発見が、あなたのエンジニアとしての直感を確実に鋭くしてくれます。
ネットワークの裏側を想像し、パケットの流れを可視化する。その一歩が、トラブルを即座に解決できる「百戦錬磨のエンジニア」への第一歩ですよ!
それでは、また次回のテクニカル解説でお会いしましょう。現場からは以上です!
コメント