我将 IPredator VPN 与 openVPN 结合使用,我想确保如果连接断开,我不会在没有 VPN 的情况下从互联网提交数据。我听说我可以使用 iptables 和范围来做到这一点。我怎样才能做到这一点?我怎样才能找到我的 VPN 分配给我的 IP 范围?
答案1
在启动 VPN 之前,请复制netstat -rn
和ifconfig -a
。启动您的 VPN,这两个命令的差异将告诉您 VPN 在路由方面创建了哪些网络,以及您被分配了哪些 IP 来获得这些网络的可见性。您还需要获取提供 VPN(或流量)的服务器的 IP到VPN 服务器将无法访问它)。我还假设您的 VPN 服务器使用udp
而不是tcp
,如果它确实使用,tcp
您将需要更新第二条规则以反映这一点。
一旦你有了这些,你就可以OUTPUT
在 iptables 中添加规则来设置你的主机可以看到的内容
iptables -F OUTPUT
iptables -I OUTPUT -d VPNSERVER -p udp -j ACCEPT -m comment --comment "Allow traffic to VPN SERVER"
iptables -I OUTPUT -s VPNIP -d VPNNETWORK/CIDR -j ACCEPT -m comment --comment "Allow all traffic to VPN newtork"
iptables -I OUTPUT -j DROP -m comment --comment "Drop all other traffic"
iptables -F OUTPUT
刷新您现有的规则,请注意这一点,但需要按照您最初的问题要求进行操作。
VPNSERVER
将是您的 VPN 服务器的 IP。
VPNIP
将是 VPN 分配给您的 IP。 将是出现在类似的VPNNETWORK/CIDR
路由网络netstat -rn
10.1.0.0/24
调试这些规则时,记录正在删除的内容可能会很方便,因为某些协议可能需要一些额外的处理:
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
这应该足以阻止OUTBOUND
从您的 PC 到互联网的流量,并且只允许流量到达 VPN 服务器及其提供的网络。
OP 指出 Arch Linux 不附带netstat
或ifconfig
。在这种情况下,替代方案是:
ip addr show
将向您显示界面并ip route show
显示您拥有的路线。