ネットワークの「荷造り」で失敗しないために。MTUと「DFビット」の意外な関係
こんにちは!NOCでネットワークのトラブル対応をしていると、深夜のデータセンターで「なぜか特定の通信だけが繋がらない…」という不可解な現象に何度も遭遇します。
その犯人の多くは、今回解説する「MTU(最大転送単位)」と「DF(Don’t Fragment)ビット」の不一致です。一見すると難しそうな専門用語ですが、身の回りの「宅配便」に例えると驚くほどシンプルに理解できます。
今日は、ネットワークという巨大な物流網で、パケットが「道中で拒否されない」ための荷造り術を一緒に学んでいきましょう!
—
1. MTUって何?:物流で考える「最大積載量」
ネットワーク機器は、一度に運べる荷物の大きさに限界があります。この「一度に送れる最大のパケットサイズ」を MTU (Maximum Transmission Unit) と呼びます。
よくあるイーサネットのMTUは 1500 バイト。これは「トラックの荷台の広さ」だと思ってください。もし、この制限を超える大きな荷物を送ろうとしたらどうなるでしょうか?
通常、ネットワークの世界では「大きな荷物は分割して運ぶ(フラグメンテーション)」というルールがあります。しかし、世の中には「分割禁止!」と厳しく指定された荷物もあります。これが DFビット(Don’t Fragment:断片化禁止) です。
2. DFビットの正体:「分割禁止」のステッカー
DFビットが立っているパケットは、途中のルーターで「大きすぎるから半分に切って運ぶ」という処理を許しません。ルーターは、大きすぎる荷物が来るとどうするでしょう?
答えは、「これ以上運べません!」と荷物を突き返します。
これが、特定の通信だけがタイムアウトしたり、特定のサイトが見られない原因の正体です。パケットのサイズが大きすぎて、途中の小さなトンネルを通れず、かつ「分割禁止」というステッカーが貼られているため、詰まってしまうんですね。
—
3. 実践!コマンドで「道中の限界」を探る
では、どうすればその「限界サイズ」を見つけられるのでしょうか? 現場で一番手っ取り早いのは ping コマンドを使った探索です。
WindowsとLinux(macOS含む)では、少しオプションが異なります。
Windowsで試す場合
Windowsの ping は、-f でDFビットをオンにし、-l でサイズを指定します。
# サイズ1472でDFビットを立てて送信(合計1500になるように調整)
ping 192.168.1.1 -f -l 1472
Linux / macOSで試す場合
こちらは -M do というオプションで「断片化禁止」を指示します。
# サイズ1472でDFビットを立てて送信
ping -M do -s 1472 192.168.1.1
診断のポイント
- 応答がある場合: そのサイズは通れる(道は広い!)。
- 「Packet needs to be fragmented but DF set」と出る場合: そのサイズは大きすぎて通れない。
- 調整のコツ: このエラーが出なくなるまで、少しずつサイズ(
1472の部分)を減らしてみてください。
通常、1472バイトにIPヘッダーとICMPヘッダーを加えると合計 1500 バイトになります。VPNや特殊なネットワーク環境では、この限界値が 1400 や 1350 に下がっていることがよくあります。
—
4. 現場からのアドバイス:なぜこれが大事なのか
初心者の頃、私は「ネットワークなんて繋がっていればいい」と思っていました。しかし、クラウド環境やVPNを利用する現代では、このMTU設定がパフォーマンスに直結します。
例えば、MTUが最適化されていないと、パケットが途中で捨てられてしまい、再送が発生します。すると、Webサイトの表示が極端に遅くなったり、SSH接続が途中で固まったりする「謎の不調」に悩まされることになるのです。
もし、トラブルシューティング中に困ったら、まずはこう考えてみてください。
「このパケットは、この先の細い道を通るのに大きすぎないだろうか?」
この視点を持つだけで、あなたはもうトラブルの半分を解決できるエンジニアです!
—
まとめ:一歩ずつ理解していきましょう
- MTU は、一度に運べる荷物の限界サイズ。
- DFビット は、「分割禁止」のステッカー。
- pingコマンド を使えば、道の限界サイズ(パスMTU)を自分で特定できる。
最初はピンとこなくても大丈夫です。まずは手元のPCで ping を打って、エラーが出る境界線を探す遊びから始めてみてください。ネットワークの「目に見えない挙動」が、少しずつ手触りを持って感じられるようになるはずです。
もし現場で詰まったら、焦らずに「荷造りのサイズ」を確認してみてくださいね。応援しています!
コメント