VPNがつながらない?その原因は「荷物のサイズ」にあるかもしれません:MTUとMSSのやさしい話
ネットワークエンジニアの皆さん、こんにちは。現場でバリバリ働いていると、「VPNを張った途端に、特定のサイトだけ見られない」「SSHはつながるのに、ファイル転送で固まる」なんていう不可解なトラブルに遭遇したことはありませんか?
実はこれ、「パケットの断片化」という現象が原因であることが非常に多いんです。今回は、ネットワーク界の「宅急便」に例えて、MTUとMSSの仕組みを紐解いていきましょう。
—
ネットワークは「宅急便」と同じ
インターネットを流れるデータは、小さな小包(パケット)に分けられて目的地へ運ばれます。このとき、一度に運べる小包の最大サイズが決まっているのですが、これを専門用語で MTU(Maximum Transmission Unit)と呼びます。
通常、インターネット上の標準的な MTU は 1500 バイトです。
ところが、VPNを使うと状況が一変します。VPNはデータを暗号化し、さらにそれを別のカプセルに包んで運びます。イメージしてみてください。「普通の小包」を「頑丈なセキュリティケース」に詰め直して送るようなものです。
当然、セキュリティケースの分だけ、全体のサイズは大きくなりますよね。これが「オーバーヘッド」です。
なぜ「断片化」が起きるのか?
もし、詰め直した後の荷物が 1500 バイトを超えてしまうと、途中のルーターはパニックになります。「おいおい、この道を通れるサイズじゃないぞ!」と。
そこでルーターは、大きな荷物を二つに切り分けて(断片化して)送ろうとします。しかし、最近のセキュリティ機器やクラウド環境は、この「切り分けられた荷物」を「怪しい攻撃パケットだ!」と判断して破棄してしまうことが非常に多いんです。
これが、VPN接続時になぜか通信が止まる、あの「謎の現象」の正体です。
—
解決の切り札:MSS Clamping
この問題を解決する魔法の杖が MSS(Maximum Segment Size)の調整です。
MSS は、小包の中に詰め込める「中身(データ)」の最大サイズのこと。MTU が外箱のサイズなら、MSS は中身のサイズです。
VPNによる「カプセル化の分」だけ、最初から中身を少し小さめにしておけば、外箱が 1500 バイトを超えずに済むわけです。これを「MSS Clamping(固定)」と呼びます。
—
実践!設定の現場から
では、具体的にどう設定すればいいのでしょうか。代表的なルーター(Cisco系など)での設定例を見てみましょう。
Ciscoルーターでの設定例
トンネルインターフェース(VPNの出口)に対して、以下のように設定を行います。
# トンネルインターフェースの設定モードに入ります
interface Tunnel1
# MSSを1360に制限する(標準の1460からVPNのオーバーヘッド分を引くのがコツです)
ip tcp adjust-mss 1360
Linux(iptables)での設定例
サーバーをVPNゲートウェイとして使っている場合、iptablesで強制的に調整することも可能です。
# TCPのSYNパケットを捕まえて、MSSを1360に書き換えるルール
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360
現場でトラブルに遭遇したら?
「VPNがつながらない」という連絡が来たら、まずは以下のステップで確認してみてください。
1. Pingで巨大なパケットを送ってみる
Windowsなら ping 192.168.1.1 -f -l 1472 のようにコマンドを打ちます。-f は「断片化禁止」オプションです。これでエラーが出るなら、どこかでサイズ制限に引っかかっています。
2. TCPのハンドシェイクを疑う
Wireshark などのツールでパケットキャプチャをとり、TCPのコネクション確立(SYNパケット)が成功しているか確認してください。MSSの値がネゴシエーションされているかが見えると、原因は一発で特定できます。
3. MSSを少しずつ下げてみる
1360でもダメなら、思い切って 1300 や 1280 に下げてみましょう。これで解消するなら、原因は間違いなくサイズオーバーです。
—
まとめ:一歩ずつ理解すれば怖くない
ネットワークのトラブルは、目に見えない分だけ難しく感じますが、このように「荷物のサイズ」という物理的な概念に置き換えると、途端にシンプルに見えてきます。
「MTUは外箱、MSSは中身」。この基本さえ押さえておけば、どんな複雑なVPN環境でも落ち着いて対処できるはずです。皆さんの現場のネットワークが、今日も快適に、そして安全にパケットを運び続けられることを願っています!
それでは、次回の技術解説でお会いしましょう。ハッピー・ネットワーキング!
コメント