2

ポート 4000 のファイアウォールの内側で動作する TcpListener オブジェクトがあります。明らかに、外部のクライアントが TcpListener に接続するには、ファイアウォールでポート 4000 を開く必要があります。そうしないと、外部接続要求が通過しません。

私の質問は、次のように接続要求を受け入れるとどうなるかに関するものです。

TcpClient client = server.AcceptTcpClient();

TcpClient は、システムが割り当てたポート番号を使用してローカル インターフェイスで開かれます。外部クライアントがこの TcpClient インスタンスと通信するには、このポート番号をファイアウォール内で開く必要がありますか? もしそうなら、事前に開くことができるように、使用するポート番号の範囲を指定することは可能ですか? それとも、ファイアウォールの背後にある何か (この場合は私のサーバー) が接続を確立 (つまり、受け入れ) したため、ファイアウォールはこのシステム割り当てポート番号での通信を自動的に許可しますか?

4

2 に答える 2

2
  • サーバー マシンでは、ファイアウォールは、クライアントが接続しているポートからリッスンしているポートへの着信接続を許可する必要があります。TcpListener

  • クライアント マシンでは、ファイアウォールは、クライアントが接続しているポートからリッスンしているポートへの発信接続を許可する必要があります。TcpListener

ほとんどのファイアウォール (Windows ファイアウォールなど) は、任意の送信先への送信接続を許可するように構成されているため、任意の送信元からのポート 4000 での受信接続を許可するルールを作成するだけで済みます。

これをより厳密に制限したい場合は、システムが割り当てたポートではなく特定のポートに TcpClient をバインドし、サーバーとクライアントでファイアウォール ルールを作成して、このポートから/への接続のみを許可することができます。

于 2009-09-12T17:44:34.537 に答える
0

Windowsファイアウォールでポートの範囲を指定するのは簡単ではありませんが、プログラム全体を許可できます.Windowsファイアウォールに新しいエントリを追加するときは、ポートの代わりにプログラムを選択し、プログラムにすべての接続を受信するように許可します.選択したポートに関係なく、常に許可されている。

于 2009-09-12T18:35:51.157 に答える