最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Firewalld 防火墙区域与端口管理如何写
时间:2026-08-24 08:00:48 编辑:袖梨 来源:一聚教程网
firewalld核心是“先定区域、再配规则”,区域决定信任等级,端口或服务决定放行流量;必须明确当前区域(如public、dmz)并配合--permanent与--reload实现持久化生效。
Firewalld 的区域与端口管理,核心是“先定区域、再配规则”,不是直接操作端口,而是把端口放进某个区域的策略里。区域决定信任等级,端口(或服务)决定放行什么流量——两者结合才构成完整访问控制。
明确当前使用的区域
区域是策略容器,必须知道规则加在哪个区域才生效。常见误区是默认用 public,但实际网卡可能属于别的区域。
- 查看所有可用区域:
firewall-cmd --get-zones - 查看当前活动区域(即哪些网卡属于哪个 zone):
firewall-cmd --get-active-zones - 查看某区域的完整配置(含已开放端口和服务):
firewall-cmd --zone=public --list-all - 临时切换网卡所属区域(比如把 eth0 放入 dmz):
firewall-cmd --zone=dmz --add-interface=eth0 - 永久设置默认区域(重启也生效):
firewall-cmd --permanent --set-default-zone=work,之后要--reload
按需开放 TCP/UDP 端口
端口开放必须指定协议(tcp 或 udp),且区分临时和永久。不加 --permanent 的操作重启后失效。
- 永久开放 8080/tcp:
firewall-cmd --zone=public --add-port=8080/tcp --permanent - 永久开放 UDP 53 端口(DNS):
firewall-cmd --zone=public --add-port=53/udp --permanent - 批量开放多个端口:
firewall-cmd --zone=public --add-port={80,443,8080}/tcp --permanent - 开放端口范围(如 3000–3100):
firewall-cmd --zone=public --add-port=3000-3100/tcp --permanent - 确认是否生效:
firewall-cmd --zone=public --query-port=8080/tcp(返回 yes 即成功)
优先用服务代替裸端口
firewalld 预定义了 http、ssh、mysql 等服务,它们自带端口+协议+辅助规则(如连接跟踪),比手动开端口更安全、可维护性更强。
- 查系统支持的服务:
firewall-cmd --get-services - 永久启用 HTTP 服务:
firewall-cmd --zone=public --add-service=http --permanent - 启用自定义服务(需先写好 XML 文件放在
/etc/firewalld/services/):firewall-cmd --reload后再--add-service=myservice - 禁用某服务:
firewall-cmd --zone=public --remove-service=ftp --permanent
规则生效必须重载
所有带 --permanent 的操作只是写入配置文件,不会立即生效;所有不带 --permanent 的操作即时生效但不持久。两者都要配合重载才能完成闭环。
- 重载使永久规则生效:
firewall-cmd --reload - 重载不影响已有连接,也不会断 SSH(只要 SSH 规则本身没被删)
- 检查防火墙是否运行:
firewall-cmd --state(返回 running 表示正常) - 如果 reload 失败,可用
journalctl -u firewalld查错误日志