指定 Docker 容器代理

本节介绍如何利用桥接的 docker 容器有单独 IP 的特点,通过 source IP 的限制,对特定 docker 容器进行代理,其他走直连。

指定 Docker 容器代理

此方法只能适用于 v2rayA 与要控制路由的 Docker 容器在同一台机器的情况。

透明代理使用 redirect 模式

正如 BT 下载直连 中所列方法,我们可以控制每一个桥接的 Docker 容器的路由。

当 BT 应用运行在 Docker 时,默认的网络模式使用桥接模式(–network=bridge),此时容器会单独获得一个 IP 地址。而 Docker 的默认桥接网络为 172.17.0.0/16,容器会在该地址段中获取一个 IP 使用。如果我们想让所有桥接容器走直连,而特定容器走代理,可使用 RoutingA 进行控制,例如:

# 将规则插入到较前位置
source(172.17.0.213) -> proxy
source(172.17.0.0/16) -> direct

上述规则使得 172.17.0.213 走代理,而 172.17.0.0/16 段直连。

当 docker 服务重启时,容器的 IP 地址可能会发生变化,因此需要固定容器的 IP 地址,方法参见 StackOverflow 上的讨论。

透明代理使用 tproxy 模式

由于一些限制,在此模式下,所有桥接容器默认直连,因此要走代理的容器需要将网络设为 host,即在容器启动时使用 --network host 参数。

注意,host 模式下该容器将无法进行端口映射,容器内部监听的端口将直接监听在宿主上,容易引起端口冲突。

在 Github 上编辑此页

最后更新于: 2021年10月13日 13:55:44 +0800

贡献者: cubercsl