如何确保出站 TCP/IP 流量始终使用 VPN,即使在使用 Wifi 时也是如此?

如何确保出站 TCP/IP 流量始终使用 VPN,即使在使用 Wifi 时也是如此?

我想确保在来自任何后台服务的任何 TCP 流量发送或接收数据之前我的 VPN 已启动并运行。我如何保证情况确实如此?

当我连接到 Wifi 接入点(星巴克)时要求我在继续会话之前按“我同意”,我该如何处理这种特殊情况?

答案1

也许你可以使用 iptables 来做到这一点。至少如果“通过 VPN”是 iptables 可以看到的东西,例如,它是一个单独的隧道设备。假设 vpn 是设备“vpn”,如下所示:

iptables -P 输出下降
iptables -A 输出 -o vpn -j 接受
iptables -A 输出 -o lo -j 接受

# DHCP
iptables -A 输出 -p udp --sport 68 --dport 67 -j 接受 # DHCP

# “我同意”
iptables -A 输出 -p udp --dport 53 -j ACCEPT # DNS/UDP
iptables -A 输出 -p tcp --dport 53 -j ACCEPT # DNS/TCP
iptables -A 输出 -p tcp --dport 80 -m 所有者 --uid-owner您的用户 ID-j 接受

最后三个规则是允许您访问“我同意”网页。单击“我接受”按钮并且 VPN 启动后,您可以删除它们。请注意,在此期间某些内容可能会泄露,特别是 DNS 查找。避免这种情况要困难得多。

(未经测试,我建议安装wireshark并在需要时运行调试。我很确定它是正确的,但我对那条DHCP线路最没有信心。它可能不允许足够的...如果你没有获得IP地址,这就是问题所在)

相关内容