firewalld通过firewall-cmd动态管理防火墙规则,支持运行时和永久配置。首先检查服务状态:systemctl status firewalld,未运行则启动并设开机自启。使用firewall-cmd --state查看运行状态,--get-zones列出所有区域,--get-active-zones查看生效区域。区域用于划分网络环境,如public、internal,可绑定接口:--change-interface=eth0,设默认区域:--set-default-zone=public。开放服务或端口,临时添加:--add-service=http,永久添加:--permanent --add-port=8080/tcp或--add-service=https,完成后需--reload使永久规则生效。查看开放项:--list-ports和--list-services。删除规则使用--remove替代--add,如--permanent --remove-port=8080/tcp。富规则实现精细控制,如允许特定IP访问:--add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'。关键在于区分临时与永久配置,合理使用--permanent和--reload。

Linux中使用firewalld管理防火墙,主要是通过命令行工具
firewall-cmd来动态配置网络区域、端口、服务等规则,而无需重启整个防火墙服务。firewalld支持运行时配置和永久配置,灵活适用于不同场景。
查看防火墙状态和基本操作
先确认firewalld服务是否正在运行,可以使用以下命令:
systemctl status firewalld
如果未运行,启动并设置开机自启:
systemctl start firewalld systemctl enable firewalld
查看当前防火墙的基本状态:
firewall-cmd --state # 查看是否运行 firewall-cmd --get-zones # 列出所有区域 firewall-cmd --get-active-zones # 查看当前生效的区域
管理区域(Zones)和网络接口
firewalld通过“区域”来管理不同网络环境的规则,例如
public用于公共网络,
internal用于内部网络。
查看某个区域的详细配置:
firewall-cmd --zone=public --list-all
将某个网络接口绑定到指定区域:
firewall-cmd --zone=internal --change-interface=eth0
设置默认区域:
firewall-cmd --set-default-zone=public
开放端口和服务
firewalld支持按服务名或端口号添加规则。常见服务如http、ssh已预定义。
临时开放一个服务(重启后失效):
firewall-cmd --add-service=http
永久开放一个端口(如8080/tcp):
firewall-cmd --permanent --add-port=8080/tcp
永久开放一个服务:
firewall-cmd --permanent --add-service=https
添加完成后,重载防火墙使永久规则生效:
firewall-cmd --reload
查看已开放的端口或服务:
firewall-cmd --list-ports firewall-cmd --list-services
删除规则和高级配置
删除已添加的规则,只需将
--add换成
--remove。
例如,删除永久开放的8080端口:
firewall-cmd --permanent --remove-port=8080/tcp
删除服务:
firewall-cmd --permanent --remove-service=http
配置富规则(rich rules)可实现更精细控制,比如限制某IP访问特定端口:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
这表示允许来自192.168.1.100的SSH连接。
基本上就这些。firewalld使用起来直观,关键是区分运行时和永久配置,别忘了
--permanent和
--reload的配合使用。不复杂但容易忽略。










