在访问某个网站之前,是否确保 VPN 已打开并连接?

在访问某个网站之前,是否确保 VPN 已打开并连接?

有时您会使用 VPN 访问某些网站。有什么方法可以确保您在 VPN 关闭或断开连接时不会访问该网站?

我在一台 Windows 机器上。

答案1

有多种方法可以做到这一点。

确保您永远不会访问没有 VPN 的网站的一种方法是确保您永远不会访问没有 VPN 的任何网站。

最基本的方法是删除通过物理网络接口的默认路由(0.0.0.0/0 和 ::/0),并将其替换为仅指向本地网络和 VPN 服务器的路由,或者使用防火墙规则达到相同效果。这特定于操作系统,但这里有一个使用 iptables 的示例:

iptables -A OUTPUT --out-interface eth0 -d ${VPN_SERVER_IP} -j ACCEPT
iptables -A OUTPUT --out-interface eth0 -d 192.168.0.0/16 -j ACCEPT
iptables -A OUTPUT --out-interface eth0 -j REJECT
ip6tables -A OUTPUT --out-interface eth0 -j REJECT

如果您的设备始终连接到同一个网络,那么更强大的版本就是从您放在设备前面的路由器执行相同的操作,在这种情况下,规则会进入 FORWARD 和 OUTPUT:

iptables -A FORWARD --out-interface eth0 -d ${VPN_SERVER_IP} -j ACCEPT
iptables -A FORWARD --out-interface eth0 -j REJECT
ip6tables -A FORWARD --out-interface eth0 -j REJECT

然后,从 eth0(Internet 接口)出去的流量只能转到 VPN 服务器,而通过 VPN 接口的流量可以转到任何地方。

但是,假设您希望其他网站无需 VPN 即可运行,而这个网站不行。现在您需要一种方法来区分它。如果您知道它的 IP 地址,您可以执行以下操作:

iptables -A OUTPUT --out-interface eth0 -d ${SITE_IP} -j REJECT
iptables -A FORWARD --out-interface eth0 -d ${SITE_IP} -j REJECT

但是,该网站可能有多个 IP 地址,可能与其他网站共享,并且可能随时更改。这不太好。

另一种选择是将未连接到 VPN 时使用的 DNS 服务器配置为拒绝解析该站点的服务器,但这样一来,您将面临风险,即您的浏览器或浏览器与 DNS 服务器之间的其他代码缓存了您使用 VPN 时的结果,并在您断开连接后使用该结果。

此外,如果您在 VPN 开启和关闭时使用相同的浏览器,网站可能能够使用第三方 cookie 和类似的东西将两者关联起来。

您需要一些东西来隔离用于该网站的浏览器,例如通过在虚拟机或单独的物理机上运行它,该机器只能通过上述 VPN 进行连接。

最后,请注意,您要求的是 Tor 的常见用例。仅通过 Tor 浏览器访问该网站可能会实现您在此处寻找的内容。

相关内容