5.15.3. 使用 nmstatectl 配置带有 PSK 身份验证和隧道模式的主机到子网 IPSec VPN
如果要在 IPsec 中使用基于相互认证的加密,Pre-Shared Key (PSK)方法通过在两个主机之间使用机密密钥来提供安全通信。文件存储机密密钥,相同的密钥加密通过隧道的数据流。
通过使用 Nmstate (一个用于网络管理的声明性 API),您可以配置基于 PSK 的 IPsec 身份验证。设置配置后,Nmstate API 确保结果与配置文件匹配。如果有任何失败,nmstate 会自动回滚更改,以避免不正确的系统状态。
要在 主机到子网 配置中建立加密通信,远程 IPsec 端通过使用参数 dhcp: true 向主机提供另一个 IP。在 nmstate 中为 IPsec 定义系统的情况,左侧 命名的系统是本地主机,而 右侧 命名的系统是远程主机。
请注意,由于 NetworkManager-libreswan 插件的设计,您可以在一端使用 nmstatectl,且您必须在另一端手动配置 IPsec。
由于此方法使用静态字符串进行身份验证和加密,因此仅用于测试/开发目的。
流程
安装所需的软件包:
# dnf install nmstate libreswan NetworkManager-libreswan重启 NetworkManager 服务:
# systemctl restart NetworkManager如果
Libreswan已安装,请删除其旧的数据库文件,并重新创建它们:# systemctl stop ipsec # rm /var/lib/ipsec/nss/*db # ipsec initnss启用
ipsec服务,来在引导时自动启动:# systemctl enable --now ipsec创建一个包含以下内容的 YAML 文件,如
~/create-pks-authentication.yml:--- interfaces: - name: 'example_ipsec_conn1'1 type: ipsec ipv4: enabled: true dhcp: true libreswan: ipsec-interface: 'no'2 right: '192.0.2.150'3 rightid: 'remote-host.example.org'4 left: '192.0.2.250'5 leftid: 'local-host.example.org'6 psk: "example_password" ikev2: 'insist'7 YAML 文件定义以下设置:
将设置应用到系统:
# nmstatectl apply ~/create-pks-authentication.yml- 如果您在带有 DHCP 或无状态地址自动配置(SLAAC)的网络中使用此主机,则连接可能很容易被重定向。有关详情和缓解步骤,请参阅 将 VPN 连接分配给专用路由表,以防止连接绕过隧道。
验证
显示网络接口的 IP 设置:
# ip addr show <device_name>验证 IPsec 状态:
# ip xfrm state验证 IPsec 策略:
# ip xfrm policy