AWSを触っていてめちゃくちゃハマったところをまとめました。
エンジニア初心者だからこそ、気づきにくい部分多かったです。
何かしらの参考になれば!!!
結論:VPCピアリングとNATゲートウェイがある環境で、パブリックサブネットのルートテーブルにインターネットゲートウェイとピアリングのルート、プライベートサブネットのルートテーブルにNATゲートウェイのルートしかない場合、プライベートサブネットから他VPCへ行く通信はNATゲートウェイを通る
まず下記のような構成は珍しくないと思います。
全てのルートテーブルにピアリングのルートがあるパターンです。
ピアリングにルートがある場合、直接的にVPC間の通信が行われます。
しかし、下記のような構成ならどのように通信するのでしょうか?
パブリックサブネットのルートテーブルにのみ、ピアリングへのルートがある場合です。
私は最初、この場合Natゲートウェイを通過せず、なんとなくルーティングがうまくいって、異なるVPCのプライベートサブネット間で通信ができていると考えていました。
しかし、実際はNatゲートウェイを経由していたのです。
プライベートサブネットのルートテーブルには、宛先がない通信はNatゲートウェイに行くルートがあるため、プライベートサブネット内のインスタンス等が、VPCピアリングを通じて通信したい場合、まずNatゲートウェイに通信が行きます。
Natゲートウェイでは接続タイプがpublic、privateとありますが、いずれかでも送信元IPアドレスの変換が発生し、そのIPアドレスはNatゲートウェイのプライベートのIPとなります
ここでややこしくなるのがセキュリティグループです。
例えば図の右のプライベートサブネットで、図の左のプライベートサブネットからの通信のみ許可するなどの制限をかける場合、許可する対象はNatゲートウェイのプライベートIPとなります。
このような構成の場合、プライベートサブネット内のインスタンス等に制限をかけにくくなる、具体的なパフォーマンスの指標はありませんが、通信速度が低下する可能性があります。
このような構成の場合、プライベートサブネット内のインスタンスのIpで制限かけても意味ないんですよね。。。。。
めちゃくちゃハマりました。。。。。