NAT / PortForwarding / TCP / IPはどのように機能しますか?


11

私は最近、NATがどのように機能するかというタイトルの記事を読みました。いくつかのことが私にはまだはっきりしないままです。誰かが説明してくれるとありがたいです。

以下は、最もわかりにくいDynamicNATに関する記事の一部です。

スタブドメイン上のコンピューターが、Webサーバーなどのネットワーク外のコンピューターへの接続を試みます。

ルーターは、スタブドメインのコンピューターからパケットを受信します。ルーターは、コンピューターのルーティング不可能なIPアドレスをアドレス変換テーブルに保存します。ルーターは、送信コンピューターのルーティング不可能なIPアドレスを、一意のIPアドレスの範囲外で最初に利用可能なIPアドレスに置き換えます。変換テーブルには、一意のIPアドレスの1つと一致する、コンピュータのルーティング不可能なIPアドレスのマッピングが含まれています。

パケットが宛先コンピューターから戻ってくると、ルーターはパケットの宛先アドレスをチェックします。次に、アドレス変換テーブルを調べて、パケットが属するスタブドメイン上のコンピューターを確認します。

1)NATは、パケットが宛先コンピュータに「戻ってくる」ことをどのようにして知るのですか

2)LAN内の他のコンピューターが同じサーバーに接続されている場合はどうなりますか?NATはどのパケットがどこに「戻る」必要があるかをどのようにして知るのですか?

3)パケットヘッダーの変更により、「ソースIP」が被害者のIPに置き換わり、応答サーバーが被害者に不要なパケットをあふれさせるインターネット攻撃を実行できますか?

複数の攻撃者が関与する必要があると思います...

4)StaticNATはすべてのポートのPortForwardingと同等ですか?

回答:


10

NAT(ネットワークアドレス変換)とPAT(ポートアドレス変換)の間には一般的な誤解があります。これは、ホームルーターで主に使用されているものです。

NAT
次のトポロジのネットワークがあるとします。

Private_Network <-------> ルーター <-------> The_Internet

インタフェースルータに接続されているPrivate_Networkがあり、プライベートIPアドレス、内で一意でない、すなわち1 The_Internetを。一方、NATの場合ルーターに複数のインターフェースがThe_Internetに接続されていますThe_Internetでは、各インターフェイスに一意のIPアドレスがあります。次に、Host_AHost_BPrivate_Networkにあり、両方がThe_InternetのWebsite_X同時にアクセスしたいとします。Host_AのIPとポートのパケットは次のようになります。

ソースIP:Host_AのプライベートIP
ソースポート:Host_Aのポート
宛先IP:Website_Xのパブリック/ユニークIP
宛先ポート:Website_Xのサーバーがリッスンしているポート

Host_Bからのパケットについても同様です
送信元IPが変更されていない場合、Website_Xはプライベートな、つまり一意ではないIPアドレスに応答するため、パケットはその経路を見つけることができません。この問題を解決するために、ルーターは、The_Internetに接続されている固有のIPアドレスの1つが使用されていないかどうかを確認します。その場合は、次のマッピングを行います。

Host_AのプライベートIP =======ルーターの_unique_IP_K

そして、今から開始することをパケットにHost_Aに行くWebsite_X、今のインタフェース残しているルータに接続されThe_Internetフォームを持つことになりますが。

送信元IP:ルーターの_unique_IP_K送信
元ポート:Host_Aのポート送信
先IP:Website_Xのパブリック/一意のIP送信
先ポート:Website_Xのサーバーがリッスンしているポート

したがって、プライベートIPからパブリックIPへの1対1の関連付けがあることを理解できます。したがって、パケットがWebsite_Xからルーターに到着すると、この関連付けがチェックされ、宛先IPアドレスがプライベートアドレスに戻され、正しいホストに正常に配信されます。
ご覧のとおり、この方法は非常にシンプルですが、大きな欠点が1つあります。プライベートホストごとに一意のIPアドレスを予約する必要があり、コストがかかるため、プライベートネットワークのホストよりも一意のIPアドレスを少なくすることを選択します。したがって、すべてのプライベートホストがThe_Internetに同時にアクセスしようとすると、ルーターの利用可能なパブリックIPアドレスの数に等しい、それらのサブセットのみあり、アクセスでき、残りは拒否されます。
これに対抗するために、PATを作成しました。

