iptablesの設定

やること

strongSwanの設定をしただけでは、通信できない。 iptables を設定して、10.1.2.0/24をNATする設定と、IPSecでトンネルしたことでMTUが減るため、 TCPMSSの設定をする。

カーネルの設定

パケットを他のホストに転送するようにする。

$ echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

MTUはiptablesで設定するため、Path MTU Discoveryは無効にする。

$ echo 'net.ipv4.ip_no_pmtu_disc=1' >> /etc/sysctl.conf

iptablesの設定

コマンドで流し込むだけ。

$ iptables -t mangle -A FORWARD -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
$ iptables -t mangle -A FORWARD -p tcp -m policy --dir out --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360

$ iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -m policy -dir out --pol ipsec -j ACCEPT
$ iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -j MASQUERADE

捕捉

VPNサーバー自体にFIrewallの設定があるなら、UDP Port 500と4500を許可する。

iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT

この辺りについては、strongSwanのwikiに記載がある。

Introduction to strongSwan: Forwarding and Split-Tunneling - strongSwan