UFW设置Docker防火墙规则

经过尝试,以下方法无法在实际应用中获得良好的效果,已经弃之不用。全部转而使用iptables配置防火墙,同时弃用ufw!

UFW作为iptables的前端,被Docker直接忽视。Docker在容器建立时候如果对于端口开放有需求会直接修改iptables的规则,令到ufw的规则失效。

使用以下命令查看docker 在防火墙上开的洞

iptables -L DOCKER

解决方法来自https://github.com/chaifeng/ufw-docker

下载并安装ufw-docker

sudo wget -O /usr/local/bin/ufw-docker \
  https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker
chmod +x /usr/local/bin/ufw-docker
ufw-docker install
systemctl restart ufw

安装完成后用以下命令为每个需要对外开放的容器打开需要的端口

ufw-docker allow 【容器名称】

完成以上步骤,此时已将容器端口在ufw后开放,需要通过ufw命令再一次将端口正式对外开放

ufw allow 【端口】

不要忘记增加一条记录确保docker容器之间的内网传输不被阻拦

ufw allow from 172.16.0.0/12 comment 'all traffic between docker containers'

发表回复