大島 耕二氏 ネットマークス ネットワークセキュリティ事業部 セキュリティ技術室長
鈴木 利秋氏 ネットマークス エンタープライズソリューション事業部 コンサルティング&プロジェクト マネージメントグループマネージャー

図2 A社はテストに限って通信できない状況に陥った
慎重になったA社は設定したMTU値が正しいことを確認するため,長いICMPパケットを送ってテストした。その結果,通常の通信にはまったく問題がないものの,1024バイト以上のICMPパケットだけ通信できないことが判明。原因はVPN装置のファイアウォール機能が,1024バイト以上のICMPパケットを攻撃と見なして通過させない設定だったこと。テスト以外では問題ないため,A社はそのままの設定で本格運用している。

MTU値を小さくして障害を解消

 問題となった設定は,データの最大フレーム・サイズを表す「MTU」と呼ぶパラメータ。VPN装置に設定すべきMTU値は,実はADSLサービスによって異なる。A社が採用したNTT東西地域会社の「フレッツ・ADSL」の場合,MTUの設定値を1454バイト以下にする必要がある。

 さらに,A社が採用したVPN装置では,フレッツ・ADSLのMTU値から,VPNプロトコルのIPsec方式のヘッダー分36バイトを差し引いた「1418」バイト以下の値をMTU値として設定する必要があった。

 ところが,A社が使うVPN装置のデフォルトのMTU設定値は1500バイト。本来設定すべきMTU値より,大きい設定だった。ADSLサービスで規定したMTU値より大きい設定をした場合,MTU値よりも長いパケットがやり取りされて,通信できなくなることがある。

 このためa拠点では,特定のWebサイトを見られなくなってしまったわけだ。早速A社がa拠点の設定を変更したところ,問題は解消できた。

過剰なテストで障害と誤解

 翌週の日曜日にA社は,c拠点をインターネットVPNに切り替えることにした。A社は前週の失敗を反省し,MTU値を正しく設定。Webアクセスもテストに加えた。

 さらに慎重を期して,MTUサイズが正しいことを確認することにした。具体的には,インターネット上のいくつかのWebサーバーに対して,c拠点から長いICMPパケットを送信してみた。MTUで設定した値までの長さのパケットは,通信できると考えたからだ。

 ところが,VPN装置に設定したMTU値よりも短い1024バイトのパケットでも通信できなかった。1024バイト以上のパケットも試したが,同じく通信できなかった(図2[拡大表示])。

 しかし,c拠点からHTTPでWebアクセスしたところ,全く問題がない。他のアプリケーションにも,問題はなかった。結局,通信できないのは,1024バイト以上のICMPパケットだけだったのである。

 A社は,もう一度VPN装置メーカーに問い合わせてみた。すると,VPN装置が装備するファイアウォール機能の設定が原因と分かった。このファイアウォール機能では,デフォルトで1024バイト以上のICMPパケットを通過させない設定になっていた。1024バイト以上のICMPパケットを攻撃と見なして,破棄する機能である。

 長いICMPパケットは通常の通信では発生しない。そこでA社は,残りのd拠点では通常使うアプリケーションを中心にテストした。