正确管理 Docker 主机上的 iptables 规则

正确管理 Docker 主机上的 iptables 规则

我正在使用 Gentoo 和 Docker。我有很多自己的 iptables 规则,并将它们保存在 /var/lib/iptables/rules-save 中。Docker 在启动时添加了很多自己的规则。似乎 iptables 每次都会自动保存到 rules-save 中,但我认为这个文件的作用类似于 iptables-persistent ubuntu 包中的 /etc/iptables/rules.v4。

我的问题是,如何正确管理所有规则?在 docker 启动之前加载之前保存的 docker 规则是否安全?如果 docker 决定更改某些规则,在这样的设置下不会发生这种情况?

当我添加新规则时,我会使用 iptables -I 手动执行,然后编辑 /var/lib/iptables/rules-save 并在那里添加。我认为,由于 docker,仅添加规则并从该文件重新加载所有规则并不安全。我需要向 DOCKER-ISOLATION 链添加规则,并确保此规则在 docker 添加的任何 DOCKER-ISOLATION 规则之前存在,即使 docker 重新启动。

请提供建议,如何使用 docker 安全地管理 iptables 规则。

答案1

根据我的经验,大多数情况下你应该完全忽略docker。

它会很乐意调整你的 iptables 规则来满足它的需要,你不需要以任何方式去适应。

我在防火墙由以下系统管理的系统上使用 docker:

  • 岸墙
  • 防火墙
  • 我,手动

在所有情况下,我都没有为 docker 设置任何内容,甚至没有 DOCKER-ISOLATION 链 —— docker 通常会在启动时将其设置到位。

如果您确实需要动态更改防火墙,那么我同意从保存的规则文件重新加载可能不是最好的方法。

您可能应该手动添加规则(例如 iptables -A),并编辑规则文件,但不要从该规则文件进行还原。

可能需要重新加载 docker 守护进程以使其恢复自己的防火墙规则,但我现在无法测试这一点,并且通常会尽量避免这样做。

相关内容