インターネットゲートウェイとNATゲートウェイは、AWSでセキュリティを担保したいAPIサーバーなどを立てる際に使うオブジェクトです。それぞれの大雑把な違いと使い方について参考URLの内容を引用しつつ、説明します。
インターネットゲートウェイとNATゲートウェイの違い
インターネットゲートウェイ | NATゲートウェイ | |
---|---|---|
用途 | インターネットへの相互アクセスの窓口 | 外部アクセス禁止としたいサーバーの踏み台 |
配置場所 | VPC(サブネットには紐付かない?) | public サブネット |
NATの種類 | static NAT(1対1変換) | Dynamic NAT(多対1変換) |
インターネットゲートウェイ
インターネットゲートウェイは、static NAT(1対1変換)を行います。
具体的に言うと、VPC内に配置されたEC2インスタンスに割り当てられたprivate IPを public IPへ1対1変換することを指します。
またその変換を伴う通信は、EC2からでもインターネット外からでも可能となります。
通信がなくてもインターネットゲーなくてもにNATエントリが存在し、このエントリに登録されたIPを元に変換が行われます。
インターネットゲートウェイを使う際の設定
- インターネットゲートウェイはVPCに配置
- public サブネット上にEC2を配置
- public サブネットにルーティングテーブルを紐付ける(「デフォルトルート 0.0.0.0/0 」のターゲットをインターネットゲートウェイとする)
この場合のEC2は、外部から自由にアクセスされてしまうため、セキュリティを担保したい場合は、この構成は不適切。 外部からのアクセスを點せたくない場合、NATゲートウェイを用います。
NATゲートウェイ
NATゲートウェイは、dynamic NAT(多対1変換)を行います。
具体的に言うと、VPC内のprivateサブネットが紐付けられた複数のEC2インスタンスに割り当てられたprivate IPを NATゲートウェイにおいてpublic IPへ多対1変換することを指します。
またその変換を伴う通信は、EC2からのみで可能となります。
インターネット経由のアクセスにおいては、public IPからどの private IPに変換すべきか判別できないため、アクセス不可とすることができ、これによってprivateサブネットに紐付けられたEC2インスタンスのセキュリティを担保することが可能となります。
EC2からインターネットへのアクセス
EC2からインターネットへのアクセスにおけるレスポンスは、どうやって各EC2インスタンスに戻すのでしょうか。 EC2インスタンスがNATゲートウェイを通る際に「NATエントリ」を生成します。このエントリには、EC2インスタンスのTCP/UDPポート番号が登録されており、このポート番号を用いて、レスポンスを指定のEC2インスタンスに返却することができます。
NATゲートウェイを使う際の設定
- インターネットゲートウェイはVPCに配置
- NATゲートウェイをpublic サブネットに紐付けて配置
- public サブネットにルーティングテーブルを紐付ける(「デフォルトルート 0.0.0.0/0 」のターゲットをインターネットゲートウェイとする)
- EC2インスタンスをprivateサブネットに紐付けて配置
- privateサブネットにルーティングテーブルを紐付ける(「デフォルトルート 0.0.0.0/0 」のターゲットをNATゲートウェイとする)