◆ IPsec - NAT Traversal
NATトラバーサルとは、NAT/NAPTを使用しているネットワーク環境においてIPsec通信を問題なく実現する
IPsecの拡張技術のことです。下図の通り、ESPパケットをUDPでカプセル化することにより、この付加された
UDPヘッダは暗号化の対象となっていないことから、NAPT機器でポート番号の書き換えを可能にしています。
◆ UDPのカプセル化の判断は誰が行うのか
それはIKEが自動的に行います。ISAKMPメッセージをやりとりする際にネットワーク上にNAPTデバイスが
存在するかどうかを検出し、NAPT機器が存在すればUDPでのカプセル化を行うようネゴシエーションします。
Step |
ネゴシエーション |
説明 |
@ |
IKE Phase 1の拡張機能 |
・ IPsecピアとなる双方の機器がNAT Traversalをサポートしているかを確認
・ IPsecピアを構築する経路上にNAPTデバイスが存在するかどうかを確認
・ IKEで使用するポート番号の変更 (送信元・宛先ともに500 → 4500へ変更)
|
A |
IKE Phase 2の拡張機能 |
・ ESPパケットをUDPでカプセル化するモードの決定
・ NAPTにより変更される前のIPアドレス情報の通知
|
B |
IPsec-VPN確立後 |
・ UDPカプセル化によるトランスポートまたはトンネルモードのESPパケットを送信
|
これらのIKEフェーズ1、IKEフェーズ2の拡張機能でNAT Traversalが実現します。詳細は以下で解説します。
◆ IKE Phase1 の拡張機能
IKE Phase1,2でやり取りされるISAKMPメッセージは、ISAKMPヘッダとISAKMPペイロードで構成されます。
このうちISAKMPペイロードで、自身がNAT Traversalをサポートしていることを相手に示すことができます。
Mainモード、AggressiveモードのどちらでもNATトラバーサル使用時の第一メッセージと第二メッセージに
NAT Traversalをサポートしていることを示すペイロードタイプ値「13」の「Vendor ID」が含まれています。
ISAKMPの第一メッセージを送信する時は送信元、宛先ポートともにUDPポート番号「500」を使用しますが、
経路の途中でNAPT変換が行われた場合は、送信元ポート番号は変換されるので、NAT Traversal を実装する
IPsec機器は送信元ポート500以外のISAKMPメッセージを受信できるように、ACLを注意する必要があります。
ISAKMPメッセージのMainモードにおける第3メッセージと第4メッセージ、またはAggresiveモードにおける
第2メッセージと第3メッセージでは、IPsecピアを構築する経路上にNAPTデバイスが存在するのかの確認と
NAPTデバイスが自身か相手どちら側に位置するのかを、ペイロードタイプ値「20」の「NAT-D」で行います。
この結果、IPsecピアを構築する経路上にNAPTデバイスを検知した場合、Mainモードは第5メッセージから
Aggresiveモードの場合は第3メッセージから、ISAKMPメッセージの送信元と宛先ポート番号を「500」から
「4500」に変更します。但し先に述べた通り、経路の途中でNAPT変換が行われた場合に送信元ポート番号
が変換されるので、IPsec機器は送信元ポート500や4500以外のISAKMPメッセージを受信できるようにACL
設定などを注意する必要があります。このタイミングでUDPヘッダとISAKMPヘッダの間にNon-ESP Marker
という4バイトの0を挿入して、ISAKMPメッセージのフォーマットを変更します。以下は上記解説の要約です。
IKE Phase1 の拡張機能 |
IKEモード |
ISAKMP |
動作 |
Mainモード |
第1・2メッセージ |
NAT Traversalをサポートしていることを示すペイロードタイプ13 のVendor IDが
含まれたISAKMPメッセージをやりとりする。この時点でUDPポート番号500を使用。
|
Aggressiveモード |
第1、2メッセージ |
Mainモード |
第3、4メッセージ |
IPsecピアをはる通信経路上に、NAPTデバイスが存在するかどうかを検出する
ペイロードタイプ「20」のNAT-Dが含まれたISAKMPメッセージをやりとりする。
この時点ではUDPポート番号500を使用する。 |
Aggressiveモード |
第2、3メッセージ |
Mainモード |
第5、6メッセージ |
IPsecピアをはる経路にNAPTデバイスを検知した場合、ISAKMPメッセージの送信元
及び宛先ポート番号を 500 から「4500」に変更する。また、ISAKMPメッセージの
フォーマットが変更(UDPヘッダとISAKMPヘッダの間に Non-ESP Marker を挿入) |
Aggressiveモード |
第3メッセージ |
◆ IKE Phase 2の拡張機能
NATトラバーサルにおけるIKEフェーズ2では、UDPカプセル化のモードを決定する必要があります。通常の
IPsecの基本仕様ではIKEフェーズ2でトンネルモードなのか、トランスポートモードなのかを決定しますが
IPsecの拡張仕様ではUDPカプセル化トンネルモード、UDPカプセル化トランスポートモードが定義されて
おり、これらのどちらを使用するのかをネゴシエーションにより決定します。これらの情報はQuickモードの
第一メッセージと第二メッセージで、ペイロードタイプ「3」の Transform で伝えられます。
また、トランスポートモードを使用する場合にTCP/UDPなどのチェックサム検証が失敗する問題を防ぐ為に
Quickモードの第一メッセージと第二メッセージにて、ペイロードタイプ「21」の「NAT-OA」の情報により
NAPTにより変換される前のIPアドレスの情報を交換する場合があります。
|