我有一台服务器,我使用 Strongswan 和 IKEv2 设置通过 VPN 连接到该服务器,它按预期工作。此设置将我的客户端计算机分配到该范围内的 IP 10.10.10.0/24
。我希望能够打开所有端口通过 VPN 连接到服务器的客户端向服务器发送信息。这种情况可能吗?我可以编写一条针对来自 VPN 客户端的所有内容的规则吗?
这是我目前的一套iptables.rules
:
*filter
# default policies
-P INPUT DROP
-P OUTPUT ACCEPT
-P FORWARD DROP
# established connections keep working
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# connections from loopback are accepted
-A INPUT -i lo -j ACCEPT
# invalid requests
-A INPUT -m state --state INVALID -j DROP
# sshd
-A INPUT -p tcp --dport 22 -j ACCEPT
# ikev2/ipsec
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -j ACCEPT
# pings
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# forward VPN traffic anywhere
-A FORWARD -s 10.10.10.0/24 -m policy --dir in --pol ipsec --proto esp -j ACCEPT
-A FORWARD -d 10.10.10.0/24 -m policy --dir out --pol ipsec --proto esp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-unreachable
-A FORWARD -j REJECT --reject-with icmp-host-unreachable
COMMIT
*mangle
# reduce MTU/MSS values for dumb VPN clients
-A FORWARD -s 10.10.10.0/24 -o eth0 -p tcp -m policy --dir in --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
*nat
# masquerade VPN traffic over eth0
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT