RTX 810 と Openswan で site-to-site VPN
自宅から 10.0.0.3 とかで VPS にあるサーバにアクセスしたいし、逆に VPS から 192.168.10.8 とかで自宅のサーバにアクセスしたい。
環境
- 自宅 (RTX 810)
- グローバルIP 1.1.1.1
- プライベートIP 192.168.10.1
- サブネット 192.168.10.0/24
- VPS (Openswan)
- グローバルIP 2.2.2.2
- プライベートIP 10.0.0.2
- サブネット 10.0.0.0/16
- pre-shared-key HOGEFUGA
自宅側の設定
Web UI から VPN 接続の設定→IPsecを使用したネットワーク型 LAN間接続VPN からだいたい設定できる。 最終的に以下のような設定になった。
... ip route 10.0.0.0/16 gateway tunnel 1 ... tunnel select 1 tunnel name vps ipsec tunnel 1 ipsec sa policy 1 1 esp aes-cbc sha-hmac ipsec ike group 1 modp1024 ipsec ike hash 1 sha ipsec ike keepalive use 1 off ipsec ike local address 1 192.168.10.1 ipsec ike pre-shared-key 1 * ipsec ike remote address 1 1.1.1.1 ipsec auto refresh 1 off ip tunnel tcp mss limit auto tunnel enable 1 ... ip filter 200085 pass * 192.168.10.1 udp * 500 ip filter 200086 pass * 192.168.10.1 esp * * ...
VPS 側の設定
Openswan
/etc/ipsec.conf
version 2.0 config setup dumpdir=/var/run/pluto/ virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10 oe=off protostack=auto include /etc/ipsec.d/*.conf
/etc/ipsec.secrets
include /etc/ipsec.d/*.secrets
/etc/ipsec.d/rtx810.conf
conn rtx810 auto=start type=tunnel authby=secret keyexchange=ike ike=aes128-sha1;modp1024 phase2=esp phase2alg=aes128-sha1;modp1024 pfs=no left=1.1.1.1 leftid=1.1.1.1 leftsourceip=10.0.0.200 leftsubnet=10.0.0.2/16 right=2.2.2.2 rightid=192.168.10.1 rightsubnet=192.168.10.1/24
/etc/ipsec.d/rtx810.secrets
1.1.1.1 192.168.10.1: PSK "HOGEFUGA"
/etc/sysctl.d/50-openswan.conf
net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.ip_forward = 1
これで ipsec verify
に FAIL がなくなって起動するはず。
iptables
esp と udp 500 を開けておく。 あとは他のサーバから Openswan がいるサーバを通って通信させるために forward も許可しておく。
iptables -A INPUT -p udp -m multiport --dports 500 -j ACCEPT iptables -A INPUT -p esp -j ACCEPT iptables -A FORWARD -s 10.0.0.0/16 -d 192.168.10.0/24 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -d 10.0.0.0/16 -j ACCEPT
これで VPN 接続を張れるはず。
route
Openswan を立てているサーバ以外から 192.168.10.0/24 にアクセスするときは 10.0.0.2 を通るようにする。
ip route add 192.168.10.0/24 via 10.0.0.2 dev ens4
とすればいいんだけど、この設定を永続化するために systemd-networkd では network ファイルに書いておく。
/etc/systemd/network/ens4.network
... [Route] Gateway=10.0.0.2 Destination=192.168.10.0/24