Centos 防火墙Firewall 对docer容器内的端口不起作用

启动防火墙命令:

 systemctl start firewalld
 关闭防火墙命令:

systemctl stop firewalld
重启防火墙命令:

systemctl restart firewalld
设置防火墙开机启动:

systemctl enable firewalld
设置防火墙开机不启动:

systemctl disable firewalld

查看防火墙状态命令:

systemctl status firewalld

开放端口:

firewall-cmd --zone=public --add-port=22/tcp --permanent

  其中:【22/tcp】 为 端口号/协议;

  最后的【--permanent】标识永久生效。如果不加,则重启后失效。

关闭端口:

firewall-cmd --zone=public --remove-port=6379/tcp

查询有哪些端口是开启的:

firewall-cmd --list-port

加载配置文件:

firewall-cmd --reload

重新加载后不是永久生效的将不再生效。

本来这些基本命令就可以控制外网端口的开放、阻止。

主要是不想elecv2P暴露在公网

用后发现问题了,当docker容器只有elecv2p的时候完全没问题,命令都能控制。陆续添加青龙容器后发现,防火墙命令不能控制端口了。对docker容器内端口完全失效。

原来docker绕过Firewall防火墙,直接对iptables这个下手了

下面是解决方案

修改/usr/lib/systemd/system/docker.service配置

vi /usr/lib/systemd/system/docker.service
#找到 ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix://var/run/docker.sock

在中间添加 --iptables=false 看好添加的位置

修改之后 :

ExecStart=/usr/bin/dockerd --iptables=false -H tcp://127.0.0.1:2375 -H unix://var/run/docker.sock
$:wq 保存退

systemctl daemon-reload
systemctl restart docker

把docker网卡加入trust区域

firewall-cmd --permanent --zone=trusted --change-interface=docker0

问题解决了,可以用Firewall命令完美控制端口了。

标签: none

评论已关闭