6.13.3. 使用 nmstatectl 将客户端配置为连接到 IPsec VPN 网关


要访问远程私有网络上的资源,用户必须首先配置一个 IPsec VPN 连接。通过使用 Nmstate,您可以使用声明性 API 创建与现有 Libreswan IPsec 网关的连接。

注意

通常,选择将哪台主机命名为 leftright 是任意的。但是,NetworkManager 始终对本地主机使用术语 left,对远程主机使用术语 right

先决条件

  • 远程网关运行 Libreswan IPsec,并为带有 基于证书的身份验证的主机到站点 连接做好了准备。

    由于 NetworkManager-libreswan 插件的设计,Nmstate 无法与其他也使用此插件进行同样连接的对等点进行通信。

  • PKCS#12 文件 ~/file.p12 在客户端上存在,其包含以下内容:

    • 用户的私钥
    • 用户证书
    • CA 证书
    • 如果需要,则为中间证书

    有关创建私钥和证书签名请求(CSR),以及从 CA 请求证书的详情,请查看您的 CA 文档。

  • 证书中的 Extended Key Usage(EKU)被设置为 TLS Web Client Authentication

流程

  1. 如果 Libreswan 尚未安装:

    1. 安装所需的软件包:

      # dnf install nmstate libreswan NetworkManager-libreswan
    2. 重启 NetworkManager 服务:

      # systemctl restart NetworkManager
    3. 初始化 Network Security Services (NSS)数据库:

      # ipsec initnss

      命令在 /var/lib/ipsec/nss/ 目录中创建数据库。

    4. 在防火墙中打开 IPsec 端口和协议:

      # firewall-cmd --permanent --add-service="ipsec"
      # firewall-cmd --reload
  2. 将 PKCS #12 文件导入到 NSS 数据库中:

    # ipsec import ~/file.p12
    Enter password for PKCS12 file: <password>
    pk12util: PKCS12 IMPORT SUCCESSFUL
    correcting trust bits for Example-CA
  3. 显示用户的昵称和 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 文件中需要此信息。

  4. 创建一个包含以下内容的 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=%fromcertrightid=%fromcert
    将 Libreswan 配置为从证书的可分辨名称(DN)字段检索身份。
    leftcert="<server_certificate_nickname>"
    设置 NSS 数据库中使用的服务器证书的昵称。
    rightsubnet: <subnet>
    定义连接到网关的无类别域间路由(CIDR)格式的子网。
  5. 将设置应用到系统:

    # nmstatectl apply ~/ipsec-host-to-site-cert-auth.yml

验证

  • 建立与远程网络中主机的连接或 ping 它。

故障排除

  • 要显示 NetworkManager 传递给 Libreswan 的实际配置,请输入:

    # nmcli connection export <connection_name>

    当您将设置与远程主机上的 Libreswan 配置进行比较时,输出可帮助识别有偏差的设置(如 ID 和密钥)。

后续步骤

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部