我有一个 docker 设置,它禁用了篡改iptables
. 所以一切都很好,我可以通过指定规则来允许或阻止特定端口到外部世界ufw
。直到我发现无法访问访问网站的客户端的真实IP的问题。我所看到的只是我的容器内的 172.0.0.1,它是 IPdocker0
网络。
我找到了一个解决方案,要求我将以下内容添加到我的 iptables
iptables -t nat -A PREROUTING ! -i docker0 -p tcp --dport 80 -j DNAT --to-destination 172.17.0.7:80
172.17.0.7
代理容器的IP在哪里。现在的问题是,如果碰巧重新启动,这个 IP 往往会改变,然后我的规则将不再有效。
如果可能的话,是否有任何优雅的方法来解决这个问题,而无需进入为容器分配静态 IP 的路线。
如果您需要查看我的设置的更多详细信息,请告诉我。我很高兴发布它们。
您可以尝试在没有 userland 代理的情况下运行 dockerd,这是屏蔽 IP 的过程。
--userland-proxy=false
但是这样做有各种问题。
否则,将“真实”IP 路由到容器是最干净的解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句