Red Hat Training

A Red Hat training course is available for RHEL 8

7.2. 使用 vpn 系统角色创建与 IPsec 的 opportunistic mesh VPN 连接

您可以使用 vpn 系统角色来配置机会主义网格 VPN 连接,该连接通过在控制节点上运行 Ansible playbook 来使用证书进行身份验证,它将配置清单文件中列出的所有受管节点。

通过在 playbook 中定义 auth_method: cert 参数来配置用证书进行身份验证。vpn 系统角色假设 IPsec 网络安全服务(NSS)加密库(在 /etc/ipsec.d 目录中定义)包含必要的证书。默认情况下,节点名称用作证书的昵称。在本例中,这是 managed_node1。您可以使用清单中的 cert_name 属性来定义不同的证书名称。

在以下示例流程中,控制节点(您要从其运行 Ansible playbook 的系统)与两个受管节点(192.0.2.0/24)共享相同的无类别域间路由(CIDR)数,并且 IP 地址为 192.0.2.7。因此,控制节点属于为 CIDR 192.0.2.0/24 自动创建的私有策略。

为防止在操作期间出现 SSH 连接丢失,控制节点的清晰策略包含在策略列表中。请注意,在策略列表中还有一个项 CIDR 等于 default。这是因为此 playbook 覆盖了默认策略中的规则,以使其为私有,而非私有或清晰。

前提条件

  • 您已准备好控制节点和受管节点
  • 以可在受管主机上运行 playbook 的用户登录到控制节点。
  • 用于连接到受管节点的帐户具有 sudo 权限。
  • 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/mesh-vpn-playbook.yml

    - name: Mesh VPN
      hosts: managed_node1, managed_node2, managed_node3
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - opportunistic: true
            auth_method: cert
            policies:
              - policy: private
                cidr: default
              - policy: private-or-clear
                cidr: 198.51.100.0/24
              - policy: private
                cidr: 192.0.2.0/24
              - policy: clear
                cidr: 192.0.2.7/32
        vpn_manage_firewall: true
        vpn_manage_selinux: true
    注意

    因为 vpn_manage_firewallvpn_manage_selinux 都被设为 true,因此 vpn 角色使用 firewallselinux 角色来管理 vpn 角色使用的端口。

  2. 可选: 您可以根据您的喜好修改变量。详情请查看 /usr/share/doc/rhel-system-roles/vpn/README.md 文件。
  3. 验证 playbook 语法:

    # ansible-playbook ~/mesh-vpn-playbook.yml --syntax-check

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  4. 运行 playbook:

    # ansible-playbook ~/mesh-vpn-playbook.yml