如何避免 openvpn 连接断开时 IP 数据包泄露

如何避免 openvpn 连接断开时 IP 数据包泄露

我有一台运行 Ubuntu 12.04 的笔记本电脑(仍在等待 14.04.1)
。我已经使用网络管理器设置了一个 openvpn 网络。
如果 vpn 断开,网络管理器会通过可用的网络接口重新设置其路由,数据包将通过其他网络路由。
有没有简单的方法可以避免这种情况?


经过一些测试:
VPN 网关可以有多个不同的地址,你可以使用命令检查

nslookup VPN_gateway_name

如果是这种情况,则每个建立 VPN 的新请求都将随机使用地址池中的一个 IP。为了不在每个新连接时更改 IP 过滤器,可以使用网关的 DNS 名称;iptables将为每个 IP 设置一条规则。

第二条规则如下

 sudo iptables -A OUTPUT -d your_vpn_gateway_dns_name -j ACCEPT

答案1

Iptables 将执行此操作

sudo iptables -A OUTPUT -o tun0 -j ACCEPT
sudo iptables -A OUTPUT -d your_vpn_gateway_ip -j ACCEPT
sudo iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
sudo iptables -A OUTPUT -j REJECT

假设所有输出都发往 VPN。注意:根据您的网络,您可以通过各种工具(如 wireshark、sort 等)监控您的流量。

答案2

您也可以使用 udev 轻松解决此问题,因为当 vpn 连接断开时,tun 接口会被删除。每当 vpn 连接终止时,此规则就会断开与您的 wifi ap 的连接,因此您必须再次手动重新连接:创建一个文件/etc/udev/rules.d/81-vpn-firewall.rules,并将此规则添加到其中:

KERNEL=="tun0", ACTION=="remove", RUN+="/usr/bin/nmcli dev disconnect iface wlan0"

最后重启udev:

sudo service udev restart

相关内容