在 CentOS 系统里管理网络流量,防火墙是最基础也最关键的一环。而 firewalld 作为默认的防火墙管理工具,既能满足日常端口开放需求,也支持更精细的规则控制。下面就从安装开始,一步步把常用配置拆解清楚——别被命令行吓到,其实操作起来非常直观。

安装 firewalld
如果系统还没装 firewalld,用一条命令就能搞定:
sudo yum install firewalld
启动和启用 firewalld
装好之后,启动服务并让它开机自启,省得每次重启都要手动来一遍:
sudo systemctl start firewalld
sudo systemctl enable firewalld
查看防火墙状态
想确认防火墙是否在运行?直接执行:
sudo firewall-cmd --state
查看开放端口
想知道当前哪些端口是放行的,用 --list-all 一把梭:
sudo firewall-cmd --list-all
开放端口
假设需要开放 8080 端口(TCP),只需一条命令加 --permanent 参数让它永久生效:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
这里 --permanent 很关键——不加的话重启后规则就丢了。
重新加载防火墙配置
每次修改规则后,记得重新加载配置才能让新规则生效:
sudo firewall-cmd --reload
关闭端口
想关闭某个端口时,换个参数 --remove-port 即可,同样需要搭配 --permanent 和 reload:
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
允许特定 IP 访问
如果只希望某个 IP(比如 192.168.1.100)能访问 8080 端口,可以用富规则(rich rule)来实现:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept' --permanent
sudo firewall-cmd --reload
删除规则
删除规则和关闭端口是同一套操作,比如删除刚才开放的 8080 端口:
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
查看富规则
如果配置了多条富规则,可以用下面命令查看当前所有富规则:
sudo firewall-cmd --list-rich-rules
示例:配置 HTTP 和 HTTPS
以一个常见场景收尾——开放 Web 服务所需的 80 和 443 端口:
# 开放 HTTP 端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# 开放 HTTPS 端口
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
# 重新加载防火墙配置
sudo firewall-cmd --reload
以上这些基本操作,已经覆盖了日常防火墙管理的绝大多数场景。实际使用时,根据业务需求灵活组合规则即可,不必死记硬背——用几次自然就熟了。