【问题标题】:Docker and UFW with real IP具有真实 IP 的 Docker 和 UFW
【发布时间】:2017-03-13 01:04:01
【问题描述】:

我有一个 docker 设置,它禁用了篡改iptables 的默认行为。所以一切都很好,我可以通过在ufw 上指定规则来允许或阻止特定端口到外部世界。直到我发现无法访问客户端访问网站的真实IP的问题。我看到的只是容器内的 172.0.0.1,即 IP docker0 网络。

我找到了一个解决方案,要求我将以下内容添加到我的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 分配给容器。

如果您需要查看我的设置的更多详细信息,请告诉我。我很高兴发布它们。

【问题讨论】:

  • 如果这个离题有人可以把它移到相关论坛吗?如果我不能发布与此相关的问题,我不确定为什么我们甚至还有 docker、ubuntu、ufw 和 iptables 标签。

标签: docker docker-compose ubuntu-16.04 iptables ufw


【解决方案1】:

您可以尝试在不使用用户区代理的情况下运行 dockerd,这是屏蔽 IP 的进程。

--userland-proxy=false

虽然有various issues 这样做。

否则routing "real" IP's to containers 是最干净的解决方案。

【讨论】:

    【解决方案2】:

    或者考虑What is the best practice of docker + ufw under Ubuntu解决方案。

    后路由 iptables -t nat -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE 解决方案对我来说效果更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2022-01-17
      相关资源
      最近更新 更多