30.2. 使用 PSK 身份验证配置 IPsec 主机到主机的 VPN,并使用 vpn RHEL 系统角色分隔数据和 control plane


您可以使用 IPsec ,通过 VPN 直接将主机互联。例如,要通过最大程度减少被截获或破坏的控制消息的风险来增强安全性,您可以为数据流量和控制流量配置单独的连接。通过使用 vpn RHEL 系统角色,您可以自动化创建带有单独的数据和控制平面及 PSK 身份验证的 IPsec 主机到主机连接的过程。

先决条件

流程

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

    ---
    - name: Configuring VPN
      hosts: managed-node-01.example.com, managed-node-02.example.com
      tasks:
        - name: IPsec VPN with PSK authentication
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.vpn
          vars:
            vpn_connections:
              - name: control_plane_vpn
                hosts:
                  managed-node-01.example.com:
                    hostname: 203.0.113.1  # IP address for the control plane
                  managed-node-02.example.com:
                    hostname: 198.51.100.2 # IP address for the control plane
                auth_method: psk
                auto: start
              - name: data_plane_vpn
                hosts:
                  managed-node-01.example.com:
                    hostname: 10.0.0.1   # IP address for the data plane
                  managed-node-02.example.com:
                    hostname: 172.16.0.2 # IP address for the data plane
                auth_method: psk
                auto: start
            vpn_manage_firewall: true
            vpn_manage_selinux: true
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    hosts: <list>

    定义一个 YAML 字典,其中包含您想要在它们之间配置 VPN 的主机。连接被命名为 <name>-<IP_address_A>-to-<IP_address_B>,例如 control_plane_vpn-203.0.113.1-to-198.51.100.2

    角色在每个受管节点上配置 VPN 连接。请注意,角色不能在外部(未管理的)节点上配置 Libreswan。您必须在这些主机上手动创建配置。

    auth_method: psk
    在主机之间启用 PSK 身份验证。角色在控制节点上使用 openssl 来创建预共享密钥。
    auto: <start-up_method>
    指定连接的启动方法。有效值是 addondemandstartignore。详情请查看安装了 Libreswan 的系统上的 ipsec.conf (5) 手册页。此变量的默认值为 null,这意味着没有自动启动操作。
    vpn_manage_firewall: true
    定义角色在受管节点上的 firewalld 服务中打开所需的端口。
    vpn_manage_selinux: true
    定义角色在 IPsec 端口上设置所需的 SELinux 端口类型。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.vpn/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

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

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 确认连接已成功启动,例如:

    # ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "control_plane_vpn-203.0.113.1-to-198.51.100.2"'
    ...
    006 #3: "control_plane_vpn-203.0.113.1-to-198.51.100.2", type=ESP, add_time=1741860073, inBytes=0, outBytes=0, maxBytes=2^63B, id='198.51.100.2'
    Copy to Clipboard Toggle word wrap

    请注意,只有在 VPN 连接活跃时,这个命令才会成功。如果将 playbook 中的 auto 变量设置为 start 以外的值,您可能需要首先手动激活受管节点上的连接。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat