これ と これ と これは私の質問にかなり関連しています。多くの人々の疑問に答えたようですが、このセットアップがAWSに固有のものなのか、それとも一般的なネットワークに固有のものなのか、私はまだ理解に苦労しています。後者の場合は、基本を再確認する必要があります。私はそれをすでに疑っています、そしてそれ故に質問。
私の理解
プライベートネットワークがインターネットに接続されている場合、そのホストはインターネット上で一意に識別できるようにパブリックIPを持っている必要があります。インバウンドまたはアウトバウンドのインターネットへのすべてのトラフィックは、このパブリックIPアドレスで発生します。このネットワークからのホストは、インターネットに接続するとパブリックIPを取得します。このホストから発信されたwww.google.comのパケットは、パケット内にホストのプライベートアドレスが含まれ、最終的にNATデバイス(ルーター/デフォルトゲートウェイ)これは、次のように表示されます ここ これは、ほとんどのインターネット(IPV6を除く)が動作する方法です。
今、AWSで
プライベートサブネット(を作成して、インターネットゲートウェイに接続しないことで)、それをプライベートに保ちます。次に、意識的にauto-assign Public IPを無効にしたままにします。このプライベートサブネット内でEC2インスタンスを起動しても、EC2コンソールでパブリックIPを確認することはできません。これは、このサブネットのインスタンスがインターネットから見えないことも意味します。ここで、このプライベートサブネットをNATデバイス(もちろん、パブリックサブネット上にあります)に接続する場合)(私をaと混同しないでくださいNAT現時点でゲートウェイの方が優れています)次に、本質的に、NATデバイスに割り当ててパブリックIPを把握するパブリックIPとしてインターネットとの通信を要求したプライベートサブネットからの特定のホストX isインターネットとの通信に必要です。
さて、
NATゲートウェイの機能を誤解していると思いますが、それが他のすべての混乱につながります。
NATは内部/プライベートホストにランダムにアドレスを割り当てません。
NATデバイスには通常、プライベートIPを持つ2つのインターフェース-internalがあります。 10.0.0.1。そしてexternalはパブリックIP、例えば1.2.3.4。
たとえば、いくつかの10.0.0.x
アドレスを持つ(パブリックなし)内部ネットワークからのホストは、すべての送信トラフィックをNATゲートウェイに送信し、そのNATゲートウェイがソースを置き換えますIPパケット内(たとえば、10.0.0.123
)と独自のpublic IP(つまり、1.2.3.4
)。次に、インターネット上の宛先にパケットを送信します。グーグルへ。
TCPパケットには、送信元と宛先addressesだけでなく、送信元と宛先portsもあります。複数のホストが同じ送信元ポートと通信しようとしたときに衝突を回避するために、送信元ポートをNATゲートウェイで置き換えることもできます。
NATの説明:
内部ホスト10.0.0.123
がgoogle.comから216.58.203.110
でHTTPS経由で何かをダウンロードしようとしています(ポート443
など)。
送信元10.0.0.123:12345
(アドレス:ランダムなローカルポート)と宛先216.58.203.110:443
(アドレス:httpsポート)を含むパケットをNATゲートウェイに送信します。これがすべてにとって最良の次ホップであるためですnot10.0.0.x
であるアドレス。
NATゲートウェイは、10.0.0.123:12345
からのソースを独自のパブリックIPおよびいくつかのランダムポート1.2.3.4:54321
に置き換えます。
10.0.0.123:12345
から216.58.203.110:443
への接続が1.2.3.4:54321
に変換されたことを接続追跡テーブルに記録します。
Googleからの返信パケットがNATゲートウェイに宛先1.2.3.4:54321
で到着すると、ゲートウェイはそのレコード(アドレス:ポート)を検索し、それを10.0.0.123:12345
に変換して、そのホストに送信する必要があることを確認します。そのポート。
同時にローカルネットワークの別のホスト(10.0.0.99
など)がGoogleから何かをダウンロードしようとすると、次のようになります。
NATゲートウェイは、ソースIPを独自のパブリックIPに再度変換します1.2.3.4
butソースポートは以前とは異なるものになります。 56789
。
これで、GoogleはNATゲートウェイからの2つの接続を認識します
1.2.3.4:54321
-to-216.58.203.110:443
(ここで、NATゲートウェイは、元のソースが実際に10.0.0.123:12345
であることを認識しています)1.2.3.4:56789
-to-216.58.203.110:443
(NAT GWは、元のソースが10.0.0.99:12345
であることを認識しています)。両方の接続appearはNATゲートウェイからのものですが、実際には内部ネットワークで開始されました異なるホストから。 NATゲートウェイのみがマッピングを認識しています。
一言で言えばそれだけです。
ここでいくつかの注意事項:
開始接続外部から NATの背後にあるホストに接続することはできません。内部から開始されたパケットに対してのみ返信を送信できます。
これは、内部ホストが最初のパケットを送信するときに、内部IP:port
とNATゲートウェイIP:port
の間のマッピングが行われるためです。
外部から10.0.0.123:22
にSSHで接続したい場合、どうすればよいでしょうか? SSHパケットをNATゲートウェイIP 1.2.3.4
に送信できますが、what port?を参照してください。マッピングがないため、外部から接続を開始することはできません。
ルーター一方、IPやポートは変更しません(NATゲートウェイとは異なります)。それらはパケットをほとんど変更せずに通過させます。
AWSコンテキストではRouterはIGW = Internet Gatewayです。 NATはNATゲートウェイまたはNATインスタンスのいずれかであり、同じことを行います。
それが説明されることを願っています:)
これは、インターネットゲートウェイとNATデバイスがAWSで行うことを明らかにする公式のAWSドキュメントからの関連スニペットを引用して、上記の@MLuの回答に対する(大きな)サポートコメントの詳細です。
から AWSドキュメント"Amazon VPC"ユーザーガイド"VPCネットワークコンポーネント"NAT :
NATデバイスの実際の役割はアドレス変換とポートアドレス変換(PATの両方ですが、このドキュメントではNAT )。
A NATデバイスは、PATを実行するNATデバイスを介して、プライベートネットワーク内のホストが外部ネットワーク(インターネット)にアクセスできるようにすることを具体的に意味します。
したがって、プライベートサブネットに10.0.1.1/32
のIPを持つホストがあり、リクエストがgoogle.com(216.58.211.174/32)に送信される場合、NAT =デバイスは10.0.1.1:SOMESOURCEPORTから216.58.211.174:SOMEDESTPORTへのマッピングを記録し、リクエスト(パケット)のソースIPをパブリックNAT-PUB-IP:SOMERANDOMPORTのソースIPに変更します。
記録されるマッピングは次のようになります:10.0.1.1:SOMESOURCEPORT --❯ NAT-PUB-IP:SOMERANDOMPORT
NAT-PUB-IP:SOMERANDOMPORT
で応答を受信すると、記録されたマッピングのルックアップにより、応答が10.0.1.1
に戻る必要があることがわかります。
すべての内部IPは、NATデバイスに割り当てられた単一のパブリックIPに変換されます。接続の多重化は、NAT SOMERANDOMPORT
で。
これはまた、内部ホストにパブリックIPが割り当てられている場合、NATデバイスの場合、内部IPアドレスでのみPATを実行するため、これは無関係です。
これもNATを実行しますが、上記とは異なり、静的NATを実行します。簡単に言えば、次のような静的レコードがあります。
Internal Host IP <-> Public IP Assigned to the Internal Host
AWS VPC内のホストは、VPC内の独自のプライベートIPのみを認識していることに注意してください。割り当てられたパブリックIPは、インターネットゲートウェイでのみ使用されます。
上記と同じリクエスト(google.comへの内部ホスト)の場合、
10.0.1.1 -> Public_IP_Of_Internal_Host
そして、Public_IP_Of_Internal_Host
の宛先で応答を受信すると、10.0.1.1
に変換されます。
https://docs.aws.Amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html から
インターネットゲートウェイは、インターネットルーティング可能なトラフィック用のVPCルートテーブルにターゲットを提供すること、およびインスタンスのネットワークアドレス変換(NAT)を実行するという2つの目的を果たしますパブリックIPv4アドレスが割り当てられています。
前述のように、割り当てられたパブリックIPが必要な理由は、IGWは静的NATしか実行できないため、そのIPと内部IP間のマッピングを作成するためにパブリックIPが必要であるためですホストの。