Linux 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
sudo firewall-cmd --set-default-zone=dmz
3. 规则管理
开放端口/服务
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-service=http
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/端口
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)
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.10
sudo firewall-cmd --reload
IP 伪装(Masquerade)
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
验证端口是否开放。