NAT などについてはすべて理解したつもりでしたが、ここで問題が発生しました。
最初に想定したこと:
利用可能な IPv4 アドレスが十分にないため、別のシステムが必要です。インターネットに接続するための今日の家庭用デバイスは、次の組み合わせです
。
2) 複数のコンピューターをデバイスに接続できるリンクレベルのスイッチ
3) すべてのコンピューターをインターネットに接続し、ホームサブネットなどを超えるルーター
4) すべての内部コンピューターの接続を許可する NAT 5)外部
から内部ネットワークへの接続を可能にするポートフォワーダ
私が NAT と呼んでいるもの:
外部に要求を行う場合: デバイスの NAT 部分は、内部コンピューターからの要求の送信元ポートと送信元 IP を変更します。新しい source-ip が public-ip になります。NAT 部分は、「元の IP、元のポート、新しいポート」というマッピングを持つテーブルにレコードを保持します。
応答が戻ってくると、NAT は宛先ポートをチェックし、これをテーブル内の新しいポートと比較します。一致が見つかった場合、NAT は destination-ip を original-ip に、new-port を original-port に置き換えます。結果として、応答は要求を行った内部コンピューターに転送されます。したがって、NAT 部分は、接続が内部から初期化されるときのためのものです。このリクエストが NAT を通過すると、source-ip と source-port の 2 つが変更されます。
次に、ポートフォワーダ:
デバイスのこの部分は、ネットワークへの外界で初期化された接続を受け入れます。着信要求の宛先ポートを調べ、そのポート番号のルールを作成することにより、要求の宛先ポートと宛先 IP を内部 IP に変更する場合があります。これらのルールを使用すると、外部からの要求が内部ネットワーク上のコンピューターに接続できるため、ポートフォワーダーは宛先 IP と宛先ポートの 2 つを変更します。
A: 質問する前に、この説明はどうですか?
今私の問題は、リクエストがポートフォワーダーを介して外部から来た後の応答にあります。適切なルールが作成され、要求が内部コンピューターのポート転送を通じて送信されたとします。そのため、ポートフォワーダーでは、宛先 IP がコンピューターの内部 IP に変更され、宛先ポートがサービスが実行されているポートに変更されました。この内部コンピューターが Web サーバーの場合、応答が生成されます。したがって、destination-ip はリクエストの source-ip になり、destination-port はリクエストの source-port になります。source-ip はコンピューターの internal-ip になり、source-port はサービスのポートになります。
今、その応答は外側に行かなければなりません。それで、NATを経由して外部に出ると思いますか?したがって、NAT を通過した後、source-ip は public-ip になり、source-port はランダムになります。これをwiresharkでテストしました。NAT の背後にある Web サーバーに連絡したところ、応答がポート 80 から来ていることがわかりました。これはどのように可能ですか?これは、転送された要求の応答が NAT を通過しなかったことを示していますか?
私は概念を再考し、私の新しい仮説は、接続が外部から初期化されると、ポートフォワーダーを通過して適切なコンピューターに到達するというものです。これにより応答が作成され、この応答が「オールインワン」デバイスに到達すると、このデバイスは応答の要求を転送したことを認識でき、送信元ポートは変更されません。
B: 本当にそうですか、それとも別の方法で行われていますか?
ウィキペディアはポートフォワーディングについて次のように述べています。パケットはトランスレータをバイパスし、接続は失敗します。」( http://en.wikipedia.org/wiki/Port_forwarding )
これにより、転送されたリクエストの応答は、NAT ではなくポートフォワーダーを再度通過する必要があるため、送信元ポートが変更されないことが確認されます。ポートフォワーダーは、source-ip を public-ip に変更します。
誰かがこれを確認するか、私とは別の説明をしてくれますか?