NATは複数のプライベートIPv4アドレス間で1つのパブリックIPv4アドレスをどのように共有するか[終了]


10

非常に古典的な質問だと思いますが、ある程度の経歴があると思いますが、Webで正しく検索して理解するのに十分な語彙がありません。

192.168.0.1(IP.1)と192.168.0.2(IP.2)のホームネットワークがあり、まったく同じ外部サーバーを攻撃しているCounter Strikeをプレイしているとしましょう。

私のホームルーターは、パケットがIP.1に送られることをどのように知っていますか?NATやxxx.xxx/yのアドレスをよく読んでいます。** TCP / IPスタックの/ y部分はどこに書かれていますか?

そのためには絶対にNATが必要ですか?Wikipediaの記事から私が理解したことは、一部のコンピューターの電源がオフになっている場合、NATはIPアドレスを最適化するために作成されているということです。1つのパブリックIPのみで5つのデバイスを接続することもできますか?


一対多は、あなたの質問に答える必要があります。また、ホームネットワーキングやエントリーレベルの教育に関する質問は、このサイトに最適ではありません。
クレイグコンスタンティン

回答:


14

(以下では、NATストーリーに関連する部分ではないため、DNSルックアップまたはレイヤー2アクションは無視します。)

TCP接続は4つの部分からなるタプルです。

<source IP> <source port> <destination IP> <destination port>

つまり、宛先IPは、パケットを正しいマシンに送信するために使用され、宛先ポートは、そのマシン上のパケットを正しいプログラム/セッションに送信するために使用されます。送信元IPは、応答の送信先を知るために使用されます。送信元ポートについても同様です。応答が送信されると、送信元と宛先が単純に交換されます。

NATのない2台のコンピューターから始めましょう。

  • コンピュータにIPがあります 1.1.1.1
  • ウェブサーバーにはIPがあります 3.3.3.3
  • HTTPの標準ポートは 80

コンピュータがWebページを要求すると、ランダムな範囲(1024〜65535)からランダムな未使用のポート番号を最初に選択します。選びましょう2345。次に、次のシーケンスが発生します。コンピュータがパケットを送信します:送信元IP 1.1.1.1、送信元ポート2345、宛先IP 3.3.3.3、宛先ポート80。パケットはWebサーバーに到着し、自身のIPとポートを80認識しているため、これがWebページの要求であることを認識しています。Webサーバーは、送信元IP 3.3.3.3、送信元ポート80、宛先IP 1.1.1.1、宛先ポートを含むパケットでWebページを送り返します2345。コンピュータはこれらのパケットを受信し、ポート番号のため、リクエストされたWebページを認識します2345

これらのポートの組み合わせは、次のように記述されることがよく1.1.1.1:2345あり3.3.3.3:80ます。

現在、インターネット上のコンピューターの数は、利用可能なIPv4アドレスの数をはるかに上回っています。アドレス空間を維持するために、アドレス共有に自由に使用できる一連のプライベートアドレス範囲が導入されました。これらの範囲はRFC1918と呼ばれ、次のとおりです。

  • 192.168.0.0-192.168.255.255
  • 172.16.0.0-172.31.255.255
  • 10.0.0.0-10.255.255.255

これらのアドレスはインターネットルーティングテーブルのどこにもないため、インターネットのバックボーンでこれらの範囲内の宛先にパケットを送信する場合、それらは単にドロップされます。これは、何百万もの人々が同じアドレスを使用しているためです。これらのアドレスは、インターネットに役立つものに変換する必要があります。これがネットワークアドレス変換の出番です。

2台のコンピューターがあります。

  • A:192.168.0.1とB:192.168.0.2
  • ゲートウェイのパブリックIPは1.1.1.1です。
  • 同じウェブサーバーを維持します。
  • 両方のコンピューターは、同じサーバーから同じWebページを要求します。

最初に、両方のコンピューターがランダムなポートを選択します。たとえば、次のように192.168.0.1:2345192.168.0.2:5432ます。

コンピューターAは、送信元192.168.0.1:2345と宛先を含むパケットを送信します3.3.3.3:80。ゲートウェイはこのパケットを送信元の1.1.1.1:2345宛先に変換3.3.3.3:80し、この組み合わせへの応答はに送信されることを覚えています192.168.0.1。それはソースとの回答recievesときだから、3.3.3.3:80および目的地を1.1.1.1:2345、それが元にそれを翻訳し3.3.3.3:80、宛先192.168.0.1:2345と上のパケットを送信します。

コンピューターBは、送信元192.168.0.2:5432と宛先を含むパケットを送信します3.3.3.3:80。ゲートウェイはこのパケットを送信元の1.1.1.1:5432宛先に変換3.3.3.3:80し、この組み合わせへの応答はに送信されることを覚えています192.168.0.2。それはソースとの回答recievesときだから、3.3.3.3:80および目的地を1.1.1.1:5432、それが元にそれを翻訳し3.3.3.3:80、宛先192.168.0.2:5432と上のパケットを送信します。

両方のコンピュータが偶然同じソースポート番号を選択した場合、ゲートウェイは単純に別の空きランダムソースポート番号を選択し、ポート番号も変換することを忘れないでください。これは、PAT(ポートアドレス変換)と呼ばれることもあります。これは基本的にNATのサブセットです。

これにはいくつかの実装があります。ゲートウェイは単に「コンピュータXが送信元ポートYを使用した」ことだけを記憶し、ポートYを含むすべてをコンピュータXに転送します。コンピュータXが送信元ポートYと宛先Zを使用したことを記憶し、ポートZからポートYに何かを転送するだけです。コンピューターX。または、タプル全体を記憶し、送信元/宛先のIPとポート全体に一致するトラフィックのみをコンピューターXに送信するというオプションがあります。


ありがとう。どのクライアントもそのポート80で別のポート80に送信すると思いました。多くの専門家ではない人が同じことを信じていると思います。
Nicolas Zozol 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.