以前紹介した、VPC上にOpenVPN(CentOS6)をインストールとMac(10.8)からCentOS(6.3)にOpenVPNでVPN接続の記事で、VPC上にOpenVPNサーバを構築し、適当なクライアント(Mac)からVPN接続ができるようになりました。
そこで今回は、上記のVPN接続で下記の様なVPC上のプライベートなサブネットに配置されているEC2との通信を行います。
はじめにOpenVPN Serverの設定ですが、このEC2インスタンスはNATインスタンスである必要がある為、下記のようにSource / Dest Checkを無効にします。
そして、下記のように/etc/sysctl.confを設定しIPフォワード機能を有効にします。
# Controls IP packet forwarding #net.ipv4.ip_forward = 0 net.ipv4.ip_forward = 1
/etc/sysctl.confの反映は次のコマンドで行います。
# sysctl -p
さらに、OpenVPNクライアントでVPCのサブネットに関するルーティングを設定する為、OpenVPNサーバの設定(/etc/openvpn/server.conf)に下記を追加します。
push "route 10.0.0.0 255.255.255.0" push "route 10.0.2.0 255.255.255.0"
Publicサブネット(10.0.0.0/24)のNATインスタンスとPrivateサブネット(10.0.2.0/24)のEC2インスタンスにOpenVPNクライアントからアクセスできるように設定しています。
最終的なOpenVPNサーバの設定ファイルは次のようになっています。
# grep -v "^#" /etc/openvpn/server.conf | grep -v "^;" | grep -v "^$" port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 10.0.0.0 255.255.255.0" push "route 10.0.2.0 255.255.255.0" keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3
ここまでの設定で、OpenVPNクライアント(10.8.0.6)からOpenVPNサーバ(10.0.0.166)に通信できるようになります。
(OpenVPNサーバの10.8.0.1の方は既に通信できています)
$ ping 10.0.0.166 PING 10.0.0.166 (10.0.0.166): 56 data bytes 64 bytes from 10.0.0.166: icmp_seq=0 ttl=64 time=10.960 ms 64 bytes from 10.0.0.166: icmp_seq=1 ttl=64 time=11.723 ms 64 bytes from 10.0.0.166: icmp_seq=2 ttl=64 time=11.373 ms
最後にPrivateサブネット(10.0.2.0/24)と通信する為の設定です。
設定としては、このサブネットの10.8.0.0/24(OpenVPNクライアント)へのルーティングを下記のようにNATインスタンス(OpenVPNサーバ)にするのみとなります。
以上で準備が完了したので、接続テストをしてみます。
まず、PrivateサブネットのEC2(10.0.2.54)からOpenVPNで接続したオフィスのMac(10.8.0.6)に通信してみます。
# ping 10.8.0.6 PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data. 64 bytes from 10.8.0.6: icmp_seq=1 ttl=63 time=17.5 ms 64 bytes from 10.8.0.6: icmp_seq=2 ttl=63 time=17.3 ms 64 bytes from 10.8.0.6: icmp_seq=3 ttl=63 time=18.3 ms
無事、通信できました。
次は、オフィスのMac(10.8.0.6)からEC2(10.0.2.54)への接続テストです。
$ ping 10.0.2.54 PING 10.0.2.54 (10.0.2.54): 56 data bytes 64 bytes from 10.0.2.54: icmp_seq=0 ttl=63 time=7.907 ms 64 bytes from 10.0.2.54: icmp_seq=1 ttl=63 time=14.115 ms 64 bytes from 10.0.2.54: icmp_seq=2 ttl=63 time=13.294 ms
尚、オフィスのMacのルーティングは下記の通りです。
$ netstat -nr Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 10.33.22.253 UGSc 27 0 en2 10/24 10.8.0.5 UGSc 0 0 tun0 10.0.2/24 10.8.0.5 UGSc 1 0 tun0 10.8.0.1/32 10.8.0.5 UGSc 0 0 tun0 10.8.0.5 10.8.0.6 UH 4 0 tun0 10.33.22/24 link#7 UCS 2 0 en2 10.33.22.53 127.0.0.1 UHS 0 0 lo0 10.33.22.253 0:9:41:fa:7a:35 UHLWIir 28 0 en2 1097 10.33.22.255 ff:ff:ff:ff:ff:ff UHLWbI 0 1 en2 127 127.0.0.1 UCS 0 0 lo0 127.0.0.1 127.0.0.1 UH 6 20896 lo0 169.254 link#7 UCS 0 0 en2
上記より、OpenVPNサーバからプッシュしたルーティング(10.0.0.0/24と10.0.2.0/24)が正常に設定されていることがわかります。