7.8. 使用 firewalld 控制网络流量


firewalld 软件包安装了大量预定义的服务文件,您可以添加更多或自定义它们。然后,您可以使用这些服务定义为服务打开或关闭端口,而无需了解协议及它们使用的端口号。

7.8.1. 使用 CLI 控制预定义服务的流量

控制流量的最简单的方法是在 firewalld 中添加预定义的服务。这会打开所有必需的端口并根据 服务定义文件 修改其他设置。

先决条件

  • firewalld 服务在运行。

流程

  1. 检查 firewalld 中的服务是否还没有被允许:

    # firewall-cmd --list-services
    ssh dhcpv6-client
    Copy to Clipboard Toggle word wrap

    命令列出在默认区域中启用的服务。

  2. 列出 firewalld 中所有预定义的服务:

    # firewall-cmd --get-services
    RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry ...
    Copy to Clipboard Toggle word wrap

    命令显示默认区域的可用服务的列表。

  3. 将服务添加到 firewalld 允许的服务的列表中:

    # firewall-cmd --add-service=<service_name>
    Copy to Clipboard Toggle word wrap

    命令将指定的服务添加到默认区域中。

  4. 使新设置具有持久性:

    # firewall-cmd --runtime-to-permanent
    Copy to Clipboard Toggle word wrap

    命令将这些运行时更改应用到防火墙的永久配置中。默认情况下,它将这些更改应用到默认区域的配置中。

验证

  1. 列出所有永久的防火墙规则:

    # firewall-cmd --list-all --permanent
    public
      target: default
      icmp-block-inversion: no
      interfaces:
      sources:
      services: cockpit dhcpv6-client ssh
      ports:
      protocols:
      forward: no
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    Copy to Clipboard Toggle word wrap

    命令显示默认防火墙区域(public)的永久防火墙规则的完整配置。

  2. 检查 firewalld 服务的永久配置的有效性。

    # firewall-cmd --check-config
    success
    Copy to Clipboard Toggle word wrap

    如果永久配置是无效的,命令会返回一个错误及更多详情:

    # firewall-cmd --check-config
    Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}
    Copy to Clipboard Toggle word wrap

    您也可以手动检查永久配置文件,以验证设置。主配置文件为 /etc/firewalld/firewalld.conf。特定于区域的配置文件在 /etc/firewalld/zones/ 目录中,策略在 /etc/firewalld/policies/ 目录中。

7.8.2. 使用 Web 控制台在防火墙上启用服务

默认情况下,服务添加到默认防火墙区域。如果在更多网络接口中使用更多防火墙区,您必须首先选择一个区域,然后添加带有端口的服务。

RHEL 8 web 控制台显示预定义的 firewalld 服务,您可以将其添加到活跃的防火墙区。

重要

RHEL 8 web 控制台配置 firewalld 服务。

Web 控制台不允许没有在 web 控制台中列出的通用 firewalld 规则。

先决条件

  • 您已安装了 RHEL 8 web 控制台。
  • 您已启用了 cockpit 服务。
  • 您的用户帐户被允许登录到 web 控制台。

    具体步骤请参阅安装并启用 Web 控制台

流程

  1. 登录到 RHEL 8 web 控制台。

    详情请参阅 登录到 web 控制台

  2. Networking
  3. 编辑规则和区域按钮。

    cockpit edit rules and zones

    如果没有看到 Edit rules and zones 按钮,使用管理员权限登录到 web 控制台。

  4. Firewall 部分,选择要添加该服务的区,然后点击 Add Services

    cockpit add services

  5. Add Services 对话框中,找到您要在防火墙中启用的服务。
  6. 根据您的场景启用服务:

    cockpit add service

  7. Add Services

此时,RHEL 8 web 控制台在区域的服务列表中显示该服务。

7.8.3. 使用 Web 控制台配置自定义端口

您可以通过 RHEL web 控制台为服务配置自定义端口。

先决条件

  • 您已安装了 RHEL 8 web 控制台。
  • 您已启用了 cockpit 服务。
  • 您的用户帐户被允许登录到 web 控制台。

    具体步骤请参阅安装并启用 Web 控制台

  • firewalld 服务在运行。

流程

  1. 登录到 RHEL 8 web 控制台。

    详情请参阅 登录到 web 控制台

  2. Networking
  3. 编辑规则和区域按钮。

    cockpit edit rules and zones

    如果没有看到 Edit rules and zones 按钮,使用管理员权限登录到 web 控制台。

  4. Firewall 部分,选择要配置自定义端口的区域,并点 Add Services

    RHEL web console: Add services

  5. Add services 对话框中,点 Custom Ports 单选按钮。
  6. 在 TCP 和 UDP 字段中,根据示例添加端口。您可以使用以下格式添加端口:

    • 端口号,如 22
    • 端口号范围,如 5900-5910
    • 别名,比如 nfs, rsync
    注意

    您可以在每个字段中添加多个值。值必须用逗号分开,且没有空格,例如: 8080、8081、http

  7. TCP 文件、UDP 文件或两者中添加端口号后,在 Name 字段中验证服务名称。

    Name 字段显示保留此端口的服务名称。如果您确定这个端口可用,且不需要在该端口上通信,则可以重写名称。

  8. Name 字段中,为服务添加一个名称,包括定义的端口。
  9. 添加端口 按钮。

    RHEL web console: Add ports

要验证设置,请进入防火墙页面,并在区域的服务列表中找到该服务。

RHEL web console: Active zones

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat