Я установил туннель IPsec VPN между двумя маршрутизаторами Juniper SRX через NAT, причем NAT выполнялся брандмауэром (сервером Linux). При попытке настроить правила брандмауэра для пропуска трафика IPsec VPN я обнаружил, что хотя согласование IKE успешно завершается с разрешенными портами UDP 500 и 4500, передача трафика VPN не работает, если не добавлены правила, разрешающие ESP.
Вот правила, которые я применил к брандмауэру, но было завершено только согласование 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-туннель необходимо также установить следующие два правила:
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 port 4500, он должен принять пакет соответствующим образом.


