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
才能生效。