如何在多个docker容器和主机之间创建隧道?

如何在多个docker容器和主机之间创建隧道?,docker,transparentproxy,Docker,Transparentproxy,我正在设置两个docker容器(例如A(172.17.0.2)和B(172.17.0.3)),它们使用桥接器连接。我希望将所有请求从主机容器路由到容器A、容器B,然后再路由到internet。响应应遵循相反的路径 到目前为止,我已经能够使用主机和一个容器(比如A)完成这项工作。我已经在容器A上设置了以透明模式运行的mitmproxy。我开始在端口8080上运行mitmproxy(使用主机绑定,因此A上的端口8080绑定到主机上的端口8081)。我能够通过A路由主机上的所有连接,然后返回主机。我正

我正在设置两个docker容器(例如A(172.17.0.2)和B(172.17.0.3)),它们使用桥接器连接。我希望将所有请求从主机容器路由到容器A、容器B,然后再路由到internet。响应应遵循相反的路径

到目前为止,我已经能够使用主机和一个容器(比如A)完成这项工作。我已经在容器A上设置了以透明模式运行的mitmproxy。我开始在端口8080上运行mitmproxy(使用主机绑定,因此A上的端口8080绑定到主机上的端口8081)。我能够通过A路由主机上的所有连接,然后返回主机。我正在将端口80和443上的所有连接转发到docker容器上的端口8080

这些规则使用一个docker容器作为非根用户完成路由

iptables-I输出-t nat-ptcp--dport 80-m所有者--uid所有者0-j DNAT--127.0.0.1:8080
iptables-I输出-t nat-ptcp--dport443-m所有者--uid所有者0-j DNAT--127.0.0.1:8080
我在8500端口的容器B上以透明模式运行mitmproxy,在容器A上尝试了类似的规则。我认为这是正确的做法:

将端口80/443上的所有主机流量路由到容器A上的端口8080 将8080端口上的所有集装箱A交通(所有交通应在此端口上)路由至集装箱B上的8500端口 容器B应该向internet发出实际请求,并将响应发送回A,A将响应发送回主机

当我在容器A上设置如下规则时,我看到在容器B上有一个GET请求的无限循环

iptables-I输出-t nat-ptcp--dport 8080-m所有者--uid所有者0-j DNAT--172.17.0.3:8500
我认为这与docker在主机上设置的现有iptables规则有关,但我无法确定如何使其工作

谢谢你的帮助