大島 耕二氏 ネットマークス ネットワークセキュリティ事業部 セキュリティ技術室長
鈴木 利秋氏 ネットマークス エンタープライズソリューション事業部 コンサルティング&プロジェクト マネージメントグループマネージャー
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拠点では通常使うアプリケーションを中心にテストした。