轻聆月下
轻聆月下
发布于 2024-03-24 / 121 阅读
0
0

使用UFW保护Docker

一、问题

docker 容器启动时,如果添加了 -p 参数,则 docker 会开启 iptables NAT 规则。此时, -p 参数指定的端口,不会得到 iptables 的保护,因此 UFW 设置的规则,对 docker -p 参数指定的端口全都不生效。

二、解决

第一步:禁止 docker 操作 iptables

给 docker 添加 --iptables=false 参数。

可以修改 /etc/default/docker 文件中的 DOCKER_OPTS,增加 --iptables=false。如下:

DOCKER_OPTS="--iptables=false"

此选项会禁用 docker 添加 iptables 规则。

第二步:编辑UFW默认规则链

编辑 /etc/ufw/before.rules 文件,在文件末尾添加内容如下:

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
COMMIT

第三步:重载服务使上述修改生效

重启docker和ufw:

sudo systemctl restart docker
sudo ufw disable
sudo ufw enable

如果不行,直接重启操作系统。

sudo reboot

评论