На сервере я использую следующие правила:
sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT
sudo iptables -A FORWARD --match policy --pol ipsec --dir in --proto esp -s 10.0.2.0/24 -j ACCEPT
sudo iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.0.2.0/24 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -o eth0 -j MASQUERADE
sudo iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.0.2.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
Что эквивалентно для клиента?
Я предполагаю, что связанный входящий трафик разрешен, например, с таким правилом:
# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Если исходящий трафик обычно блокируется, вам необходимо добавить правила, разрешающие следующий тип трафика, в зависимости от фактической конфигурации:
IKE (порты UDP 500 и 4500, по умолчанию):
# iptables -A OUTPUT -p udp --dport 500 -j ACCEPT
# iptables -A OUTPUT -p udp --dport 4500 -j ACCEPT
Вы можете ограничить это больше, например сделайте его специфичным для интерфейса (-o <name>
) или адрес назначения (-d <ip>
). Исходные порты также могут быть сопоставлены, но в некоторых ситуациях используются произвольные исходные порты (т.е. 0
в качестве исходного порта в конфигурации strongSwan) может быть предпочтительным или даже обязательным (например, если настраиваемый порт сервера используется).
Если необходимо загрузить списки отзыва сертификатов или сертификат сервера проверяется с помощью протокола OCSP, соответствующие порты TCP также должны быть разрешены, например:
# iptables -A OUTPUT -p tcp --dport 80 -d <CRL server IP> -j ACCEPT
# iptables -A OUTPUT -p tcp --dport <OCSP port> -d <OCSP server IP> -j ACCEPT
Если клиент находится за NAT или инкапсуляция UDP принудительно, трафик ESP будет отправлен через порт UDP NAT-T IKE. В противном случае трафик ESP должен быть разрешен явно:
# iptables -A OUTPUT -p 50 -j ACCEPT
Опять же, это может быть ограничено конкретным местом назначения и т. Д.
Для фактического трафика VPN потребуются дополнительные правила. Это можно сделать либо с помощью параметра strongSwan по умолчанию сценарий обновления, который автоматически вставляет правила для согласованных селекторов трафика или с глобальным правилом приема всей почты для трафика, который соответствует любой политике IPsec:
# iptables -A OUTPUT -m policy --dir out --pol ipsec -j ACCEPT