我可以使用" iptables":false启用真正的用户ip吗?

时间:2017-06-06 21:06:11

标签: docker iptables docker-swarm real-ip

我在docker守护程序配置中使用"iptables": false选项:

/etc/docker/daemon.json:
{
  "iptables": false
}

我使用与this approach类似的选项--publish mode=host--mode=global运行服务。

但是当我在我的应用程序中获得X-Real-IP标头时,其值为172.18.0.1,但不是真正的用户ip。

当我在"iptables": false中启动没有/etc/docker/daemon.json的Docker守护进程时,一切正常,我得到真正的用户ip。

但我需要设置"iptables": false以保留使用Docker的iptables更改。

是否可以在Docker守护程序配置中使用"iptables": false获取真实用户ip?

1 个答案:

答案 0 :(得分:1)

请参阅Docker在没有"iptables": true的情况下创建的规则,并使用"iptables": false复制它们(这是默认设置)。

特别需要这些规则来伪装IP:

iptables -t nat -A POSTROUTING -m addrtype --src-type LOCAL -o docker0 -j MASQUERADE

iptables -t nat -s 172.18.0.0/16 ! -o docker0 -j MASQUERADE