RackShareRackShareラックを、シェアしよう

MSSとMTU|なぜ「大きいパケットだけ」通信が止まるのか

ネスぺ社長 ・ 公開 2026-07-02 ・ 更新 2026-09-04 ・ 閲覧 184

「pingは通る、小さい通信もできる。でもファイル転送やSSLだけ固まる」。この不思議な障害の犯人は、たいていMTU/MSSです。

MTUとMSS

  • MTU(Maximum Transmission Unit) … 1つのフレームで運べる最大サイズ。イーサネットは通常1500バイト。
  • MSS(Maximum Segment Size) … TCPが1セグメントで運べるデータの最大サイズ。ざっくり MTU − IPヘッダ − TCPヘッダ(1500 − 40 = 1460)。

TCPは接続時に、互いのMSSを教え合います。

トンネルで実効MTUが縮む

VPN(IPsec等)やPPPoEを通ると、カプセル化のヘッダが付く分、実際に運べるサイズが1500より小さくなります。ところが端末は「1500で送れる」と思ったまま大きなパケットを出すため、途中でサイズオーバーが起きます。

なぜ「大きい通信だけ」止まるのか

小さいパケット(pingや軽い通信)は上限に収まるので通ります。ところがファイル転送やTLSハンドシェイクのような大きいパケットは上限を超え、途中のルータで「これ以上運べない」となります。ここで、

  • ルータが「分割して」と通知(ICMP)を返す
  • でもFWがそのICMPを弾いている

と、通知が届かず送信側が調整できません。結果、大きいパケットだけが黙って消える=「特定通信だけ固まる」になります。これがPMTUD(Path MTU Discovery)ブラックホールです。

切り分け:サイズを変えてping

分割禁止フラグ付きでサイズを変えてpingすると、どこで詰まるか分かります。

# Windows: -f 分割禁止, -l サイズ
ping -f -l 1472 8.8.8.8   … 1472+28=1500。通るか?
ping -f -l 1400 8.8.8.8   … 小さくすると通る=MTU問題の可能性大

小さくすると通り、大きくすると通らないなら、経路のMTU不足がほぼ確定です。

対処

  • 経路上でICMP(Type3 Code4)を通す
  • ルータでMSSを調整する(MSSクランプ)
interface Tunnel0
 ip tcp adjust-mss 1360

これでTCPのMSSを実効MTUに合わせ、大きすぎるパケットが出ないようにします。

まとめ

「小さい通信はOK、大きい通信だけNG」を見たら、まずMTU/MSSを疑う。VPN・PPPoE区間では定番のトラブルです。ping のサイズ変更で切り分け、MSSクランプで対処、という型を覚えておくと強いです。

♥ 0(いいねはログイン後)

コメント 0 件

コメントするにはログインしてください。