注:docker和firewall底层都会操作iptable,但是docker操作的iptable不会在firewall上留记录,firewalld每次重启也会重置iptables端口规则,所以会导致下面两个问题:
1、后启动的docker服务会在firewalld上打个洞,firewalld没有允许的端口也会开放出去
2、后启动的firewalld服务,会清空iptables规则,重置规则会影响docker容器的启动,解决办法就是修改docker配置,不操作iptables,查看第二步的操作
在防火墙开启的状态下安装ZCBUS
systemctl start firewalld
systemctl enable firewalld
一、修改软件安装包中server_full/commom/.zcbus.common文件
###tj
note "TJ"
info "OK : ${ok_num} ERROR : ${error_num} WARNING : ${warn_num}"
if [[ ${error_num} -gt 1 ]] || [[ ${warn_num} -gt 0 ]];then ### 将原本的${error_num} -gt 0 改为 ${error_num} -gt 1 允许有一个错误,保存后再使用zcmgr.sh安装软件
note "modify command"
cat ${tmp_file_1}
if [ ${tmp_file_1} ];then
### sh ${tmp_file_1}
cat ${tmp_file_1} ### 将sh ${tmp_file_1} 注释掉,在下面改个命令即可(我改的是cat ${tmp_file_1})
fi
rm -rf ${tmp_file_1}
let cktimes=cktimes+1
二、修改docker配置,不操作iptables
# 修改配置
vim /etc/docker/daemon.json
{
"iptables":false
}
保存并重启docker
systemctl restart docker
三、、配置端口白名单
firewall-cmd --zone=public --add-port=8890/tcp --permanent
## 开放8890端口(即所有机器都可以访问该端口)
firewall-cmd --zone=public --remove-port=8890/tcp --permanent
## 关闭8890端口 (除本机外所有机器都不可访问)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.37.1" port protocol="tcp" port="8890" accept"
## 配置使IP为192.168.0.109能够访问本机的8890端口
firewall-cmd --reload
## 重新载入一下防火墙设置,使之生效
firewall-cmd --zone=public --list-rich-rules
## 查看白名单
firewall-cmd --zone=public --list-ports
## 查看开放的端口
注:修改完成后最好将firewalld重启一下
文档更新时间: 2023-06-01 22:40 作者:操李红