一、防火操作墙相关命令
1、查看防火墙状态 : systemctl status firewalld.service
注:active是绿的running表示防火墙开启
2、关闭防火墙 :systemctl stop firewalld.service
3、开机禁用防火墙自启命令 :systemctl disable firewalld.service
4、启动防火墙 :systemctl start firewalld.service
5、防火墙随系统开启启动 : systemctl enable firewalld.service
6、重启防火墙 : firewall-cmd --reload
二、防火墙端口开放相关命令
1、查询已经开放的端口 :firewall-cmd --list-port
2、查询某个端口是否开放 :firewall-cmd --query-port=80/tcp
3、开启端口 :firewall-cmd --zone=public --add-port=80/tcp --permanent
注:可以是一个端口范围,如1000-2000/tcp
4、移除端口 :firewall-cmd --zone=public --remove-port=80/tcp --permanent
5、命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--remove-port=80/tcp #移除端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
三、防火墙放行区域问题(如果防火墙已放通,但端口实际不通,则需关注本问题)
1. 物理网卡不在 public 区域的情况:
目前仅讨论执行:firewall-cmd --get-active-zone,打印信息中没有 public
【解决方案】
步骤 1:将物理网卡添加到 public 区域
# 查找物理网卡名称(输出如 eth0, ens3 等)
PHYSICAL_CARD=$(ip -o link show | grep -v lo | grep -v docker | grep -v br- | grep UP | awk '{print $2}' | cut -d: -f1)
# 添加到 public 区域(关键命令)
sudo firewall-cmd --permanent --zone=public --add-interface=$PHYSICAL_CARD
# 验证(应输出 public,但需过几秒后验证)
firewall-cmd --get-zone-of-interface=$PHYSICAL_CARD
步骤 2:重启 firewalld 和 Docker
# 重载防火墙配置
sudo firewall-cmd --reload
# 重启 Docker 重建 iptables 规则(如果有在使用 Docker 容器服务器去情况)
sudo systemctl restart docker
步骤 3:验证配置
# 确认 public 区域现在包含物理网卡且端口存在
sudo firewall-cmd --list-all --zone=public