30.2. 使用 PSK 身份验证配置 IPsec 主机到主机的 VPN,并使用 vpn RHEL 系统角色分隔数据和 control plane
您可以使用 IPsec ,通过 VPN 直接将主机互联。例如,要通过最大程度减少被截获或破坏的控制消息的风险来增强安全性,您可以为数据流量和控制流量配置单独的连接。通过使用 vpn
RHEL 系统角色,您可以自动化创建带有单独的数据和控制平面及 PSK 身份验证的 IPsec 主机到主机连接的过程。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 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>
-
指定连接的启动方法。有效值是
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
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确认连接已成功启动,例如:
ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "control_plane_vpn-203.0.113.1-to-198.51.100.2"'
# 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 Copied! Toggle word wrap Toggle overflow 请注意,只有在 VPN 连接活跃时,这个命令才会成功。如果将 playbook 中的
auto
变量设置为start
以外的值,您可能需要首先手动激活受管节点上的连接。