IKEv2 の NAT 越え
NAPT を行うルータの配下にある拠点の VPN 装置が,本社の VPN 装置との間で IKEv2 を用いて IPsec(ESP)のトンネルを確立する。IKE_SA_INIT 交換によって,両装置の間に NAT が存在することが検出された。この後の IKE メッセージと ESP パケットの送信方法として,適切なものはどれか。
- アIKE メッセージと ESP パケットの両方を,UDP のポート 4500 を用いて送信する。
- イIKE メッセージは UDP のポート 500 で送信し,ESP パケットはカプセル化せずに IP プロトコル番号 50 のまま送信する。
- ウIKE メッセージは UDP のポート 500 で送信し,ESP パケットも同じポート 500 の UDP でカプセル化して送信する。
- エNAT による IP ヘッダの書換えの影響を受けないように,ESP の代わりに AH を用いて送信する。
正解と解説を見る
正解 ア
この問題の基礎知識
- ESP は IP プロトコル番号 50 の,ポート番号をもたないプロトコルなので,ポート番号を用いて変換する NAPT をそのままでは通過できない。
- IKE は通常 UDP のポート 500 を用いる。IKEv2 では IKE_SA_INIT 交換で NAT 検出用のペイロードを交換し,経路上の NAT の有無を判定する。NAT トラバーサルでは,ESP を UDP でカプセル化して NAPT を通過させる(RFC 3948)。
- AH は外側の IP ヘッダのアドレスも含めて認証するので,NAT によるアドレスの書換えと両立しない。
アIKE メッセージと ESP パケットの両方を,UDP のポート 4500 を用いて送信する。正解
NAT を検出した場合,以降の IKE メッセージと ESP パケットはすべて UDP のポート 4500 で送る。ESP を UDP でカプセル化することによって,ポート番号を持たない ESP も NAPT がポート番号を用いて変換できるようになる。
イIKE メッセージは UDP のポート 500 で送信し,ESP パケットはカプセル化せずに IP プロトコル番号 50 のまま送信する。
NAT が無い場合の送信方法である。ESP にはポート番号が無く,ポート番号で通信を区別する NAPT では適切に変換できない。NAT を検出した場合は,ESP の UDP カプセル化が必須である。
ウIKE メッセージは UDP のポート 500 で送信し,ESP パケットも同じポート 500 の UDP でカプセル化して送信する。
NAT を検出した後の UDP カプセル化はポート 4500 で行うと定められており,ポート 500 で行ってはならない。IKE メッセージも ESP パケットとともにポート 4500 に移る。
エNAT による IP ヘッダの書換えの影響を受けないように,ESP の代わりに AH を用いて送信する。
AH は外側の IP ヘッダのアドレスも含めて認証するので,NAT がアドレスを書き換えると検証に失敗する。AH は本質的に NAT と両立せず,NAT 越えのための UDP カプセル化も ESP だけが対象である。
検証用の出典出典照合済み
RFC 7296 Internet Key Exchange Protocol Version 2 (IKEv2)(2.23 NAT Traversal) / RFC 3948 UDP Encapsulation of IPsec ESP Packets照合の根拠(6 件)
- ア(正解): NAT を検出したら以降の IKE と ESP をすべて UDP 4500 でトンネリングする
The IKE initiator MUST check the NAT_DETECTION_SOURCE_IP or NAT_DETECTION_DESTINATION_IP payloads if present, and if they do not match the addresses in the outer packet, MUST tunnel all future IKE and ESP packets associated with this IKE SA over UDP port 4500.
RFC 7296 · Section 2.23(新しいタブで開きます) - ウ(誤り): ポート 500 での UDP カプセル化は禁止されている
UDP encapsulation MUST NOT be done on port 500.
RFC 7296 · Section 2.23(新しいタブで開きます) - イ(誤り): NAT を検出したら ESP の UDP カプセル化は必須で,プロトコル番号 50 のままでは送らない
However, if a NAT is detected, both devices MUST use UDP encapsulation for ESP.
RFC 7296 · Section 2.23(新しいタブで開きます) - ア(正解)・イ(誤り): NAPT はアドレスとともに TCP/UDP のポート番号を変換し,ポート番号で宛先の内部ノードを決める。ポート番号を持たない ESP はそのままでは区別できない
It is a common practice of NATs to translate TCP and UDP port numbers as well as addresses and use the port numbers of inbound packets to decide which internal node should get a given packet.
RFC 7296 · Section 2.23(新しいタブで開きます) - ア(正解)・イ(誤り): カプセル化しない AH・ESP の変換は NAT にとって不確実なので,IKE と ESP を UDP でカプセル化する
Even in tunnel mode, there are routing problems because transparently translating the addresses of AH and ESP packets requires special logic in the NAT and that logic is heuristic and unreliable in nature. For that reason, IKEv2 will use UDP encapsulation of IKE and ESP packets.
RFC 7296 · Section 2.23(新しいタブで開きます) - エ(誤り): AH は外側の IP アドレスを保護するため本質的に NAT と両立せず,UDP カプセル化(RFC 3948)の対象外である
Because the protection of the outer IP addresses in IPsec AH is inherently incompatible with NAT, the IPsec AH was left out of the scope of this protocol specification.
RFC 3948 · Section 1(新しいタブで開きます)
IKE_SA_INIT の NAT_DETECTION_* で NAT が検出された後なので,RFC 7296 2.23 により以降の IKE と ESP はすべて UDP 4500 に移る。