VyattaによるVPC間接続
Vyattaを使ってVPCとVPCをつないでみた。
VPCとVPCの間は通常直接(プライベートアドレスで)の通信ができませんが、VPNを張れば可能となります。
構成
VPCの設定
- SecurityGroupの設定
Vyatta用のSecurityGroup(vyatta)、クライアント用のSecurityGroupI(client)を用意しておく
vyattaは、sshと相手のEIPからの1194/tcp、clientからのAll Trafficを空けておきます。
clientはとりあえずssh/pingだけ空けました。 - Source/Dest check
Vyattaのインスタンスは Source/Dest checkをdisableしておく(インスタンス画面で右クリックから設定できます) - Route Tableの設定
0.0.0.0/0をigwに振る
相手のサブネットにはサブネット内のVyattaのインスタンスIDを指定する
Vyattaの設定
Vyattaのドキュメント Vyatta_VPN_R6.3_v01.pdfの 338ページあたり "Site‐to‐Site Mode with Pre‐Shared Secret" を参照しつつ作業。
それぞれのVyattaにログインして、以下のコマンドを投入。
Vyatta1
vyatta@vyatta:~$ generate vpn openvpn-key /config/auth/secret (このファイルをvyatta2の同じ場所に設置する必要がある) vyatta@vyatta:~$ configure [edit] vyatta@vyatta# set interfaces openvpn vtun0 local-address 192.168.200.1 vyatta@vyatta# set interfaces openvpn vtun0 mode site-to-site vyatta@vyatta# set interfaces openvpn vtun0 remote-address 192.168.200.2 vyatta@vyatta# set interfaces openvpn vtun0 remote-host 5.6.7.8 vyatta@vyatta# set interfaces openvpn vtun0 shared-secret-key-file /config/auth/secret vyatta@vyatta# set protocols static interface-route 10.1.0.0/24 next-hop-interface vtun0 vyatta@vyatta# commit vyatta@vyatta# save
Vyatta2
vyatta@vyatta:~$ sudo vi /config/auth/secret (Vyatta1と同じになるように編集) vyatta@vyatta:~$ sudo chmod 600 /config/auth/secret vyatta@vyatta:~$ configure [edit] vyatta@vyatta# set interfaces openvpn vtun0 local-address 192.168.200.2 vyatta@vyatta# set interfaces openvpn vtun0 mode site-to-site vyatta@vyatta# set interfaces openvpn vtun0 remote-address 192.168.200.1 vyatta@vyatta# set interfaces openvpn vtun0 remote-host 1.2.3.4 vyatta@vyatta# set interfaces openvpn vtun0 shared-secret-key-file /config/auth/secret vyatta@vyatta# set protocols static interface-route 10.0.0.0/24 next‐hop‐interface vtun0 vyatta@vyatta# commit vyatta@vyatta# save
これで疎通がとれているか確認する
vyatta@vyatta:~$ ping 192.168.200.2 PING 192.168.200.2 (192.168.200.2) 56(84) bytes of data. 64 bytes from 192.168.200.2: icmp_req=1 ttl=64 time=3.49 ms 64 bytes from 192.168.200.2: icmp_req=2 ttl=64 time=3.45 ms 64 bytes from 192.168.200.2: icmp_req=3 ttl=64 time=3.40 ms 64 bytes from 192.168.200.2: icmp_req=4 ttl=64 time=3.72 ms ^C --- 192.168.200.2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 3.402/3.518/3.726/0.137 ms vyatta@vyatta:~$ ping 10.1.0.254 PING 10.1.0.254 (10.1.0.254) 56(84) bytes of data. 64 bytes from 10.1.0.254: icmp_req=1 ttl=64 time=3.51 ms 64 bytes from 10.1.0.254: icmp_req=2 ttl=64 time=3.42 ms 64 bytes from 10.1.0.254: icmp_req=3 ttl=64 time=3.36 ms 64 bytes from 10.1.0.254: icmp_req=4 ttl=64 time=3.58 ms ^C --- 10.1.0.254 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 3.365/3.472/3.589/0.111 ms
インスタンス間の疎通確認
10.0.0.4 と 10.1.0.4で Amazon Linux AMIを起動した
[ec2-user@ip-10-0-0-4 ~]$ ping 10.1.0.4 PING 10.1.0.4 (10.1.0.4) 56(84) bytes of data. 64 bytes from 10.1.0.4: icmp_seq=1 ttl=62 time=4.49 ms 64 bytes from 10.1.0.4: icmp_seq=2 ttl=62 time=4.16 ms 64 bytes from 10.1.0.4: icmp_seq=3 ttl=62 time=4.18 ms 64 bytes from 10.1.0.4: icmp_seq=4 ttl=62 time=4.18 ms ^C --- 10.1.0.4 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3333ms rtt min/avg/max/mdev = 4.169/4.258/4.499/0.160 ms [ec2-user@ip-10-0-0-4 ~]$ traceroute 10.1.0.4 traceroute to 10.1.0.4 (10.1.0.4), 30 hops max, 60 byte packets 1 10.0.0.254 (10.0.0.254) 0.475 ms 0.460 ms 0.439 ms 2 192.168.200.2 (192.168.200.2) 4.420 ms 4.411 ms 4.444 ms 3 10.1.0.4 (10.1.0.4) 4.297 ms 4.420 ms 4.554 ms [ec2-user@ip-10-0-0-4 ~]$ ssh 10.1.0.4 Last login: Tue Dec 13 18:31:56 2011 from 10.0.0.4 __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| See /usr/share/doc/system-release/ for latest release notes. [ec2-user@ip-10-1-0-4 ~]$
ちゃんと繋がりましたね。