質問: VPCPeering接続ができない。 【前提】 ・VPCは同一アカウントで別リージョンにある。(東京―アメリカのどこか) ・VPCPeering自体は問題なく設定できactiveになってる。 ・確認のため共にWindowsを立ててPing疎通を確認しています。 【対象VPC】 ------- 東京 VPC 192.16.*.*/16 アメリカ VPC 10.1.*.*/16 --------------------- 【設定内容】 ・IPのネットワークアドレスは異なる。IP先頭は192と10となっている ・それぞれのルートテーブルに以下のように設定しています。 ◇アメリカ側(ルートテーブル) --------------- ・10.1.0.0.0/16 → local ・192.16.*.*/16 → pcx**** ------------------------ ◇日本側(ルートテーブル) ------------- ・192.16.0.0 → local ・10.1.*.* → PCX**** --------------------- 共に0.0.0.0は切っていません。 peeringのステータスは共にactivです。 両VPCでネットワークの競合はありません。 セキュリティグループはかなり緩めに許可しています。 【調査内容】 EC2インスタンスをたてて、相手のプライベートネットワークに Pingを打っても帰ってきません。 IP直指定で検証したのでDNSは除外して考えております。 Tracertも自ネットワークからでていないようで、ルートテーブルに 問題があるのか、デフォルトゲートウェイに何かしないと いけないのかわかっておりません。 ルートテーブルのPCX****につなぐ部分を0.0.0.0にすれば プライベートIPでアクセスできるのではと考えておりますが それはそれで原因が分かっていないので気持ち悪いです。 【質問事項】 参考は以下のサイトを見ましたがおかしな点がございましたら 教えてください。 参考サイト) https://dev.classmethod.jp/etc/handson-vpc-peering/
回答: 実際に環境を作ってPingを打ってみたら通ったので、詰まりやすいところを記載しました。 次の項目を調べてみてください。 1. 日本側のIPが192.168.0.0/16であるか プライベートアドレスのサブネット領域は10.0.0.0/8,172.16.0.0/12,192.168.0.0/16なので、これがVPCのIPやサブネットのIPになっているか一応確認してください。 私が検証した環境では質問者のIP系を作って行いました。 2. インスタンスが存在するサブネットに対して、VPC-Peeringが設定されているルートテーブルが当たっているか AWSのVPCはサブネット単位でルーティングするようになっています。サブネットに対して意図しているルートテーブルが当たっているか確認してください。特にデフォルトでないルートテーブルにVPCピアリングのルートを書いた場合、変更のし忘れは割と発生します。 3. サブネットのNetworkACLが設定されていないか確認する 基本的に設定されていない部分ですが、SecurityGroupと同様にサブネットレベルでアクセス制限をすることもできます。これが設定されていないか確認してください。 4. SecurityGroupのICMPが開いているか確認する SecurityGroupでPingが許可されている必要があります。対象のサーバー間(プライベートIP)でICMP通信が可能なようになっているか確認してください。 5. OSのファイアウォールが開いているか確認する 上の項目までで私が作成した同様の環境のAmazon Linuxの環境では疎通が取れました。 Windowsではどうか分かりませんのでファイアウォールを一応確認してみてください。 Pingの受け側だけAmazonLinuxにしてICMPだけ開けておけば検証では十分かと思います。 一応、変更が可能であれば192.16.0.0/16というIP系はプライベートIPではないので、可能であれば変更されることをお勧めします。 余談ですが、tracerouteをしたら一発で到達したので、tracerouteはあてにならないと思います。 ``` [ec2-user@ip-10-1-0-136 ~]$ sudo traceroute -In 192.16.195.133 traceroute to 192.16.195.133 (192.16.195.133), 30 hops max, 60 byte packets 1 192.16.195.133 165.215 ms 165.213 ms 165.212 ms ```