Skip to content
Search CentOS Stream

This page uses Chinese content. Search opens the Chinese documentation.

    Browse this documentation

    firewalld 起步:默认状态与放行服务

    This content is not available in your language yet.

    适用:CentOS Stream 10(firewalld 2.4.3 实测;Stream 9 同理)· 核对日:2026-11-02 · 官方依据:firewall-cmd(1) 与 firewalld 官方文档。

    Stream 装完 firewalld 就在跑:默认区 public、只放行 ssh 等三项。本页给出「看懂现状 → 放行一个服务 → 分清运行时与永久」的最短路径,全部命令在实机验证。

    • sudo 权限(firewall-cmd 大多数子命令要 root);
    • 回退点:改动前先抄下 firewall-cmd --list-all 的输出——一切改动的回滚就是把列表恢复成它。
    默认区与区全貌
    $ sudo firewall-cmd --get-default-zone
    $ sudo firewall-cmd --zone=public --list-all

    预期输出(实测摘录,@core 装机):

    public
    public (default, active)
    interfaces: ens18
    services: cockpit dhcpv6-client ssh
    ports:
    forward: yes

    三个要点:

    • public 是默认区,且已经 active(网卡 ens18 归它管);
    • 默认放行的服务只有 ssh、cockpit、dhcpv6-client 三个——要对外提供 http 等必须显式放行;
    • --get-services 能列出全部 263 个内置服务定义(每个都是 /usr/lib/firewalld/services/ 下的 XML,含端口与协议)。

    forward: yes 是 EL10 的默认变化(EL9 为 no):同一区内接口间的转发默认允许。单机无感,做网关/多网卡时注意这条默认已经放开。

    临时放行(重启失效)
    $ sudo firewall-cmd --add-service=http
    $ sudo firewall-cmd --list-services

    预期输出(实测摘录):

    success
    cockpit dhcpv6-client http ssh

    撤销运行时放行:

    撤销临时放行
    $ sudo firewall-cmd --remove-service=http
    $ sudo firewall-cmd --list-services

    回到 cockpit dhcpv6-client ssh。写进档案(重启后依然放行):

    永久放行并重载
    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --reload
    $ sudo firewall-cmd --list-services

    放行单个端口(没有服务定义时)用端口语法:--add-port=8080/tcp,移除 --remove-port=8080/tcp,永久与重载的规则相同。

    把 public 区恢复到装机默认
    $ sudo firewall-cmd --permanent --remove-service=http
    $ sudo firewall-cmd --permanent --remove-port=8080/tcp
    $ sudo firewall-cmd --reload
    $ sudo firewall-cmd --zone=public --list-all

    输出与「开始前」抄下的默认清单一致即恢复完成。

    现象原因处理
    服务起了但外部连不上只改了 --permanent 没 reloadfirewall-cmd --reload;或先做运行时放行验证
    重启后放行失效只做了运行时放行补 --permanent --add-service=… + reload
    想知道某服务含哪些端口服务是 XML 定义firewall-cmd --info-service=http
    区里没看到我的网卡网卡绑在别的区firewall-cmd --get-active-zones 看归属