限制通过 VPN/SSH 隧道的互联网访问,以防止泄露非隧道数据(无路由器)

限制通过 VPN/SSH 隧道的互联网访问,以防止泄露非隧道数据(无路由器)

非常简单的用例。假设我使用各种应用程序,并且没有这样的时间这些应用程序中的任何一个都可以通过我的实际连接本地传输数据吗?

以下是我实际遇到的问题的更详细内容。我使用 OpenVPN 连接各种客户端-服务器应用程序。最重要的是,这些应用程序始终通过 VPN 发送数据。VPN 不是可选的,而是强制性的。遗憾的是,当 VPN 死机、忘记打开或以某种方式神秘地自行关闭时……这些应用程序开始通过我的本机连接发送数据包。这是绝对不行的。我相信这个问题有解决办法,但遗憾的是,duckduckgo 和研究它并没有取得成果。

另外,正如标题所述,我无权为此配置我的路由器。我愿意使用虚拟机,也许将其锁定为仅隧道连接。

答案1

使用 iptables (Linux 防火墙) 我可以将访问限制为仅 VPN 连接:

#Clear all previous entries
iptables -F

iptables -A INPUT -i tun+ -j ACCEPT

iptables -A OUTPUT -o tun+ -j ACCEPT

iptables -A INPUT -s 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT

#myvpn.com
iptables -A INPUT -s myvpn.com -j ACCEPT

iptables -A OUTPUT -d myvpn.com -j ACCEPT

#DNS
#openVPN needs DNS to resolve hostnames before it connects. If you are paranoid about dnsleakge, which isn't supposed to be a problem with VPN as all connections are tunneled, you can remove this entry, and then run these iptables commands after you connect to the VPN.
iptables -A INPUT -s 8.8.4.4 -j ACCEPT

iptables -A OUTPUT -d 8.8.4.4 -j ACCEPT

iptables -A INPUT -j DROP

iptables -A OUTPUT -j DROP

答案2

快速简便的解决方案是采用 VM 路由并将其专门绑定到您希望它使用的网络设备(在本例中为您的 VPN)。

由于您已经指出这是一个可行的解决方案,并且没有提及您喜欢的 VM 平台,因此我将跳过详细介绍配置步骤的任何步骤。但是,对于我使用过的所有平台(VMWare、VirtualBox 等),配置都非常简单,关键是禁用任何与非 VPN 网络设备的 VM 绑定。如果您想要具体信息,我建议您查看是否已经回答过该问题,如果没有,请就该主题提出新问题。

相关内容