以前紹介した、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)が正常に設定されていることがわかります。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら