firewalld防火墙的详细用法及示例
涵盖规则管理、端口控制、服务配置等核心操作:
二、firewalld 防火墙 (CentOS/RHEL 系)
1. 基础操作
# 查看状态
sudo firewall-cmd --state # 检查运行状态
sudo firewall-cmd --list-all # 显示所有规则(含区域、服务、端口)
# 启用/禁用
sudo systemctl start firewalld # 启动
sudo systemctl enable firewalld # 开机自启
sudo systemctl stop firewalld # 停止
2. 区域(Zone)管理
# 查看所有区域
sudo firewall-cmd --get-zones
# 查看默认区域
sudo firewall-cmd --get-default-zone
# 修改默认区域(如设为 `dmz`)
sudo firewall-cmd --set-default-zone=dmz
3. 规则管理
开放端口/服务
# 永久开放 TCP 80 端口
sudo firewall-cmd --permanent --add-port=80/tcp
# 开放预定义服务(如 http)
sudo firewall-cmd --permanent --add-service=http
# 允许来自特定 IP 的 SSH
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" service name="ssh" accept'
# 重新加载配置(必须执行!)
sudo firewall-cmd --reload
阻止 IP/端口
# 阻止单个 IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
# 阻止整个网段
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" drop'
# 关闭端口
sudo firewall-cmd --permanent --remove-port=3306/tcp
删除规则
# 删除已开放的端口
sudo firewall-cmd --permanent --remove-port=80/tcp
# 删除服务规则
sudo firewall-cmd --permanent --remove-service=http
# 删除富规则(需完全匹配原规则)
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="203.0.113.5" service name="ssh" accept'
4. 高级功能
端口转发(NAT)
# 将 8080 端口转发到 192.168.1.10:80
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.10
sudo firewall-cmd --reload
IP 伪装(Masquerade)
# 启用 IP 伪装(用于 NAT)
sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --reload
临时与永久规则
# 临时开放端口(重启后失效)
sudo firewall-cmd --add-port=9000/tcp
# 将临时规则转为永久
sudo firewall-cmd --runtime-to-permanent
四、注意事项
- 规则顺序:firewalld 使用优先级机制。
- 持久化:firewalld 需加
--permanent后执行--reload。 - 服务依赖:确保防火墙允许的端口与服务的实际监听端口一致。
- 测试规则:修改后使用
telnet或nmap验证端口是否开放。