我想确保在来自任何后台服务的任何 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地址,这就是问题所在)