我想创建一个允许出站 tracert.exe 连接的 Windows 防火墙规则。但是当我:
进入“高级安全 Windows 防火墙”面板
阻止所有出站连接
创建规则以允许 cmd.exe 和 tracert.exe 的出站连接,并允许所有协议
打开命令提示符和数字:
c:\用户\管理员>tracert xx.xx.xx.xx
它不起作用,Windows 防火墙仍然阻止它。
PS:当我在防火墙窗口中允许所有出站连接时,tracert 运行良好。
PPS 过去我还注意到,根据某些 Windows 操作系统,如果我使用路径“%SystemRoot%\System32...”设置规则,它不起作用,并且规则必须设置为“c:\Windows\System32...”才能正常工作。但这不是我的情况,因为我尝试了这两种组合,应用了两条规则,一条用于 cmd.exe,一条用于 TRACERT.EXE。并且两种方式都不起作用。
PPPS 我有一些关于某些 .exe 的出站规则,这些规则允许出站连接(当所有与规则不匹配的出站连接都被阻止时),并且程序运行良好。
...在我看来,当 TRACERT.EXE 从 cmd.exe 控制台启动时,也可以启动另一个 .exe,或者可以通过 svchost.exe 运行...
(我也尝试通过 sysinterinals tcpview.exe 执行它,但是没有可见的 tcp 或 udp 连接,因此似乎应该使用协议 ICMP)
请问,有谁知道导致这种现象的原因是什么?
谢谢。
答案1
好的,解决了!
问题是,当 TRACERT.EXE 从 cmd.exe 控制台启动时,它会启动一个 进程管理器,通过 ICMP 协议运行(在最新的 Windows 操作系统上也可能是 UDP 和 UDPv6)。
问题是,如果我为通用程序 '$SystemDrive$\System32\svchost.exe' 设置规则,它会出现一个 Windows 警报选项卡,提醒用户:
‘Windows 服务已受到仅允许预期行为的规则限制。指定主机进程(如 svchost.exe)的规则可能无法按预期工作,因为它们可能与 Windows 服务强化规则相冲突...'
如果我无论如何创建规则,并尝试通过 cmd.exe 控制台启动命令“tracert.exe”,它不起作用。
但我必须创建一个具有“通用”程序名称的出站规则'系统',并允许 ICMPv4 协议(我在旧的 Windows Server 2008 R2 上测试过,这足够了,也许在最新的操作系统中也可能需要其他协议)。
注意:我认为一个好的行为是仅在需要使用此规则时才启用它,并在使用后始终记得禁用它。