AWS上のNAT ゲートウェイの送信元NATについての疑問
同じものを食べ続けて飽きるというのをあまり感じたことがなかったのですが、、
最近「うどん」ばかりを食べていたところ
なんと、、、飽きました。
もうすぐ年末ですが 年越しうどん じゃなくてほんとよかった。。
とどうでもいい話はおいておいて。
どうしてもNAT ゲートウェイの動きで分からないことがあるためこの記事を残しておきます。
ちなみに来年の1月にAWSロフトにいってこの疑問はクリアにしてこようと思いますので
それまでは一旦疑問となっています。
よくわかってないのが
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-nat-gateway.html
のサイトにある
```
VPC エンドポイント、VPN、AWS Direct Connect、VPC ピア接続での NAT ゲートウェイの使用
NAT ゲートウェイは、VPC エンドポイント、VPN 接続、AWS Direct Connect、または VPC ピア接続を通じてトラフィックを送信できません。プライベートサブネットのインスタンスから VPC エンドポイント、VPN 接続、または AWS Direct Connect を通じてリソースにアクセスする場合は、プライベートサブネットのルートテーブルを使用して、これらのデバイスに直接トラフィックをルーティングします。
```
この
NAT ゲートウェイは、VPC エンドポイント、VPN 接続、AWS Direct Connect、または VPC ピア接続を通じてトラフィックを送信できません。
という一文です。
どこがわかってないかを説明するにあたって順序で説明すると
まずNAT Gatewayの使い方ですが
AWSのサイトにある説明だと
「NAT ゲートウェイを作成するには、NAT ゲートウェイの常駐先のパブリックサブネットを指定する必要があります。」
になっているため下記の構成にする必要があるようです。
(送信元NATしたいServerとNATGatwayは同じSubnetにいられない)
この構成は
Private Subnetのルーティング(Subnet毎にあるルーティング)を0.0.0.0/0 → nat-gatewayと設定することで
Private subnetにあるDatabase serversからインターネットへの通信は
Public subnetにあるNAT Gatewayに通信が行きNAT gatewayでElastic IPに送信元NATされて
Public subnetのルーティングが0.0.0.0/0 → igwとなっていることでInternet Gateway経由でインターネットへの通信ができているようです。
この構成は若干AWS内のネットワーク構成がブラックボックスなところもありどう動いているか気になるところもありますが
セオリー通りの構成のため問題なく動作します。
動きがわからないのは
この構成にDirectConnectのVPNgatewayを追加し
Public subnetのルーティングにX.X.X.X/X → vpn gatewayとした場合にNAT gatewayのPublic側のIPで送信元NATされて
DirectConnect経由で通信ができるという点です。
構成図に書くと
①最初のインターネットにNAT Gateway経由で通信できているのがこう
②ここにDirectConnect経由の接続を追加すると
③Public subnetのルーティングにDirectConnect経由の接続192.168.1.1/24 → vpn gateway と追加する
④NAT GatewayのPublic Subnet側で送信元NATされてServerBと通信が可能になる。
動き的にみているとそうゆうものなのかなーっと思うのでうすが
先ほどのAWS のサイトにある下記文章を見ると
```
VPC エンドポイント、VPN、AWS Direct Connect、VPC ピア接続での NAT ゲートウェイの使用
NAT ゲートウェイは、VPC エンドポイント、VPN 接続、AWS Direct Connect、または VPC ピア接続を通じてトラフィックを送信できません。プライベートサブネットのインスタンスから VPC エンドポイント、VPN 接続、または AWS Direct Connect を通じてリソースにアクセスする場合は、プライベートサブネットのルートテーブルを使用して、これらのデバイスに直接トラフィックをルーティングします。
```
NAT ゲートウェイは、VPC エンドポイント、VPN 接続、AWS Direct Connect、または VPC ピア接続を通じてトラフィックを送信できません。
という文言があるためこの動きはダメなのではという気がしています。
ちなみにこの動きができるせいで
私のなかではNAT Gatwayってこうゆう位置付けなのではと勝手におもっているところもあるのですが
AWSの資料通りならこの考え方はなくなるためこの動きがNGな場合は少し残念な気もしています。