我想阻止程序临时访问本地服务器“本地主机”(在 Windows 上),以便我可以测试随机断开连接的情况......我尝试向防火墙添加(规则)以禁用所有网络类型中的入站和出站但是程序刚刚被阻止访问互联网而不是本地网络
5 回答
继续寻找答案而不是评论 - 但是,非常感谢您提供有关您的用例的更多信息;
我认为不可能阻止对 localhost 的访问,但允许访问 Internet。两个原因:
- 网络在不同的层(“OSI 层”)上工作,并且 localhost 通信在防火墙可能过滤之前被环回(请参阅 参考资料)。虽然不太确定。
- 本地主机通信可能是“基本的”,当应用程序想要通过网络进行通信时,它们是必需的。
OP评论后更新
我假设您使用的是 Windows 10,并且您知道要阻止的程序的可执行文件的路径。
- 打开“具有高级安全性的 Windows Defender 防火墙”。
- 在左侧,转到“出站规则”。
- 然后,在右侧单击“新规则...”。
- 将打开一个新窗口;选择“程序”,然后单击“下一步”。
- “此程序路径:”旁边是一个“浏览...”按钮 - 在此处选择您的程序。点击下一步...”
- 选择“阻止连接”,然后选择“下一步...”。
- 选择所有三个;域、私有和公共。
- 单击“下一步...”后选择适当的名称,然后单击“完成”。
- 从现在开始,您可以根据需要禁用/启用此规则。
试试这 3 个简单的步骤。
- 运行你的程序
- 打开 cmd(请检查您是否需要管理员权限,如果是,则以管理员身份运行)
- 运行以下命令以查看 localhost 正在侦听的端口。
网络统计-ano | 查找字符串:
例如(如果您的本地主机正在侦听端口3900,则命令如下;
网络统计-ano | 发现str:3900
结果将显示在 cmd 控制台上,最后一列是 PID(进程 ID)我们将杀死该进程,最终将停止 localhost 服务器以侦听来自任何来源的任何请求。
任务杀/PID /F
<PID>你将从上面的命令中得到。
在这种情况下,只有本地主机会停止它的服务,但您的应用程序将继续与外部网络 Internet 通信。
您可以使用 Fiddler 之类的反向代理并阻止来自该应用程序的所有请求到 localhost。
如果我理解您的意思,那么这样做:要创建规则,请选择窗口左侧的入站规则或出站规则类别,然后单击右侧的创建规则链接。Windows 防火墙提供四种类型的规则: 程序 – 阻止或允许程序。端口 – 阻止或允许端口、端口范围或协议。
如果您使用带有内置防火墙的第三方防病毒解决方案,请转到防火墙选项并黑名单/禁用/阻止互联网访问您的应用程序
否则,禁用防火墙不会阻止任何访问,因为它将允许入站和出站流量。您可以阻止特定端口,但禁用防火墙墙不仅会执行前面提到的操作,还会使您的设备容易受到在线威胁
仅凭您提供的信息很难提供详细的答案,但我认为可以通过简单的容器配置轻松测试这种情况:在容器中运行被测程序和“localhost”服务,您可以随机更新容器的网络配置模拟连接问题。