s-blog

Firewalld 防火墙配置

ssssmy · 2026-05-28 · 3 min · CentOS

1. 安装 firewalld

# 安装
sudo apt update
sudo apt install firewalld -y

# 启动并开机自启
sudo systemctl start firewalld
sudo systemctl enable firewalld

2. 检查 firewalld 状态

sudo firewall-cmd --state
# running / not running

# 查看更详细的状态
sudo systemctl status firewalld

3. 查看当前防火墙规则

# 查看默认区域(通常是 public)
sudo firewall-cmd --get-default-zone

# 查看活动区域及其规则
sudo firewall-cmd --list-all

# 查看所有预定义服务
sudo firewall-cmd --get-services

输出示例:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no

4. 管理防火墙规则

允许服务

sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
  • --permanent:使规则永久生效(重启后仍然有效)
  • 不加 --permanent,规则会在重启后失效

允许端口

# 添加端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 移除端口
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

# 端口范围
sudo firewall-cmd --zone=public --add-port=5000-6000/udp --permanent

拒绝特定 IP

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject' --permanent

5. 应用更改

每次修改规则后必须重新加载才能生效:

sudo firewall-cmd --reload
# 或
sudo systemctl restart firewalld

6. 其他常用命令

命令 说明
sudo firewall-cmd --list-ports 查看开放的端口
sudo firewall-cmd --list-services 查看允许的服务
sudo firewall-cmd --get-active-zones 查看活动的区域
sudo firewall-cmd --zone=public --remove-service=ftp --permanent 移除某个服务
sudo firewall-cmd --zone=public --query-port=80/tcp 检查 80 端口是否开放

7. 禁用 firewalld

如果想停止 firewalld 并改用 ufw 或 iptables:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

总结

  • firewalld 提供更高级的防火墙管理(如动态规则、区域管理)
  • 使用 firewall-cmd 配置规则,记得加 --permanent--reload
  • 简单需求用 ufw 更易用(sudo ufw enable + sudo ufw allow 22
  • Ubuntu/Debian 优先用 ufw,CentOS/RHEL 用 firewalld

原文链接:https://www.ssssmy.com/notes/firewalld-fang-huo-qiang-pei-zhi