第 13 章 使用 vpn RHEL 系统角色使用 IPsec 配置 VPN 连接


使用 vpn 系统角色,您可以使用 Red Hat Ansible Automation Platform 在 RHEL 系统中配置 VPN 连接。您可以使用它来设置主机到主机、网络到网络、VPN 远程访问服务器和网格配置。

对于主机到主机连接,角色使用默认参数在 vpn_connections 列表中的每一对主机之间设置 VPN 通道,包括根据需要生成密钥。另外,您还可以将其配置为在列出的所有主机之间创建 机会主义网格配置。该角色假定 hosts 下的主机名称与 Ansible 清单中使用的主机的名称相同,并且您可以使用这些名称来配置通道。

注意

vpn RHEL 系统角色目前仅支持 Libreswan (即 IPsec 实现),作为 VPN 供应商。

您可以通过在控制节点上运行 Ansible playbook 来使用 vpn 系统角色配置主机到主机的连接,这将配置清单文件中列出的所有受管节点。

先决条件

  • 对一个或多个 受管节点 的访问权限(即您要使用 vpn 系统角色配置的系统)。
  • 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。

    在控制节点上:

    • ansible-corerhel-system-roles 软件包已安装 。
重要

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 和 9.0 引入了 Ansible Core(作为 ansible-core 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围

  • 列出受管节点的清单文件。

流程

  1. 使用以下内容创建一个新的 playbook.yml 文件:

    - name: Host to host VPN
      hosts: managed_node1, managed_node2
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - hosts:
              managed_node1:
              managed_node2:
    Copy to Clipboard Toggle word wrap

    此 playbook 使用系统角色自动生成的密钥进行预共享密钥身份验证,来配置 managed_node1-to-managed_node2 的连接。

  2. 可选:通过将以下部分添加到主机的 vpn_connections 列表中,配置从受管主机到清单文件中未列出的外部主机的连接:

        vpn_connections:
          - hosts:
              managed_node1:
              managed_node2:
              external_node:
                hostname: 192.0.2.2
    Copy to Clipboard Toggle word wrap

    这将配置另外两个连接:managed_node1-to-external_nodemanaged_node2-to-external_node

注意

连接仅在受管节点上配置,而不在外部节点上配置。

  1. 可选:您可以使用 vpn_connections 中的额外部分为受管节点指定多个 VPN 连接,如控制平面和数据平面:

    - name: Multiple VPN
      hosts: managed_node1, managed_node2
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - name: control_plane_vpn
            hosts:
              managed_node1:
                hostname: 192.0.2.0 # IP for the control plane
              managed_node2:
                hostname: 192.0.2.1
          - name: data_plane_vpn
            hosts:
              managed_node1:
                hostname: 10.0.0.1 # IP for the data plane
              managed_node2:
                hostname: 10.0.0.2
    Copy to Clipboard Toggle word wrap
  2. 可选:您可以根据您的偏好修改变量。详情请查看 /usr/share/doc/rhel-system-roles/vpn/README.md 文件。
  3. 可选:验证 playbook 语法。

    # ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_file
    Copy to Clipboard Toggle word wrap
  4. 在清单文件上运行 playbook:

    # ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  1. 在受管节点上,确认连接已成功载入:

    # ipsec status | grep connection.name
    Copy to Clipboard Toggle word wrap

    connection.name 替换为来自此节点的连接的名称,如 managed_node1-to-managed_node2

注意

默认情况下,从每个系统的角度来看,角色为其创建的每个连接生成一个描述性名称。例如,当在 managed_node1managed_node2 之间创建连接时,此连接在 managed_node1 上的描述性名称为 managed_node1-to-managed_node2,但在 managed_node2 上,连接的描述性名称为 managed_node2-to-managed_node1

  1. 在受管节点上,确认连接是否成功启动:

    # ipsec trafficstatus | grep connection.name
    Copy to Clipboard Toggle word wrap
  2. 可选:如果连接没有成功加载,请输入以下命令来手动添加连接。这将提供更具体的信息,说明连接未能建立的原因:

    # ipsec auto --add connection.name
    Copy to Clipboard Toggle word wrap
    注意

    加载和启动连接过程中可能出现的任何错误都会在日志中报告,这些错误可以在 /var/log/pluto.log 中找到。由于这些日志难以解析,因此请尝试手动添加连接来获得日志消息,而不是从标准输出中获得。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat