我有一个TcpClient
和TcpListener
基于Windows服务在我的网络上的两台机器上运行。客户端和服务器节点都使用相同的Windows服务。服务运行为Local System
和PC01
是Win7 x64,PC02
是Win7 x86。Windows服务(TCP客户端/侦听器)防火墙例外块流量
从客户端到服务器的连接尝试期间,应用程序抛出了SocketException
10060(连接超时),并且我发现由应用程序的自动防火墙配置代码生成的Windows防火墙例外不允许TCP流量通过。
退一步,我想下面的测试顺序上PC01
与PC02
防火墙永久禁用删除它作为一个变量:
- 禁用防火墙
PC01
- 这个工作。 - 手动启用防火墙
PC01
和手动添加了一个例外,以允许端口12345
上的所有入站TCP
流量 - 此工作。 - 进一步限制例外,只允许来自本地子网的远程流量 - 这有效。
- 进一步限制例外,只允许(所有)服务 - 这有效。
- 进一步限制例外情况,通过从服务列表中选择或输入服务短名称来允许特定服务 - 此失败。
- 试图改为通过选择
myservice.exe
可执行文件将例外限制为特定服务 - 此失败。
当我的Windows服务在异常仅限于特定服务时阻止其工作时,它是如何工作的?是否有我需要注意的Windows服务警告?开放端口是所有服务的唯一解决方案吗?
编辑:我用netstat -a -n -b
收集关于活动连接和侦听端口信息。以下摘录详细信息有关我的服务的信息:
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:12345 0.0.0.0:0 LISTENING
[myservice.exe]
...
UDP 0.0.0.0:12344 *:*
[myservice.exe] (listening for UDP broadcast packets)
...
UDP 0.0.0.0:62794 *:*
[myservice.exe] (this is an outbound broadcast packet)
感谢大家的任何见解,你可以提供。
我已经发布了这个SO而不是SF,因为我认为它必须与我的特定服务有关。 – khargoosh
您可以使用'netstat -a -n -b'来查看侦听端口和相关的可执行文件;它是在12345端口上侦听的可执行文件吗? –
@HarryJohnston谢谢你 - 是的,我的可执行文件出现在活动连接列表中,既在预期的TCP端口上,也在UDP端口上,我也打开了。我会将这些信息添加到问题中。 – khargoosh