Ich habe einen IPsec-VPN-Tunnel zwischen zwei Juniper SRX-Routern über NAT eingerichtet, wobei das NAT von der Firewall (einem Linux-Server) durchgeführt wurde. Beim Versuch, die Firewall-Regeln so zu konfigurieren, dass IPsec-VPN-Verkehr durchgelassen wird, habe ich festgestellt, dass die IKE-Aushandlung zwar erfolgreich abgeschlossen wird, wenn die UDP-Ports 500 und 4500 zugelassen sind, die VPN-Verkehrskommunikation jedoch nicht funktioniert, wenn keine Regeln hinzugefügt werden, die ESP zulassen.
Hier sind die Regeln, die ich auf die Firewall angewendet habe, aber nur die IKE-Aushandlung wurde abgeschlossen:
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
Und um Daten erfolgreich durch den VPN-Tunnel übertragen zu können, sollten zusätzlich folgende zwei Regeln gesetzt sein:
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
Da die ESP-Daten im UDP-Header gekapselt sind (hier sindAuf meiner Firewall erfasste VPN-Kommunikationspakete), warum sollte die Firewall den Tunnelverkehr blockieren, ohne ESP in den Regeln zuzulassen? Meiner Erwartung nach sollte die Firewall das Paket akzeptieren, wenn sie erkennt, dass ein Paket einen UDP-Port-4500-Header enthält.


