CentOS系统中的firewall-cmd是管理防火墙的重要工具。本文将详细介绍各种常用的防火墙配置命令,帮助您快速掌握防火墙管理技巧。
🔓 端口管理
开放单个端口
firewall-cmd --zone=public --add-port=443/tcp --permanent 相当于配置:
<port protocol="tcp" port="443"/> 开放端口范围
firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent 相当于配置:
<port protocol="tcp" port="30000-32767"/> 针对特定IP开放端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.244.0.0/16" port protocol="tcp" port="1-65535" accept' 相当于配置:
<rule family="ipv4">
<source address="10.244.0.0/16"/>
<port protocol="tcp" port="1-65535"/>
<accept/>
</rule> 删除端口规则
firewall-cmd --zone=public --remove-port=80/tcp --permanent 🔄 配置管理
重新加载配置
firewall-cmd --reload 查看防火墙规则
查看public区域规则:
firewall-cmd --list-all 仅查看端口部分:
firewall-cmd --zone=public --list-ports 查看所有区域策略:
firewall-cmd --list-all-zones ⚙️ 服务管理
防火墙服务控制
# 启动
systemctl start firewalld
# 停止
systemctl stop firewalld
# 重启
systemctl restart firewalld
# 启用开机自启
systemctl enable firewalld
# 禁用开机自启
systemctl disable firewalld 查看防火墙状态
firewall-cmd --state 🌐 高级配置
IP地址伪装
IP地址伪装用于使内部网络的计算机可以与外部网络通信(NAT功能)。
# 启用IP地址伪装
firewall-cmd --add-masquerade --permanent
# 关闭IP地址伪装
firewall-cmd --remove-masquerade
# 检查是否允许伪装IP
firewall-cmd --query-masquerade 网络接口管理
将网络接口添加到信任区域,允许该接口的所有流量通过防火墙:
firewall-cmd --zone=trusted --add-interface=cni0 --permanent 等价于生成配置文件 /etc/firewalld/zones/trusted.xml:
<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
<short>Trusted</short>
<description>All network connections are accepted.</description>
<interface name="cni0"/>
</zone> 端口转发
配置端口转发,将本地端口的流量转发到其他服务器:
# 将访问63790端口的流量转发到192.168.0.1:6379
firewall-cmd --add-forward-port=port=63790:proto=tcp:toaddr=192.168.0.1:toport=6379 --permanent 💡 提示: 所有带 --permanent 参数的命令都需要执行 firewall-cmd --reload 才能生效。