PAT
PATは、ホームルーターの大部分が使用しているものです。基本的な制限は、ルーターThe_Internetへの接続に使用する単一の一意のIPアドレスを持っていることですが、プライベートネットワークの複数のホストが同時にThe_Internetにアクセスできるようにしたいと考えています。
我々はそれを行う方法は、道に「類似」であるNATが主な違いでそれをしない:代わりのルータの IPアドレスのプールを保持し、それがポート番号のプールを保持しています。より正確には、に到着するパケットルータからにHost_APrivate_Networkは宛てWebsite_XThe_Internetの形式は次のとおりです。

ソースIP:Host_AのプライベートIP
ソースポート:Host_Aのポート
宛先IP:Website_Xのパブリック/ユニークIP
宛先ポート:Website_Xのサーバーがリッスンしているポート

これでルーターは2つのタスクを実行します。

  1. それはへのソースIPを変更しますルータの固有の公開IP
  2. 送信元ポートを、ルーターが維持していてまだ使用されていないプールからのポートに変更します。例:Port_Z

そして、今から開始することをパケットにHost_Aに行くWebsite_X、今のインタフェース残しているルータに接続されThe_Internetフォームを持つことになりますが。

送信元IP:ルーターの_unique_IP_K送信
元ポート:Port_Z送信
先IP:Website_Xのパブリック/一意のIP送信
先ポート:Website_Xのサーバーがリッスンしているポート

そしてルータは次のマッピングを維持します。

Host_AのプライベートIP 上のポートにHost_A ======= Port_Z

なぜこれが機能するのですか?
パケットが戻ってくると、ルーターは宛先ポート番号を確認し、前述のマッピングに従って宛先IPアドレスと宛先ポート番号を変更するだけで、パケットは正常に配信されます。

同じホストで複数のアプリケーションを実行するとどうなりますか?
異なるアプリケーションは定義により異なるポートを持つため、ルーターから異なるポートにマッピングされます。

複数のホストがThe_Internetに同時にアクセスしようとし、すべてが同じアプリケーションを使用している場合はどうなりますか?
異なるホストは、定義上、異なるプライベートIPアドレスを持つため、ルーターとは異なるポートにマッピングされます。

PATはクロスレイヤーのグレースペースで危険なバランスを保っています。ポート番号はトランスポートプロトコルの一部ですが、ルーターはインターネットプロトコルまで動作できます。したがって、技術的に言えば、プロトコルで許可されていないものです。したがって、少なくとも理論的には、潜在的な危険があります。ポートプールは制限されています。したがって、プライベートネットワークが1000のホストで構成されていて、それぞれがport_pool / 10アプリケーションを実行している場合、ルーターのマッピングテーブルで使用可能なエントリが不足し、アプリケーションへのアクセスが拒否されます。

この回答は私の意図した長さを大幅に超えていましたが、役に立ったと思います。


2
いくつか注意点があります。まず、RFCが「基本NAT」と呼ぶものを参照するために「NAT」という用語を使用し、RFCが「NAPT」と呼ぶものを参照するために「PAT」という用語を使用しています。RFCは通常、「基本NAT」と「NAPT」の両方をカバーする包括的な用語として「NAT」を使用します。第2に、TCP / UDPヘッダーにはIPアドレスをカバーするチェックサムが含まれているため、「基本NAT」でもTCP / UDPヘッダーを変更する必要があります。
Peter Green

@PeterGreenですが、答えの要点は正確ですか?
lpydawa

6

ルーターが行っThe router saves ... an address translation table.た内部-外部アドレス変換を記憶しているため、ルーターはパケットがどこに属するかを認識しています。そのため、1つの内部アドレスは1つの外部アドレスに等しく、インターネットへの送信先は関係ありません。もちろん、これは完全な接続を追跡する実質的にすべてのNATルーターに存在するファイアウォールを無視します。

(inside) src:ip+port,dst:ip+port <-> (outside) src:ip+port,dst:ip+port

NATは、IPやポートの任意の組み合わせを変更できます。

#3はまったく別のテーマです:なりすまし

#4「静的NAT」または「1対1」はアドレスのみのマップです。したがって、ポート(さらにはプロトコル:tcp、udp、greなど)は無関係です。


2)LAN内の他のコンピューターが同じサーバーに接続されている場合はどうなりますか?NATはどのパケットがどこに「戻る」必要があるかをどのようにして知るのですか?
user2449761 2014年

1と2は同じ答えです。接続/翻訳を追跡するためです。2つの内部ホストが同じ外部アドレスにマッピングされることはありません。したがって、マッピングされた外部アドレスに到着するパケットには、自動的に1つの内部宛先しかありません。外部(パブリック)アドレスが1つしかない場合、それは「NAT」ではなく、PAT(ポート変換)です
Ricky Beam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.