SREとはのブログ

日々の作業メモ

AWS上のNAT ゲートウェイの送信元NATについての疑問

同じものを食べ続けて飽きるというのをあまり感じたことがなかったのですが、、

最近「うどん」ばかりを食べていたところ

なんと、、、飽きました。

もうすぐ年末ですが 年越しうどん じゃなくてほんとよかった。。

 

とどうでもいい話はおいておいて。

 

先日、AWSNAT ゲートウェイを触る機会があり

どうしてもNAT ゲートウェイの動きで分からないことがあるためこの記事を残しておきます。

ちなみに来年の1月にAWSロフトにいってこの疑問はクリアにしてこようと思いますので

それまでは一旦疑問となっています。

 

よくわかってないのが

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-nat-gateway.html

のサイトにある

 

```

VPC エンドポイント、VPNAWS Direct ConnectVPC ピア接続での 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したいServerNATGatwayは同じSubnetにいられない)

 

f:id:taishibrown3:20181226174933p:plain

 

この構成は

Private Subnetのルーティング(Subnet毎にあるルーティング)を0.0.0.0/0 → nat-gatewayと設定することで

Private subnetにあるDatabase serversからインターネットへの通信は

Public subnetにあるNAT Gatewayに通信が行きNAT gatewayElastic IPに送信元NATされて

Public subnetのルーティングが0.0.0.0/0 → igwとなっていることでInternet Gateway経由でインターネットへの通信ができているようです。

 

この構成は若干AWS内のネットワーク構成がブラックボックスなところもありどう動いているか気になるところもありますが

セオリー通りの構成のため問題なく動作します。

 

動きがわからないのは

この構成にDirectConnectVPNgatewayを追加し

Public subnetのルーティングにX.X.X.X/X → vpn gatewayとした場合にNAT gatewayPublic側のIPで送信元NATされて

DirectConnect経由で通信ができるという点です。

 

構成図に書くと

 

①最初のインターネットにNAT Gateway経由で通信できているのがこう

f:id:taishibrown3:20181226175002p:plain

 

②ここにDirectConnect経由の接続を追加すると

f:id:taishibrown3:20181226175019p:plain

 

Public subnetのルーティングにDirectConnect経由の接続192.168.1.1/24 → vpn gateway と追加する

f:id:taishibrown3:20181226175041p:plain

 

NAT GatewayPublic Subnet側で送信元NATされてServerBと通信が可能になる。

f:id:taishibrown3:20181226175109p:plain



 

 

動き的にみているとそうゆうものなのかなーっと思うのでうすが

先ほどのAWS のサイトにある下記文章を見ると

 

```

VPC エンドポイント、VPNAWS Direct ConnectVPC ピア接続での NAT ゲートウェイの使用

NAT ゲートウェイは、VPC エンドポイント、VPN 接続、AWS Direct Connect、または VPC ピア接続を通じてトラフィックを送信できません。プライベートサブネットのインスタンスから VPC エンドポイント、VPN 接続、または AWS Direct Connect を通じてリソースにアクセスする場合は、プライベートサブネットのルートテーブルを使用して、これらのデバイスに直接トラフィックをルーティングします。

```

 

NAT ゲートウェイは、VPC エンドポイント、VPN 接続、AWS Direct Connect、または VPC ピア接続を通じてトラフィックを送信できません。

という文言があるためこの動きはダメなのではという気がしています。

 

ちなみにこの動きができるせいで

私のなかではNAT Gatwayってこうゆう位置付けなのではと勝手におもっているところもあるのですが

AWSの資料通りならこの考え方はなくなるためこの動きがNGな場合は少し残念な気もしています。

 

f:id:taishibrown3:20181226175130p:plain