web-dev-qa-db-ja.com

ポートトリガーはどのポートを開くかをどのように知るのですか?

私が理解しているポートフォワーディング

ポート転送ルールを作成するとき、ルーターは指定された外部ポートを常に開いたままにし、そのポートのすべてのインバウンドトラフィックをルールで指定されたエンドポイント(プライベートIPとポート)に転送するだけです。

例として、次のルールを作成すると...

外部ポート: TCP 3478
IP: 192.168.1.100
内部ポート: TCP 3478

...ルーターは、外部ポートTCP 3478のすべてのインバウンドトラフィックを192.168.1.100:3478のエンドポイントに転送します。

私が理解しているようにポートトリガー

ポートトリガーの場合、ルール構造はポート転送(つまり、内部ポート、外部ポート、IPなど)と同じですが、私が遭遇したすべての定義では、これらのポートは、アウトバウンド要求がルールで指定された内部ポートから送信されます。 <=これは私が混乱するところです。

サービスは(想定される)一時的な範囲からランダムに選択されたポートを使用すると思いました。したがって、実際のソース/内部ポートは、ルールで構成されている内部ポートである可能性はほとんどありません。それで、この時点までの私の理解が正しいと仮定すると、ポートトリガーは実際に開く正しいポートをどのように決定しますか?

私はまだTCP/IP、NAT、およびネットワーク全般について学習しているので、用語やその他の間違いを自由に修正してください。

3
Cyber

これは、すべてが適切に設定されている場合の動作です。

  1. LAN内のコンピューターが、サーバーへの接続を開始します。サーバーのアドレスと、サーバーがリッスンすることを期待するポートを使用します。これは「固定」ポートです。つまり、特定のソフトウェア(デーモン、ゲームサーバーなど)は、このポート、このアドレスで「常に」リッスンします。接続のこの端では何もランダムではありません。
  2. ランダム(-ish)エフェメラルポートがローカル側(開始コンピューター、NAT後のルーター)で使用されますが、転送をトリガーするのは、リモート)に使用される特定のポート(および場合によってはアドレス)です。 end接続の。
  3. これで、同じサーバーが着信接続を開始した場合(通常のポート転送がないため、ルーターによって拒否されます)、ルーターは最初の(発信)接続を開始したコンピューターに接続を転送します。

だからルールは

  • lANからのAが特定の/任意のリモート(WAN)サーバーのポートXへの接続を開始し、サーバーがポートYで別の(着信)接続を開始しようとした場合、後者の接続をAに転送します。
6