インターネットゲートウェイとNAT ゲートウェイの違い
インターネットゲートウェイと NAT ゲートウェイはともに NAT 機能を提供する、インターネット接続時に利用されるオブジェクトです。
今回はインターネット gateway と NAT gateway の違いを比較してみました
インターネットGW | NAT GW | |
---|---|---|
主な機能 | - NAT - VPC ⇔ インターネット間の接続 | - NAT (インターネットとの接続性には インターネットGWが必要) |
NATの種類 | - Static NAT | - Dynamic NAPT |
配置場所 | - VPC | - (パブリック)サブネット |
速度制限 | - 無し | - 5~100 Gbps |
インターネットゲートウェイとは
インターネット GW は Static NAT を行います。つまり、パブリック IP を割り当てられた EC2 インスタンス等は、プライベート IP とパブリック IP が 1 対 1 で変換されます。
Static NAT の場合、NAT テーブルには通信前から「プライベート IP とパブリック IP の変換ルール」が定義されていますので、EC2 から始まる通信であっても、インターネットのクライアントから始まる通信であっても、IP は変換され、通信が可能です。
なのでインターネット GW の使い道は主に「インターネットからのアクセス」と「インターネットへのアクセス」の両方を実現することです。
インターネット GW は VPC に配置します。そしてインターネット GW を使いたい EC2 インスタンスは、「デフォルトルート 0.0.0.0/0 のターゲット」として "インターネットGW" を指定しているルーティングテーブルと関連付けられたサブネット(=パブリックサブネット)上に起動する必要があります。
NAT ゲートウェイとは
一方、NAT-GW はインターネットとの接続は提供せず、単にアドレス変換を行う装置になります。そしてその変換も「EC2 等のプライベート IP アドレス ⇔ NAT-GWの持つプライベート IP アドレス」間の変換になります。つまり NAT-GW はパブリック IP への変換は提供しません。
NAT-GW には Public と Private がありますが、デフォルトの Public である場合、インターネット GW との接続が可能になりますが、このときもパブリック IP アドレスに変換するのはインターネット GWです。
インターネット GW との間に NAT-GW を挟むことはセキュリティ上、大きな意義を持ちます。というのも NAT-GW は NAPT という仕組みを使っており「インターネットからのアクセス」が不可になるからです。
NAPT について
複数のプライベート IP を 1 つのパブリック IP に変換してしまうと、戻りの通信においてどの通信がどのプライベート IP に変換すればいいか一意に定まらなくなってしまうので、TCP/UDP ポート番号も変換することでそれを回避しています。このような NAT 方式を「動的 NAPT (ナプト)=Dynamic NAPT」と呼びます。
動的 NAPT では NAT テーブルは初期状態では空です。プライベート IP が入ってきたタイミングで変換と同時に動的に NAT エントリが生成されます。NAT エントリには変換前後の IP:TCP/UDP port ( or ICMP) が含まれますので、インターネットからの戻りの通信はそのエントリを使って元の IP:TCP/UDP port (or ICMP) に戻されます。
つまりインターネットから始まる通信は (NAT エントリが無いので) アクセスできません。つまり、セキュリティを高めることができる、というメリットがあります。これは一般的な家庭 NAT ルータと同等の動きです。
NAT-GW の使い道は主に「インターネットからはアクセスされたくないけどインターネットへのアクセスは実施したい」というケースです。
なお、NAT-GW だけではインターネットとの接続性がありませんので、NAT-GW は「パブリックサブネット」に配置します。
「パブリックサブネット」とは、デフォルトルートのターゲットが「インターネットGW」となっているルーティングテーブルに関連付けられたサブネットです。
つまり、NAT-GW を使ってインターネットに出ていくためには、インターネット GW は必須ということです。
コメント
Public SubnetにあるEC2からInternet Gateway経由でInternetへアクセスする場合、
Public IPもしくはEIPが必要です。
以下の公式回答もありますし、実際に上記ケースでは「Public IP」が必要でした。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/create-attach-igw-vpc/
よって、本ページの以下のInternet Gatewayの説明は誤りだと思います。
>インターネット GW は Static NAT を行います。
>つまり、パブリック IP を割り当てられた EC2 インスタンス等は、
>プライベート IP とパブリック IP が 1 対 1 で変換されます。
NAT Gatewayは、Private IPとPublic IPをアドレス変換しています。
(NAT Gatewayの設定を見ると明らかに。)
つまり、Internet Gatewayに入る前に「Public IP」になっています。
よって、Internet Gatewayは「Public IP」同士の「ゲートウェイ(橋渡し)」をしているようです。
よろしくお願いいたします。
コメントありがとうございます。
EC2インスタンスにパブリックIPを設定しても、OSにログインしてIPを確認すると、プライベートIPしか割り当たっていないことがわかります。
プライベートIPではインターネットに出たところで当然帰りのルートがなく通信不可となるため、どこかでパブリックIPに変換する必要があります。それがインターネットGWだったりNAT-GWだったりします。
ここで言っているのは、EC2インスタンスにパブリックIPを設定すると、それがインターネットGWのNAT設定に反映される、ということです。
>つまり、パブリック IP を割り当てられた EC2 インスタンス等は、
>プライベート IP とパブリック IP が 1 対 1 で変換されます。
というのは、パブリックIPの割り当てが必要だという意味ですので、説明としては間違っていないかなと思っています。
また、NAT-GWを経由する場合は、先にここでプライベートIPからパブリックIPへの変換が為されるので、インターネットGWでは変換しません。(NATルールに引っ掛からないため)
この説明なら通じますでしょうか?
誤解の無いよう、ちょっと構成を見直してみたいと思います。
この上なく非常に分かりやすい説明で理解が深まりました。ありがとうございます!
hogeさん、コメント頂きありがたいです。
とても励みになります。
これからもどうぞ本サイトを宜しくお願いします。
この記事のおかげでもやもやしてたところが晴れました。
素晴らしい記事ありがとうございます!
> yamada さん
コメントありがとうございます。励みになります。
お役に立てたようで何よりです。
今後も本サイトをどうぞよろしくお願いします。
いつも参考にさせていただいています。NATゲートウェイのドキュメントに以下の通り記載がありますので、NAT GWの図の「Internet Gatewayはインターネットへのルーティングのみを実行(NATはしない)」という説明は実態と異なるのではないかと思うのですがいかがでしょうか。
プライベート NAT ゲートウェイとパブリック NAT ゲートウェイはどちらも、インスタンスの送信元プライベート IPv4 アドレスを NAT ゲートウェイのプライベート IPv4 アドレスにマッピングしますが、パブリック NAT ゲートウェイの場合、インターネットゲートウェイはパブリック NAT ゲートウェイのプライベート IPv4 アドレスを NAT ゲートウェイに関連付けられた Elastic IP アドレスにマッピングします。
((https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-nat-gateway.html)
NAT GatewaryはプライベートIPをプライベートIPに変換するだけなので、通常のEC2インスタンスからの通信でもNAT Gatewayからの通信でもInternet GatewayがプライベートIPとパブリックIPの変換を行っているという認識です。
> mitchy さん
コメントありがとうございます。ご指摘いただいた通り、私が間違った理解をしておりました。
記事 (と私の認識) を修正させて頂きたいと思います。
今後もぜひ何か気になる点があったときコメント頂けるとありがたいです。