6.13.3. 使用 nmstatectl 将客户端配置为连接到 IPsec VPN 网关
要访问远程私有网络上的资源,用户必须首先配置一个 IPsec VPN 连接。通过使用 Nmstate,您可以使用声明性 API 创建与现有 Libreswan IPsec 网关的连接。
通常,选择将哪台主机命名为 left 和 right 是任意的。但是,NetworkManager 始终对本地主机使用术语 left,对远程主机使用术语 right。
先决条件
远程网关运行 Libreswan IPsec,并为带有 基于证书的身份验证的主机到站点 连接做好了准备。
由于
NetworkManager-libreswan插件的设计,Nmstate 无法与其他也使用此插件进行同样连接的对等点进行通信。PKCS#12 文件
~/file.p12在客户端上存在,其包含以下内容:- 用户的私钥
- 用户证书
- CA 证书
- 如果需要,则为中间证书
有关创建私钥和证书签名请求(CSR),以及从 CA 请求证书的详情,请查看您的 CA 文档。
-
证书中的 Extended Key Usage(EKU)被设置为
TLS Web Client Authentication。
流程
如果 Libreswan 尚未安装:
安装所需的软件包:
# dnf install nmstate libreswan NetworkManager-libreswan重启 NetworkManager 服务:
# systemctl restart NetworkManager初始化 Network Security Services (NSS)数据库:
# ipsec initnss命令在
/var/lib/ipsec/nss/目录中创建数据库。在防火墙中打开 IPsec 端口和协议:
# firewall-cmd --permanent --add-service="ipsec" # firewall-cmd --reload
将 PKCS #12 文件导入到 NSS 数据库中:
# ipsec import ~/file.p12 Enter password for PKCS12 file: <password> pk12util: PKCS12 IMPORT SUCCESSFUL correcting trust bits for Example-CA显示用户的昵称和 CA 证书:
# certutil -L -d /var/lib/ipsec/nss/ Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI user u,u,u Example-CA CT,, ...您在 Nmstate YAML 文件中需要此信息。
创建一个包含以下内容的 YAML 文件,如
~/ipsec-host-to-site-cert-auth.yml:--- interfaces: - name: '<connection_name>' type: ipsec libreswan: ikev2: insist left: <ip_address_or_fqdn_of_left_peer> leftid: '%fromcert' leftcert: <user_certificate_nickname> right: <ip_address_or_fqdn_of_right_peer> rightid: '%fromcert' rightsubnet: 192.0.2.0/24示例中指定的设置包括:
ikev2: insist- 将现代 IKEv2 协议定义为唯一允许的协议,而不回退到 IKEv1。在使用 Nmstate 的主机到站点配置中,此设置是必须的。
left=<ip_address_or_fqdn_of_left_peer>和right=<ip_address_or_fqdn_of_right_peer>- 定义对等点主机的 IP 地址或 DNS 名称。
leftid=%fromcert和rightid=%fromcert- 将 Libreswan 配置为从证书的可分辨名称(DN)字段检索身份。
leftcert="<server_certificate_nickname>"- 设置 NSS 数据库中使用的服务器证书的昵称。
rightsubnet: <subnet>- 定义连接到网关的无类别域间路由(CIDR)格式的子网。
将设置应用到系统:
# nmstatectl apply ~/ipsec-host-to-site-cert-auth.yml
验证
- 建立与远程网络中主机的连接或 ping 它。
故障排除
要显示 NetworkManager 传递给 Libreswan 的实际配置,请输入:
# nmcli connection export <connection_name>当您将设置与远程主机上的 Libreswan 配置进行比较时,输出可帮助识别有偏差的设置(如 ID 和密钥)。
后续步骤
- 如果您在具有 DHCP 或无状态地址自动配置(SLAAC)的网络中使用此主机,则连接可能容易被重定向。有关详情和缓解步骤,请参阅 将 VPN 连接分配给专用的路由表,以防止连接绕过隧道。