VPNが通信障害を引き起こす
しばらくしてA社の社員から,社外の特定のWebサイトに接続できないというクレームが来た。A社のシステム担当者が調査したところ,問題のWebサイトに対してはpingによる疎通確認もできない。HTTPが使うTCPの80番ポートに対して接続はできるが,データは送られてこない状態だった。
![]() |
図1 A社は単一AS番号を使ってマルチホーミング環境を構築 東京-大阪間でIPsecトンネルを使い,インターネットのパケットを中継するはずだった。しかし,ICMPをフィルタリングする機器がインターネットの中にあったため,パケットを分割して再送する要求が行えず,特定のWebサイトに接続できない現象が発生した。 |
A社のシステム担当者がインターネット接続事業者(プロバイダ)に相談したところ,それはパスMTUディスカバリに起因する問題ではないか,との指摘を受けた。
VPNで使うIPsecではAHとESPの二つのプロトコルを組み合わせて使用することが多い。トンネル・モード時にはヘッダーとして最低でもAHで12バイト,ESPでは8バイトが使う。これ以外に可変長の認証データが加わり,さらにオリジナルIPヘッダーも加わるため,少なくとも数十バイトはヘッダーとして消費される。つまり元のパケット・サイズが1500バイトであっても,IPsecヘッダーを付加すると1500バイトを超えてしまうことがある。これはIPsecを使うときによく発生する問題だが,マルチホーミングの設定に気を取られていて見逃していた。
ICMPがフィルタリングされていた
通常はそのようなパケットは,1500バイトより小さくなるようにルーターが二つに分割するフラグメント処理を施して送信する。しかし,DFフラグが立っているためにフラグメント処理ができなかったのだ。
このような場合,IPネットワークではICMPのエラー通知機構により,パケット送信元にパケットを分割して再送するように指示できる。だが,アクセスできないWebサイトに設置してある機器がICMPをフィルタリングしていたため,この機構が働かなかった。A社はICMPのフィルタリングを外すように,そのWebサイトの管理者へ連絡した。
また,二つの拠点を結ぶ2回線のVPNのうち,1回線はVPNの使用を中止。この専用線をメイン回線,VPNの回線をバックアップ回線とした。こうすることで,通常は東京-大阪間のVPNを経由しないので,MTUサイズが1500バイトを超える問題は発生しなくなった。ただ,メイン回線の障害時にはバックアップのVPN回線を使うので,MTUサイズを超える問題は残っているが,この点は妥協した。