C# TcpListener.AcceptTcpClient和防火墙
我有一个TcpListener对象,它在端口4000的防火墙后面运行。显然,为了让外部客户端连接到TcpListener,需要在防火墙中打开端口4000;否则,外部连接请求将无法通过 我的问题与我接受连接请求时发生的情况有关,如下所示:C# TcpListener.AcceptTcpClient和防火墙,c#,.net,networking,sockets,firewall,C#,.net,Networking,Sockets,Firewall,我有一个TcpListener对象,它在端口4000的防火墙后面运行。显然,为了让外部客户端连接到TcpListener,需要在防火墙中打开端口4000;否则,外部连接请求将无法通过 我的问题与我接受连接请求时发生的情况有关,如下所示: TcpClient client = server.AcceptTcpClient(); TcpClient在本地接口上以系统分配的端口号打开。为了让外部客户端与此TcpClient实例通信,是否必须在防火墙内打开此端口号?如果是,是否可以指定要使用的端口号范
TcpClient client = server.AcceptTcpClient();
TcpClient在本地接口上以系统分配的端口号打开。为了让外部客户端与此TcpClient实例通信,是否必须在防火墙内打开此端口号?如果是,是否可以指定要使用的端口号范围,以便可以提前打开它们?或者,防火墙是否自动允许在该系统分配的端口号上进行通信,因为防火墙(在本例中为我的服务器)后面的某些东西已建立(即已接受)连接?- 在服务器计算机上,防火墙需要允许从客户端连接的端口到
侦听的端口的传入连接TcpListener
- 在客户端计算机上,防火墙需要允许从客户端连接的端口向
正在侦听的端口进行传出连接TcpListener
如果要更严格地限制此操作,可以绑定而不是系统分配的端口,并在服务器和客户端上创建防火墙规则,以仅允许从/到此端口的连接。在windows防火墙中指定端口范围并不容易,但当您在windows防火墙中添加新条目时,您可以授予整个程序,选择program(程序)而不是port(端口),并授予您的程序接收所有连接的权限,然后无论您选择哪个端口,它都将始终被允许。是的,这是正确的。最坏的情况是,这可能是我们要走的路线。但我认为我们的IT人员更愿意尽可能地将其锁定。我们也希望如此,但Microsoft Firewall不允许您指定端口范围,这绝对奇怪,我认为他们希望我们购买他们的产品IAS,我不知道是否有范围设施,我同意其他防火墙确实提供了这样的支持,而且是最好的。