Red Hat Training

A Red Hat training course is available for RHEL 8

9.16. 启用 firewalld 区域中不同接口或源之间的流量转发

区内转发是 firewalld 的一种功能,它允许 firewalld 区域内接口或源之间的流量转发。

9.16.1. 区内转发与默认目标设置为 ACCEPT 的区域之间的区别

启用区内转发后,单个 firewalld 区中的流量可以从一个接口或源流到另一个接口或源。区指定接口和源的信任级别。如果信任级别相同,流量会保持在同一区内。

注意

firewalld 的默认区域中启用区内转发,仅适用于添加到当前默认区的接口和源。

firewalld 使用不同的区来管理传入流量和传出流量。每个区域都有自己的一组规则和行为。例如,trusted 区域默认允许所有转发的流量。

其他区域可以有不同的默认行为。在标准区域中,当区的目标设置为默认时,转发的流量通常 默认 被丢弃。

要控制如何在区域内不同接口或源之间转发流量,请确保相应地理解并配置区的目标。

9.16.2. 使用区内转发来在以太网和 Wi-Fi 网络间转发流量

您可以使用区内转发来在同一 firewalld 区内的接口和源之间转发流量。此功能具有以下优点:

  • 有线设备和无线设备间的无缝连接(您可以在连接到 enp1s0 的以太网网络和连接到 wlp0s20的 Wi-Fi 网络之间转发流量)
  • 支持灵活的工作环境
  • 可以被网络中的多个设备或用户访问和使用的共享资源(如打印机、数据库、网络连接存储等)
  • 高效的内部网络(如平稳通信、降低延迟、资源可访问性等)

您可以为单独的 firewalld 区启用此功能。

流程

  1. 在内核中启用数据包转发:

    # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
  2. 确保要启用区内转发的接口只分配给 internal 区:

    # firewall-cmd --get-active-zones
  3. 如果接口当前被分配给了不是 internal 的区,请重新分配它:

    # firewall-cmd --zone=internal --change-interface=interface_name --permanent
  4. enp1s0wlp0s20 接口添加到 internal 区:

    # firewall-cmd --zone=internal --add-interface=enp1s0 --add-interface=wlp0s20
  5. 启用区域内部转发:

    # firewall-cmd --zone=internal --add-forward

验证

以下验证步骤要求 nmap-ncat 软件包在两个主机上都已安装。

  1. 登录到与您启用了区转发的主机的 enp1s0 接口位于同一网络的主机。
  2. 使用 ncat 启动 echo 服务来测试连接:

    # ncat -e /usr/bin/cat -l 12345
  3. 登录到与 wlp0s20 接口在同一网络的主机。
  4. 连接到在与 enp1s0 在同一网络的主机上运行的 echo 服务器:

    # ncat <other_host> 12345
  5. 输入内容并按 Enter。验证文本是否已发送回来。

其他资源

  • firewalld.zones(5) 手册页