【入門編】 pingによるMTUパスディスカバリー(Path MTU Discovery)とDFビットの活用 – トラブルシューティング&ネットワーク運用監視実践ガイド

ネットワークの「荷物」が通れない!?MTUとDFビットでトラブルを解決しよう

エンジニアの皆さん、こんにちは。データセンターの現場で深夜の障害対応に追われ、コーヒーの消費量が給与の大部分を占めているNOCのシニアエンジニアです。

今日は、ネットワーク運用において「避けては通れない壁」であるMTU(Maximum Transmission Unit)と、それを探り当てるための魔法のコマンドについてお話しします。

「サーバー同士は繋がっているのに、なぜか大きなデータを送るとパケットが消える……」

そんな怪奇現象に遭遇したことはありませんか?実はその犯人、MTUの不一致かもしれません。一歩ずつ、紐解いていきましょう。

—

1. MTUってなに?「郵便配達」でイメージしよう

MTUとは、ネットワーク上で「一度に送れる荷物の最大サイズ」のことです。

想像してみてください。あなたは郵便局員です。郵便局には「封筒のサイズ規定(MTU)」がありますよね。もし、その規定よりも大きな荷物を持ち込んだらどうなるでしょう?

  • 普通の状態: 窓口で「これ大きすぎるので、2つに分けて送ってください」と言われて、荷物を切り分けられます(これがフラグメンテーション=パケット分割です)。
  • 「分割禁止」のラベルがある場合: 窓口で「分割禁止の荷物なので、大きすぎると受け付けられません」と返送されてしまいます。

ネットワークの世界でも同じです。ルーターという名の「郵便局」は、規定より大きなパケットが来ると分割しようとしますが、「分割しちゃダメ(Don’t Fragment)」という指示がついていると、パケットを捨ててエラーを返すしかないのです。

—

2. 「DFビット」は「分割禁止」のシール

IPヘッダーにあるDF(Don't Fragment)ビットは、パケットに貼る「分割禁止シール」のようなものです。

ネットワークの経路には、光ファイバーやVPN、クラウドなど様々な設備が混在しています。それぞれで「通れる荷物のサイズ」が微妙に違うことがあり、ある場所では通れても、その先の狭い道で「大きすぎて通れない!」と拒絶されることがよくあります。

このとき、DFビットが立っていると、ルーターは「このパケットは分割できないから、捨てて『大きすぎて通れないよ(ICMP Destination Unreachable)』と送信元に伝えよう」という挙動をとります。

—

3. 実戦!pingでMTUを突き止める

では、現場でどうやって「どこまでなら通れるのか」を調べるのか。ここで登場するのが、おなじみの ping コマンドです。

ping には、荷物のサイズを指定し、かつ DF ビットを立てるオプションがあります。

Windowsの場合

# -f: DFビットを立てる(分割禁止)
# -l: 送信サイズを指定(ヘッダー分を引いて調整が必要)
ping 192.168.1.1 -f -l 1472

Linuxの場合

# -M do: DFビットを立てて、フラグメンテーションを禁止する
# -s: ペイロードサイズを指定
ping -M do -s 1472 192.168.1.1

なぜ「1472」なの?

一般的なEthernetのMTUは 1500 バイトです。ここからIPヘッダー(20バイト)とICMPヘッダー(8バイト)を引いた 1472 が、データ部分の最大値となります。

ここからがトラブルシューティングの肝です:
1. 1472 で試してエラー(パケットが通りません)なら、数値を少しずつ下げていきます(1460, 1450…)。
2. 「あれ、1430なら通るぞ?」となれば、その経路のどこかに「MTUが1430以下の箇所がある」ことが特定できます。

—

4. 現場で見抜く「見えない壁」

例えば、VPNを通している場合、暗号化のためのヘッダーが余分につくため、物理的なMTUよりも実効的なMTUは小さくなります。これを忘れて大きなデータを送り出すと、パケットはVPNルーターの手前で力尽きてしまいます。

もし、Webサイトが表示されない、SSH接続はできるのにファイル転送で固まる、といった症状が出たら、真っ先にこのMTUを疑ってください。

「ping でサイズを変えながらチェックする」

この泥臭い作業こそが、どんな高度な監視システムよりも確実にネットワークの「真の姿」を教えてくれます。

—

最後に:エンジニアとしての心構え

トラブルシューティングの現場では、教科書通りの回答は役に立たないことが多いです。今回紹介したMTUの確認手法も、ただコマンドを叩くだけではなく、「経路上のどの機器が制限をかけているのか?」を想像しながら実行してみてください。

パケットが元気に目的地まで届く姿を想像できれば、あなたも立派なネットワークエンジニアです!

また次回の記事で、現場の知恵を共有しましょう。それでは、良きネットワークライフを!

コメント

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