如何使用 nftables 绕过单个 docker 容器的 vpn 隧道?

如何使用 nftables 绕过单个 docker 容器的 vpn 隧道?

我正在尝试提出一个解决方案来绕过传入和传出的 docker 容器中的 vpn 隧道。

我使用的 VPN 是 Mullvad VPN,在隧道分割段他们已经解决了如何排除某些 IP 的传出流量的问题。这对我的 Docker 容器不起作用,因为我的容器的流量是通过 Mullvad VPN 创建的隧道路由的。

这是我的 nftables 配置:

define EXCLUDED_IPS = {
   # An ip to bypass
   1.2.3.4,
}
define CONTAINER_IPS = {
   # Local Proxy
   10.10.5.0/24,
}

table inet excludeTraffic {
  chain excludeOutgoing {
    type route hook output priority 0; policy accept;
    ip daddr $EXCLUDED_IPS ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
  }
  # I have created this chain which is not working
  chain excludeContainerFromTunnel {
    type route hook output priority -5; policy accept;
    ip daddr $CONTAINER_IPS ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
  }
}

容器的网络与 绑定10.10.5.1,并且是具有 子网的桥接网络10.10.5.0/24

编辑:输出ip rule

$ ip rule
0:      from all lookup local
32764:  from all lookup main suppress_prefixlength 0
32765:  not from all fwmark 0x6d6f6c65 lookup 1836018789
32766:  from all lookup main
32767:  from all lookup default

答案1

您是否尝试过禁用 vpn?据我所知,以前尝试过类似的事情,vpn 连接上的适配器流量会被消耗,无法通过同一适配器绕过它。如果您可以创建一个虚拟适配器,但使用相同的网卡,然后将其授予您尝试与之通信的网络的成员资格,那将很有趣。

我假设您希望您的机器能够连接到互联网和局域网,但不使用 VPN 路由或阻止另一个?

相关内容