web-dev-qa-db-ja.com

プロキシが十分なときにNATが必要なのはなぜですか?

私のマシンはローカルLANに接続されています。インターネットに接続するには、トラフィックはプロキシサーバーを経由します。 proxyサーバーについての私の理解は、元のリクエスト送信者のbehalfでリクエストを送信することです。したがって、サーバーが応答すると、サーバーはクライアントであると見なしてプロキシに応答を送信します。その後、プロキシは応答を自分のマシンに転送します。
ネットワークアドレス変換の場合を考えてください。リクエストはnatルーターを経由します。次に、NATルーターはパブリックIPアドレスを提供し、このマッピングをテーブルに保存します。 (サーバーからの)返信は、この割り当てられたパブリックアドレスに送信されます。 natルーターがテーブルからローカルIPアドレスに解決し、応答をマシンに転送します。
プロキシ自体がトラフィックを仲介してインターネットへのアクセスを提供できる場合、なぜNATが必要なのですか?

8
Ashwin

MadHatterは、プロキシとNATの違いについて、素人の優れた説明を書いています。

技術的な詳細については、OSIモデルとTCP/IPモデルを参照することをお勧めします。 NatはOSIモデルの後半3(ネットワークレイヤー、この場合はIP)で動作し、プロキシは通常、レイヤー7(アプリケーションレイヤー、HTTPまたはプロキシするすべてのもの)で動作します。

NATとプロキシも、少しずつ異なる問題を解決しようとしています。 NATは、プロキシがセキュリティ、監査、またはパフォーマンス上の理由からネットワークの「チョークポイント」を作成している間、IPアドレスの不足を軽減するために少数のパブリックIPの背後にいくつかのプライベートIPを隠しています。

5
dwurf

ここで基本を十分に理解しているようですが、簡単に言えば、パブリックアドレスでプロキシを使用している場合、NAT-プロキシによって仲介されるプロトコルの場合。

ただし、 天国と地球には、あなたの哲学で夢見ているよりも多くのプロトコルがあります ;それらのすべてがプロキシ可能であるわけではなく、プロキシはすべて存在するわけではないので、NATはそれらにとって便利なフォールバックです。

Edit:プロキシは、アプリケーションレベルで動作するコンピューティングデバイスです。 HTTPプロキシはリモートサイトへのHTTP要求を受信し、指摘したように、そのサイト自体に送信されて要求を行い、応答を要求元のクライアントに返します。ただし、これを行うには、HTTPを詳細なレベルで理解する必要があります。

同様に、FTPプロキシを作成することもできますが、クライアントの要求を正しくプロキシするには、MKD、DELE、LISTなどのftpプロトコルコマンドの詳細を理解する必要があります。透過的に機能するプロキシは、一般に、プロトコルをプロキシするためにプロトコルの内部をよく理解している必要があります。

SOCKSはある程度この規則の例外ですが、それはSOCKSプロトコルがプロキシー用のより一般的なインターフェースを導入し、各clientをSOCKS化する必要があるため、次のことができるためですそれぞれに必要なプロキシの種類を設定するためにSOCKSプロキシの適切なリクエストを行うことは、正確には透過的ではありません。

15
MadHatter