前回、下記のようにEC2上のVyataから別のVPC(VGW)へVPN接続することに成功しました。

"Vyatta on EC2"から"VPC"に"VPN Connection"

今回は、下図のようにVyattaとVGWを通じて二つのVPC上のEC2が"Private IP"でお互いに透過的にアクセスできるようにしてみます。

まずVyattaのEC2インスタンスは、例の”Source / Dest Check”を無効にしておきます。

次に、Vyatta以外のEC2(別VPCのEC2に透過的にアクセスしたいEC2)が所属するサブネットのルーティングテーブルを、別VPC(10.0.0.0/16)のEC2宛がVyattaに向くように設定します。

そして、今回登場するすべてのEC2に対して、二つのVPCを包括するネットワークアドレスへの通信ができるように、セキュリティグループも設定しておきます。

最後にVyattaに対して、スタティックルーティングとBGPの広報するネットワークアドレスを設定します。

# show protocols
 bgp 65001 {
     neighbor 169.254.252.25 {
         remote-as 10124
         soft-reconfiguration {
             inbound
         }
         timers {
             holdtime 30
             keepalive 30
         }
     }
     neighbor 169.254.252.29 {
         remote-as 10124
         soft-reconfiguration {
             inbound
         }
         timers {
             holdtime 30
             keepalive 30
         }
     }
     network 10.1.0.0/16 {
     }
 }
 static {
     route 10.1.0.0/16 {
         next-hop 10.1.0.1 {
         }
     }
 }

自分のVPCのネットワークアドレス(10.1.0.0/16)をBGPで広報するには、”10.1.0.0/16″のスタティックルーティングも指定する必要があります。
※解決にご協力いただいた皆様、ありがとうございました!

ここまで問題なく完了すると、Vyattaが接続するVPC(10.0.0.0/16)のサブネット(10.0.0.0/24)のルーティングテーブルに上記で設定した10.1.0.0/16のルーティングが反映されていることが確認できます。

この状態で、10.0.0.5のEC2からVyatta側のEC2(10.1.1.5)に疎通確認すると、無事、通信できていることが確認できるはずです。

# ping 10.1.1.5
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
64 bytes from 10.1.1.5: icmp_seq=1 ttl=62 time=3.81 ms
64 bytes from 10.1.1.5: icmp_seq=2 ttl=62 time=3.85 ms
64 bytes from 10.1.1.5: icmp_seq=3 ttl=62 time=3.56 ms
64 bytes from 10.1.1.5: icmp_seq=4 ttl=62 time=3.60 ms
64 bytes from 10.1.1.5: icmp_seq=5 ttl=62 time=3.52 ms
# traceroute 10.1.1.5
traceroute to 10.1.1.5 (10.1.1.5), 30 hops max, 60 byte packets
 1  169.254.252.1 (169.254.252.1)  0.558 ms  0.574 ms  0.775 ms
 2  169.254.252.25 (169.254.252.25)  0.621 ms  0.831 ms  0.787 ms
 3  169.254.252.26 (169.254.252.26)  3.587 ms  3.804 ms  3.738 ms
 4  10.1.1.5 (10.1.1.5)  4.475 ms  4.135 ms  4.383 ms

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