ポートトリガーは、 NAT対応 ルーターの設定オプションで、IPネットワーク内の内部ホストマシンと外部ホストマシン間の通信を制御します。ポートフォワーディングと同様に、受信トラフィックを特定の内部ホストマシンに転送できますが、転送されるポートは常時開いているわけではなく、ターゲットの内部ホストマシンは動的に選択されます。[ 1 ] [ 2 ] [ 3 ]
2 つのネットワークが NAT ルーターを介して通信する場合、外部ネットワーク上のホストマシンから見ると、内部ネットワーク上のホスト マシンは NAT ルーターのIP アドレスを持っているかのように動作します。トラフィック転送ルールがない場合、外部ネットワーク上のホスト マシン (ホスト B) が内部ネットワーク上のホスト マシン (ホスト A) への接続を開くことは不可能です。これは、内部ネットワークが NAT の背後に隠されているため、接続先が NAT ルーターの IP アドレスのみとなるためです。ポート トリガーを使用すると、ホスト A が定義済みのポートを使用してホスト B への接続を開くと、ルーターが定義済みのポートで受信したすべての着信トラフィックがホスト A に転送されます。これが転送ルールの「トリガー」イベントです。転送ルールは一定期間非アクティブ状態が続くと無効になります。[ 2 ]
ポートトリガーは、 IRCチャットの認証やFTPファイル共有のファイルダウンロードなど、特定のタスクのためにクライアントとサーバーの役割を切り替える必要があるネットワークアプリケーションに役立ちます。
ポートトリガーの動作例として、IRC (インターネットリレーチャット)に接続する場合、ポート113を介してIdentプロトコルを使用してユーザー名を認証するのが一般的です。
IRCに接続する際、クライアントコンピュータは通常、ポート6667(または6660~7000の範囲内の任意のポート)で発信接続を行い、IRCサーバーはポート113でクライアントコンピュータへの新しい接続を確立することで、指定されたユーザー名の検証を試みます。コンピュータがNATの背後にある場合、NATデバイスはNATの背後にあるどのコンピュータに接続要求を送信すべきか分からないため、この接続をサイレントに切断します。これらの2つのトランスポートレベルの接続は、IRCサーバーへのアプリケーションレベルの接続を成功させるために必要です(インターネットプロトコルスイートを参照)。2番目のTCP/IP接続が不可能なため、IRCサーバーへの接続試行は失敗します。
ポートトリガー方式の場合、ルーターは、6660~7000のいずれかのポートで発信接続が確立されると、その特定のコンピューターへの受信接続をポート113で許可するように構成されます。これにより、ネットワーク上の特定のアドレスを設定する必要がないため、静的ポートフォワーディングよりも柔軟性が高まり、複数のクライアントがNATルーター経由でIRCサーバーに接続できるようになります。また、受信ポートが使用されていないときに開いたままにならないため、セキュリティも向上します。
ポートトリガーには、トリガーされたポートを一度に1つのクライアントにバインドするという欠点があります。ポートがその特定のクライアントにバインドされている間は、他のすべてのクライアントはポートトリガーを事実上利用できません。たとえば、FTPファイル共有では、これは「アクティブモード」で実行されているFTPサーバーから2つのクライアントが同時にファイルをダウンロードできないことを意味します。IRCの場合、認証ステップは非常に迅速に行われますが、ポートトリガーのタイムアウトによって、他のクライアントがIRCサーバーにログインできなくなる可能性があります。ポートトリガーは、ローカルコンピュータが着信接続を受信する前に発信接続を確立する必要があるため、NATルーターの背後にあるサーバーには適していません。一部のルーターでは、複数のクライアントがポートトリガーとポートフォワーディングを使用できますが、同時に使用することはできません。