IPsec NAT-T トラフィックの通過を許可するには、ファイアウォールがすでに UDP 4500 を許可しているのに、なぜ ESP も許可する必要があるのでしょうか?

IPsec NAT-T トラフィックの通過を許可するには、ファイアウォールがすでに UDP 4500 を許可しているのに、なぜ ESP も許可する必要があるのでしょうか?

NAT を介した 2 台の Juniper SRX ルータ間に IPsec VPN トンネルを確立しました。NAT はファイアウォール (Linux サーバー) によって実行されます。IPsec VPN トラフィックが通過できるようにファイアウォール ルールを設定しようとしたところ、UDP ポート 500 と 4500 を許可すると IKE ネゴシエーションは正常に完了しますが、ESP を許可するルールを追加しないと VPN トラフィック通信は機能しないことがわかりました。

以下はファイアウォールに適用したルールですが、IKE ネゴシエーションのみが完了しました。

iptables -F
iptables -P FORWARD DROP

# Inbound
iptables -I FORWARD -s <External IP address> -d <Internal IP address> -p udp --sport 500 -j ACCEPT
iptables -I FORWARD -s <External IP address> -d <Internal IP address> -p udp --sport 4500 -j ACCEPT

# Outbound
iptables -I FORWARD -s <Internal IP address> -d <External IP address> -p udp --sport 500 -j ACCEPT
iptables -I FORWARD -s <Internal IP address> -d <External IP address> -p udp --sport 4500 -j ACCEPT

また、VPN トンネルを介してデータを正常に送信するには、次の 2 つのルールも設定する必要があります。

iptables -I FORWARD -s <External IP address> -d <Internal IP address> -p 50 -j ACCEPT
iptables -I FORWARD -s <Internal IP address> -d <External IP address> -p 50 -j ACCEPT

ESPデータはUDPヘッダーでカプセル化されているため(ここで提供されるのはファイアウォールでキャプチャされたVPN通信パケット)、ファイアウォールがルールで ESP を許可せずにトンネル トラフィックをブロックするのはなぜでしょうか。私の予想では、ファイアウォールはパケットに UDP ポート 4500 ヘッダーが含まれていることを検出すると、それに応じてパケットを受け入れるはずです。

関連情報