5.15.5. 使用 nmstatectl 使用 PKI 身份验证和传输模式配置主机到主机的 IPsec VPN


IPsec (互联网协议安全)是一个安全协议套件,用于验证和加密网络和设备中的 IP 通信。Libreswan 工具为 VPN 提供基于 IPsec 的实现。

在传输模式下,加密仅适用于 IP 数据包的有效负载。另外,通过保持原始 IP 标头,新的 IPsec 标头被附加到 IP 数据包中。传输模式不会加密通信的源和目标 IP,而是将它们复制到外部 IP 标头中。因此,加密只保护网络中的 IP 数据。此模式可用于在网络的 host-to-host 连接中传输数据。此模式通常与 GRE 隧道一起使用,以节省 20 字节(IP 标头)的开销。默认情况下,IPsec 工具使用隧道模式。要使用传输模式,请为 host-to-host 连接数据传输设置 type: transport

通过使用 Nmstate (一个用于网络管理的声明性 API),您可以配置 IPsec VPN 连接。设置配置后,Nmstate API 确保结果与配置文件匹配。如果有任何失败,nmstate 会自动回滚更改,以避免不正确的系统状态。要覆盖默认的 tunnel 模式,请指定 transport 模式。

在 nmstate 中为 IPsec 定义系统的情况,左侧 命名的系统是本地主机,而 右侧 命名的系统是远程主机。

请注意,由于 NetworkManager-libreswan 插件的设计,您可以在一端使用 nmstatectl,且您必须在另一端手动配置 IPsec。

先决条件

  • 通过使用密码,您已生成了一个存储证书和加密密钥的 PKCS #12 文件。

流程

  1. 安装所需的软件包:

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

    # systemctl restart NetworkManager
  3. 由于 Libreswan 已安装,请删除其旧的数据库文件,并重新创建它们:

    # systemctl stop ipsec
    # rm /var/lib/ipsec/nss/*db
    # ipsec initnss
  4. 导入 PKCS#12 文件:

    # ipsec import node-example.p12

    导入 PKCS#12 文件时,请输入用来创建该文件的密码。

  5. 启用并启动 ipsec 服务:

    # systemctl enable --now ipsec
  6. 创建一个包含以下内容的 YAML 文件,如 ~/create-p2p-transport-authentication.yml

    ---
    interfaces:
    - name: 'example_ipsec_conn1'           
    1
    
      type: ipsec
      libreswan:
        type: 'transport'                   
    2
    
        ipsec-interface: '99'               
    3
    
        left: '192.0.2.150'                 
    4
    
        leftid: '%fromcert'                 
    5
    
        leftcert: 'local-host.example.org'  
    6
    
        right: '192.0.2.250'                
    7
    
        prefix-length: '32'                 
    8
    
        rightid: '%fromcert'                
    9
    
        ikev2: 'insist'                     
    10
    
        ikelifetime: '24h'                  
    11
    
        salifetime: '24h'                   
    12

    YAML 文件定义以下设置:

    1
    IPsec 连接名称
    2
    IPsec 模式
    3
    99 表示 libreswan 创建一个 IPsec xfrm 虚拟接口 ipsec<number>,并自动查找下一个可用数字
    4
    用于本地主机的公共网络接口的静态 IPv4 地址
    5
    在本地主机上,%fromcert 的值将 ID 设置为从加载的证书获取的可分辨名称(DN)
    6
    本地主机的公钥的可分辨名称(DN)
    7
    用于远程主机的公共网络接口的静态 IPv4 地址
    8
    本地主机的静态 IPv4 地址的子网掩码
    9
    在远程主机上,%fromcert 的值将 ID 设置为从加载的证书中获取的可分辨名称(DN)
    10
    只接受和接收互联网密钥交换(IKEv2)协议的值
    11
    IKE 协议的持续时间
    12
    IPsec 安全联盟(SA)的持续时间
  7. 将设置应用到系统:

    # nmstatectl apply ~/create-p2p-transport-authentication.yml
  8. 如果您在带有 DHCP 或无状态地址自动配置(SLAAC)的网络中使用此主机,则连接可能很容易被重定向。有关详情和缓解步骤,请参阅 将 VPN 连接分配给专用路由表,以防止连接绕过隧道

验证

  1. 验证 IPsec 状态:

    # ip xfrm state
  2. 验证 IPsec 策略:

    # ip xfrm policy
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部