我想确保当我电脑上的 VPN 连接断开时,系统上的任何应用或服务都不允许访问互联网。基本上,我在这里试图做的是确保系统上的任何应用都只能通过 VPN 访问互联网,并且如果 VPN 连接因任何原因断开,则只会超时。
我特别希望仅通过使用 Windows 防火墙上的防火墙规则来实现这一点,而无需使用任何第三方应用程序。
很久以前,我读到过一种技术,叫做“黑洞”,来实现这一点,但我在互联网上找不到任何详细的信息来解释如何通过在 Windows 防火墙中设置规则来实现这一点。
编辑:
我一直在尝试根据@Appleoddity 和 Binarus 给出的建议配置我的系统,但到目前为止还没有成功。
我已经编辑了我的问题以使其更加清晰。
只要没有第三者需要安装 kill-switch/VPN 客户端/软件,我很好。
我想知道如何确保某个特定应用(例如 BitTorrent 客户端)无法访问互联网根本如果 VPN 连接因任何原因断开。
这里我想提一下,我使用的 VPN 客户端是原生的 Windows 7 VPN 客户端,而我要连接的 VPN 服务器的 IP 地址(通过 L2TP、SSTP 甚至 PPTP)将总是保持不变。我使用的是有线 LAN 连接,连接到路由器(无需拨号)。
当我连接到 VPN 时,服务器将始终为 65.23.78.56(例如)。换句话说,每次我连接到 VPN 时,IP 不会改变,而是保持静态。我相信这会让我们的配置变得容易得多。
我不想使用我的 VPN 提供商提供的 VPN 客户端,因此再次,这应该使我的问题更加具体。
我要求一个非常具体的回答描述什么确切地需要采取措施确保互联网访问系统立即地VPN 断开时,它就会被杀死,而不会将我的真实 IP 暴露给外界。
连接超时也没关系,只要我的IP没有泄露就行。
换句话说,我正在寻找一个互联网“终止开关”的配置,如果我的 VPN 连接断开,它可以 100% 确保我的应用程序不会使用我的真实 IP 访问互联网。
感谢您迄今为止的回答。
答案1
我不确定@Appleoddity 是否完全正确,即无法使用 Windows 防火墙完成此操作。请注意,以下描述适用于 Windows 7 Pro,我不知道 Windows 10,但总体思路应该适用于每个 Windows 版本。
如果您在“高级安全 Windows 防火墙”管理控制台中双击防火墙规则,则会打开一个对话框,您可以在其中查看(并设置)规则的属性。在该对话框中,选择“高级”选项卡,然后按“接口类型”部分中的“自定义”按钮。现在您可以选择应应用规则的接口类型。
接口类型有三种,下面是帮助文件中的内容:
局域网 该规则仅适用于通过您在计算机上配置的有线局域网 (LAN) 连接发送的通信。
远程访问 该规则仅适用于通过远程访问发送的通信,例如您在计算机上配置的虚拟专用网络 (VPN) 连接或拨号连接。
无线的 该规则仅适用于通过您在计算机上配置的无线网络适配器发送的通信。
因此,如果您希望仅使用防火墙规则来实现目标,那么您可以(按以下顺序,每一步只针对与互联网相关的规则(即非内部局域网)交通):
- 删除出站规则
- 创建出站规则,阻止“无线”和“局域网”接口类型的所有流量
- 创建允许“远程访问”接口类型的所有流量的出站规则
对入站流量执行类似的过程。
请注意,我还没有尝试过(目前也无法尝试)。但如果您的 VPN 客户端能够让 Windows 真正将该连接识别为 VPN 连接,则上述方法应该有效。
话虽如此,我同意@Appleoddity 的观点,因为这不是一个好方法,你应该尝试用其他方法来实现你的目标。
答案2
仅靠防火墙规则是无法实现的。您至少需要一个脚本或任务,根据 VPN 连接动态添加和删除防火墙规则。
我不会这么做。
我会这样做:
- 创建到 VPN 远程端点 IP 的静态路由,并指定它应通过网关 IP 地址进行路由。
- 从网络接口 tcp/ip 设置中删除默认网关。
- 启用该选项以使用远程 VPN 网关传输所有流量。这是特定于 VPN 客户端的,但 Windows VPN 中存在该选项。这也称为禁用拆分隧道。
或者,如果我使用的是复杂的第三方 VPN 客户端,我会寻找阻止非安全流量的选项。Cisco AnyConnect 可以做到这一点。