如何将用户定义的docker网桥网络路由出VPN隧道?

如何将用户定义的docker网桥网络路由出VPN隧道?

我正在尝试设置 Squid 代理,以便将浏览器中的某些站点(使用 .pac 文件)路由到 VPN 之外(它们在隧道内无法访问)。因此,我在用户定义的桥接网络中使用 Squid 代理 docker 容器。

然而,默认情况下,隧道会进入您 PC 的整个网络,因此每个网络数据包都会经过隧道。第一个问题是docker网络不可达,因为本地网络的请求正在请求VPN服务器的本地网络。使用命令就可以轻松解决

ip rule add to 172.18.0.0/16 pref 100 table 1
ip route add table 1 to 172.18.0.0/16 dev br-43cb854b8af8
ip route flush cache

pref需要选项,因为 VPN 也创建自己的规则。

但是,代理通过隧道发送请求,因此请求应该从 docker 网络“路由”到我的 PC 的以太网接口,而不是 VPN tun0(VPN 接口名称)

所以,主要问题是

  1. docker 虚拟桥接口(在图片 docker0 上)和主机接口 eth0 之间的连接到底是如何工作的。 (我无法找到一些明显的 iptables 规则或 iproute2 表来解释这一点)? Docker桥网结构
  2. 如何将连接从桥接网络接口路由到所选主机接口(而不是标准 VPN 的 tun0)?

相关内容