自宅(動的IPアドレス)とVPS(固定IPアドレス)の間で、IPsec トンネルを常時接続してみる。これには、自宅のIPアドレスが変わっても、VPS 経由で自宅に入れるというメリットがある。
VPS の OS: CentOS 7.5
自宅サーバのOS: Raspbian 9.4 (Raspberry Pi)
IPsec ソフトウェア: strongswan
1. VPS 側
strongswan をインストールする。
[user@myvps1 ~]$ sudo yum install epel-release
[user@myvps1 ~]$ sudo yum install strongswan
通過パケットを転送できるように、カーネルパラメータを変更する。
[user@myvps1 ~]$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1 #追記する
[user@myvps1 ~]$ sudo sysctl -p /etc/sysctl.conf
ipsec.conf を編集する。
[user@myvps1 ~]$ sudo vi /etc/strongswan/ipsec.conf
conn myhome-to-vps authby=secret auto=add closeaction=clear dpdaction=clear left=203.0.113.180 leftsubnet=203.0.113.180/32 right=%any #相手側IPアドレスは不明なので%anyにしておく rightsubnet=192.168.100.0/24
事前共有鍵を設定する。
[user@myvps1 ~]$ sudo vi /etc/strongswan/ipsec.secrets
: PSK "mypresharedkey"
サービスを起動する。
[user@myvps1 ~]$ sudo systemctl enable strongswan
[user@myvps1 ~]$ sudo systemctl start strongswan
2. 自宅側
strongswan をインストールする。
user@myserver1:~$ sudo apt install strongswan
通過パケットを転送できるように、カーネルパラメータを変更する。
user@myserver1:~$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1 #28行目のコメントを外す
user@myserver1:~$ sudo sysctl -p /etc/sysctl.conf
ipsec.conf を編集する。
user@myserver1:~$ sudo vi /etc/ipsec.conf
conn myhome-to-vps authby=secret auto=start #自動的にこちらから接続する closeaction=restart dpdaction=restart left=192.168.100.240 leftsubnet=192.168.100.0/24 right=203.0.113.180 rightsubnet=203.0.113.180/32
VPS 側と同じ事前共有鍵を設定する。
user@myserver1:~$ sudo vi /etc/ipsec.secrets
: PSK "mypresharedkey"
サービスを起動する。
user@myserver1:~$ sudo systemctl enable strongswan
user@myserver1:~$ sudo systemctl start strongswan
以上の設定で接続できる。NAPT を越えることが自動的に検出されて、IPsec パケットは NAT-Traversal でカプセル化される。iptables で UDP 4500 が閉じられている場合は、ACCEPT するように変更しておく。