6.12. 使用 RHEL 系统角色配置 IPsec VPN 连接
配置 IPsec VPN 连接,以便在不受信任的网络上建立加密隧道,并确保数据在传输过程中的完整性。通过使用 RHEL 系统角色,您可以自动化用例的设置,如将分支机构连接到总部。
vpn RHEL 系统角色只能创建使用预共享密钥(PSK)或证书来相互验证对等点的 VPN 配置。
6.12.1. 使用 vpn RHEL 系统角色配置具有 PSK 身份验证的 IPsec 主机到主机的 VPN 复制链接链接已复制到粘贴板!
主机到主机的 VPN 在两个设备之间建立一个加密连接,允许应用程序通过不安全的网络安全地通信。通过使用 vpn RHEL 系统角色,您可以自动化创建 IPsec 主机到主机连接的过程。
对于身份验证,预共享密钥(PSK)是一个直接的方法,其使用一个只有两个对等点知道的共享 secret 。这种方法易于配置,非常适合优先考虑易于部署的基本设置。但是,您必须对密钥进行严格保密。可以访问密钥的攻击者可能会破坏连接。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
用于连接到受管节点的帐户具有这些节点的
sudo权限。
流程
创建一个包含以下内容的 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: - hosts: managed-node-01.example.com: managed-node-02.example.com: auth_method: psk auto: start vpn_manage_firewall: true vpn_manage_selinux: true示例 playbook 中指定的设置包括如下:
hosts: <list>定义一个 YAML 字典,其中包含您要在它们之间配置 VPN 的对等点。如果条目不是一个 Ansible 管理的节点,则您必须在
hostname参数中指定其完全限定域名(FQDN)或 IP 地址,例如:... - hosts: ... external-host.example.com: hostname: 192.0.2.1角色在每个受管节点上配置 VPN 连接。连接名为
<peer_A>-to-<peer_B>,例如managed-node-01.example.com-to-managed-node-02.example.com。请注意,角色无法在外部(未管理的)节点上配置 Libreswan。您必须在这些对等点上手动创建配置。auth_method: psk-
在对等点之间启用 PSK 身份验证。角色在控制节点上使用
openssl来创建 PSK。 auto: <startup_method>-
指定连接的启动方法。有效值是
add、ondemand、start和ignore。详情请查看安装了 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文件。验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
确认连接已成功启动,例如:
# ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "managed-node-01.example.com-to-managed-node-02.example.com"' ... 006 #3: "managed-node-01.example.com-to-managed-node-02.example.com", type=ESP, add_time=1741857153, inBytes=38622, outBytes=324626, maxBytes=2^63B, id='@managed-node-02.example.com'请注意,只有在 VPN 连接活跃时,这个命令才会成功。如果将 playbook 中的
auto变量设置为start以外的值,您可能需要首先手动激活受管节点上的连接。