登录
首页 >  文章 >  linux

Linux如何配置防火墙firewalld_Linux firewalld防火墙配置大全

时间:2026-05-03 15:02:42 422浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个文章开发实战,手把手教大家学习《Linux如何配置防火墙firewalld_Linux firewalld防火墙配置大全》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

firewalld常见问题根源是运行时与永久配置不一致、zone绑定错误及rich rule语法错误;必须用--permanent写入磁盘并执行--reload生效,否则规则仅临时存在或完全不匹配。

Linux如何配置防火墙firewalld_Linux firewalld防火墙配置大全

firewalld 不是“配一次就完事”的工具,运行时配置和永久配置不一致是 90% 的连不上问题根源。

firewall-cmd --permanent 参数漏了就白干

几乎所有端口开放失败,都是因为只加了 --add-port 却没加 --permanent。临时规则在 reload 或重启后直接消失,但你可能根本没意识到它只是“临时”的。

  • 正确写法:firewall-cmd --permanent --add-port=8080/tcp(写入磁盘配置)
  • 错误写法:firewall-cmd --add-port=8080/tcp(仅内存生效,systemctl restart firewalld 后失效)
  • 加了 --permanent 后必须执行 firewall-cmd --reload 才能真正启用,否则规则还在文件里躺着没加载
  • 想验证是否真写进去了?查配置文件:cat /etc/firewalld/zones/public.xml,看里面有没有对应

双网卡场景下 zone 绑定错一个接口就全不通

比如外网卡 ens192 和内网卡 ens224,默认都落在 public 区域。如果你只开了 public 的 80 端口,但实际请求走的是内网卡——而内网卡没显式绑定到任何 zone,它就用默认 zone;如果默认 zone 被改成 drop,那所有流量直接丢弃,连 SSH 都连不上。

  • 查接口归属:firewall-cmd --get-active-zones
  • 把外网卡明确绑到 publicfirewall-cmd --permanent --zone=public --change-interface=ens192
  • 把内网卡绑到宽松的 trusted 或自定义 zone:firewall-cmd --permanent --zone=trusted --change-interface=ens224
  • 改完务必 firewall-cmd --reload,否则 --change-interface 不生效

rich rule 写错 source 就等于没写

想限制只有 192.168.2.100 能访问 8088 端口,用富规则最直接,但 source 地址写法有坑:

  • 正确:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.2.100" port port="8088" protocol="tcp" accept'
  • 错误:漏掉 family="ipv4" —— 默认是 ipv6,ipv4 流量完全不匹配
  • 错误:写成 source ip="192.168.2.100" —— ip 不是合法关键字,必须用 address
  • 错误:没加 --permanent,reload 后规则消失,但你以为它还在
  • 调试技巧:加 log prefix="rich-8088" 到规则末尾,然后 journalctl -u firewalld | grep rich-8088 看是否命中

真正麻烦的不是命令记不住,而是 --permanent--reload 这两个动作总被当成可选步骤跳过;一旦出问题,第一反应往往是怀疑端口、服务、路由,却忘了 firewalld 本身根本没加载你写的那行规则。

终于介绍完啦!小伙伴们,这篇关于《Linux如何配置防火墙firewalld_Linux firewalld防火墙配置大全》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>