我在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?
答案 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