この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
今度は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でもゴールは達成です。お疲れ様でした!