複数のAmazon VPCのプライベートネットワークをOpenswanを使って接続する
今度はOpenswanだっ。OpenVPNはSSL-VPNの実装でしたが、OpenswanはIPsec-VPNの実装です。
共通手順
前半の手順はOpenVPN編と全く同じです。「OpenVPNのインストールと設定」の直前まで(「IPv4フォワーディングの有効化」のセクションまで)を読んで、作業してください。
OpenVPN編を実際にやってみた方は、その環境で、openvpnのプロセスを止めてしまえば、引き続きこのOpenswan編もお楽しみ頂けます。
Openswanのインストールと設定
VPC Instance-AにおけるOpenswanのインストールと設定
まず、Openswanをインストール。
$ sudo yum -y install openswan
続いて、設定ファイルを作成します。 /etc/ipsec.conf というファイルの末尾にある「include /etc/ipsec.d/*.conf」のコメントアウトを外します。さらに、 /etc/ipsec.d/a-to-b.conf というファイルに下記の内容を記述します。「{VPN Instance-AのEIP}」及び「{VPN Instance-BのEIP}」は適宜置換してください。
conn a-to-b type=tunnel authby=secret left=%defaultroute leftid={VPN Instance-AのEIP(つまり自分のEIP)} leftnexthop=%defaultroute leftsubnet=10.0.0.0/16 right={VPN Instance-BのEIP(つまり相手のEIP)} rightsubnet=10.1.0.0/16 pfs=yes auto=start
さらに /etc/ipsec.d/a-to-b.secrets というファイルに下記の内容を記述します。
{VPN Instance-AのEIP(つまり自分のEIP)} {VPN Instance-BのEIP(つまり相手のEIP)}: PSK "foobar"
ちなみに上記の foobar の部分が、通信の暗号化に利用する共通鍵となります。実運用の際は、適切なパスフレーズに変更してください。
VPC-AのOpenswanを起動します。
$ sudo service ipsec start
VPC Instance-BにおけるOpenswanのインストールと設定
こちらも同様に、Openswanをインストール。
$ sudo yum -y install openswan
同じように /etc/ipsec.conf というファイルの末尾にある「include /etc/ipsec.d/*.conf」のコメントアウトを外します。さらに、 /etc/ipsec.d/b-to-a.conf というファイルに下記の内容を記述します。「{VPN Instance-AのEIP}」及び「{VPN Instance-BのEIP}」は適宜置換してください。
conn b-to-a type=tunnel authby=secret left=%defaultroute leftid={VPN Instance-BのEIP(つまり自分のEIP)} leftnexthop=%defaultroute leftsubnet=10.1.0.0/16 right={VPN Instance-AのEIP(つまり相手のEIP)} rightsubnet=10.0.0.0/16 pfs=yes auto=start
さらに /etc/ipsec.d/b-to-a.secrets というファイルに下記の内容を記述します。
{VPN Instance-BのEIP(つまり自分のEIP)} {VPN Instance-AのEIP(つまり相手のEIP)}: PSK "foobar"
VPC-BのOpenswanを起動します。
$ sudo service ipsec start
ゴールの検証
以上で、VPN接続が確立したはずです。各インスタンスから相互にpingを飛ばし合って、全組み合わせで問題なくpingの到達応答があることを確認します。さらにtracerouteで通信経路も確認してみます。
まずは、アイルランドTerminal-AからサンパウロTerminal-Bへ。
[ec2-user@ip-10-0-1-30 ~]$ ping -c2 10.1.1.40 PING 10.1.1.40 (10.1.1.40) 56(84) bytes of data. 64 bytes from 10.1.1.40: icmp_seq=1 ttl=62 time=216 ms 64 bytes from 10.1.1.40: icmp_seq=2 ttl=62 time=214 ms --- 10.1.1.40 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1216ms rtt min/avg/max/mdev = 214.771/215.638/216.506/0.983 ms [ec2-user@ip-10-0-1-30 ~]$ traceroute 10.1.1.40 traceroute to 10.1.1.40 (10.1.1.40), 30 hops max, 60 byte packets 1 10.0.0.10 (10.0.0.10) 1.856 ms 1.824 ms 1.856 ms 2 10.1.0.20 (10.1.0.20) 216.433 ms 216.488 ms 216.467 ms 3 10.1.1.40 (10.1.1.40) 216.732 ms 216.714 ms 216.687 ms
続いて、サンパウロTerminal-BからアイルランドTerminal-Aへ。
[ec2-user@ip-10-1-1-40 ~]$ ping -c2 10.0.1.30 PING 10.0.1.30 (10.0.1.30) 56(84) bytes of data. 64 bytes from 10.0.1.30: icmp_seq=1 ttl=62 time=214 ms 64 bytes from 10.0.1.30: icmp_seq=2 ttl=62 time=214 ms --- 10.0.1.30 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1216ms rtt min/avg/max/mdev = 214.549/214.613/214.678/0.467 ms [ec2-user@ip-10-1-1-40 ~]$ traceroute 10.0.1.30 traceroute to 10.0.1.30 (10.0.1.30), 30 hops max, 60 byte packets 1 10.1.0.20 (10.1.0.20) 0.293 ms 0.267 ms 0.244 ms 2 10.0.0.10 (10.0.0.10) 214.257 ms 214.466 ms 214.447 ms 3 10.0.1.30 (10.0.1.30) 214.975 ms 214.957 ms 214.933 ms
以上で、Openswanでもゴールは達成です。お疲れ様でした!