我不得不在NAT表POSTROUTING链中添加几个iptable条目,以允许docker容器通过Host Machine(to_source)的不同源地址/源接口访问Internet.
事情很好.
例如:
target prot opt source destination
SNAT all -- 100.100.8.0/22 10.1.2.3 to:100.64.0.5
但是,当重新启动docker服务时,它会在我的条目之上插入MASQUERADE规则,因此上面的修复被屏蔽了. Docker容器现在无法访问Internet.
例如:
target prot opt source destination
MASQUERADE all -- 100.100.8.0/22 0.0.0.0/0
SNAT all -- 100.100.8.0/22 10.1.2.3 to:100.64.0.5
无论如何,即使码头重启后,我的POSTROUTING规则始终保持在链的顶端?
解决方法:
如果Ubuntu在您的主机上,您可以使用iptables-save实用程序在启动docker守护程序后将iptables规则保存到文件中.然后,一旦刷新旧规则,您就可以使用iptables-restore& amp;恢复原始的docker规则.保存的规则文件.
如果您不想恢复所有旧的iptables规则,则可以更改保存的规则文件以仅保留您需要的规则.
标签:docker,linux,networking,iptables
来源: https://codeday.me/bug/20190710/1424752.html