iptables 阻止 VPN 重新连接

iptables 阻止 VPN 重新连接

我为 VPN 访问提出的解决方案遇到了一些麻烦。

这就是我想要的:

  • 来自 deluge 的所有流量始终通过 VPN
  • 当 VPN 断开连接时,deluge 的互联网连接就会被切断
  • 当 VPN 断开连接时,我仍然可以通过 SSH 和瘦客户端在本地访问守护程序
  • 当 VPN 重新连接时,我希望 deluge 重新建立连接。

这是我目前拥有的 iptables:

sudo iptables -A OUTPUT -m owner --gid-owner pi -o lo -j ACCEPT
sudo iptables -A OUTPUT -m owner --gid-owner pi -d 10.0.0.0/16 \! -o tun0 -j ACCEPT
sudo iptables -A OUTPUT -m owner --gid-owner pi  \! -o tun0 -j REJECT

这有点有效。它确实存在一些问题:

  • VPN 断开连接后,由于我的第二条规则,它无法重新连接(我假设)

经过一番研究,iptables 中似乎没有基于进程/应用程序应用规则的功能,只能通过 gid 或 uid 来应用规则。那是对的吗?

那么我的想法是否正确,唯一的解决方案是以不同的用户身份运行 deluged,然后在 iptable 规则中定位该特定用户?这样 VPN(当前由与 deluged 相同的用户运行)可以重新连接。

附言。对我当前的 iptables 进行审核将不胜感激!

谢谢大家,我很感谢帮助!

答案1

您的 Netfilter 规则的顺序错误:第三个规则永远不会被命中,因为它是第二个规则的特殊情况。

openvpn正常情况下,由于需要超级用户权限来设置接口和路由,所以发送的数据包属于root。因此,特定于用户的规则不应匹配。

您可以用于tcpdump检查新 OpenVPN 连接的数据包是否离开您的系统。如果没有,那么您可以使用 Netfilter 目标 TRACE 来查看它们发生了什么。

相关内容