我在服务器上使用以下规则:
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
客户端的等价物是什么?
我假设允许相关的入站流量,例如,使用如下规则:
如果出站流量一般被阻塞,则需要添加规则允许以下类型的流量,具体取决于实际配置:
IKE(UDP 端口 500 和 4500,默认情况下):
您可以对此进行更多限制,例如使其特定于接口 (
-o <name>
) 或目标地址 (-d <ip>
)。源端口也可以匹配,但在某些情况下使用任意源端口(即0
在 strongSwan 配置中配置为源端口)可能是首选,甚至是必需的(例如,如果使用自定义服务器端口)。如果必须下载 CRL,或者通过在线证书状态协议 (OCSP) 验证服务器证书,则还必须允许相应的 TCP 端口,例如:
如果客户端在 NAT 之后或强制 UDP 封装,ESP 流量将使用 IKE 的 NAT-T UDP 端口发送。否则,必须明确允许 ESP 流量:
同样,这可以限制在特定的目的地等。
实际的 VPN 流量需要额外的规则。这可以使用 strongSwan 的默认updown 脚本来完成,该脚本会自动为协商的流量选择器插入规则,或者使用与任何 IPsec 策略匹配的流量的全局包罗万象规则: