Menu Close
Settings Close

Language and Page Formatting Options

1.16.2. 将传入的流量从一个本地端口转发到不同的本地端口

使用 rhel-system-roles.firewall 角色,您可以远程配置 firewalld 参数,同时对多个受管主机的影响具有持久性。

先决条件

  • RHEL 订阅授权,您将在控制节点上安装 ansible-corerhel-system-roles 软件包。
  • 受管主机清单存在于控制计算机上,Ansible 能够连接它们。
  • 有权限在受管主机上运行 Ansible playbook。
  • 如果您运行 playbook 时使用了与 root 不同的远程用户,则此用户对受管主机具有适当的 sudo 权限。
  • 清单文件列出 playbook 应执行操作的主机。此流程中的 playbook 在组 testinservers 的主机上运行。
重要

RHEL 8.0 - 8.5 提供对基于 Ansible 的自动化需要 Ansible Engine 2.9 的独立 Ansible 存储库的访问权限。Ansible Engine 包含命令行实用程序,如 ansibleansible-playbook; 连接器,如 dockerpodman; 以及插件和模块的整个环境。有关如何获取并安装 Ansible Engine 的信息,请参阅如何下载和安装 Red Hat Ansible Engine?

RHEL 8.6 和更新的版本中引入了 Ansible Core(以 ansible-core RPM 提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。AppStream 存储库提供 ansible-core,它的范围有限。如需更多信息,请参阅 RHEL 9 AppStream 中包含的 ansible-core 软件包的范围

步骤

  1. 创建 ~/port_forwarding.yml 文件并添加以下内容:

    ---
    - name: Forward incoming traffic on port 8080 to 443
      hosts: testingservers
    
      tasks:
        - include_role:
            name: rhel-system-roles.firewall
    
      vars:
        firewall:
          - { forward_port: 8080/tcp;443;, state: enabled, runtime: true, permanent: true }

    此文件代表一个 playbook,通常包含了一组有特定顺序的任务(也称为 play )列表。这些任何会根据 inventory 文件中选择的特定管理主机进行。在这种情况下,该 playbook 将针对受管主机的 testingservers 组运行。

    Play 中的 hosts 键指定对其运行 play 的主机。您可以将这个键的值作为受管主机的单独名称,或作为 inventory 文件中定义的主机组提供。

    tasks 部分包含 include_role 键,它指定了哪些系统角色将配置 vars 部分中提到的参数和值。

    vars 部分包含一个名为 firewall 的角色变量。此变量是字典值列表,并指定应用于受管主机上的 firewalld 的参数。example 角色将进入端口 8080 的流量转发到端口 443。设置将立即生效,并将在重启后保留。

  2. (可选)验证 playbook 中的语法是否正确:

    # ansible-playbook --syntax-check ~/port_forwarding.yml
    
    playbook: port_forwarding.yml

    本例演示了对 playbook 的成功验证。

  3. 执行 playbook:

    # ansible-playbook ~/port_forwarding.yml

验证

  • 在受管主机上:

    • 重启主机以验证 firewalld 设置是否在重启后是否仍存在:

      # reboot
    • 显示 firewalld 设置:

      # firewall-cmd --list-forward-ports

其他资源