5.15.2. 使用 nmstatectl 配置带有 RSA 身份验证和隧道模式的主机到子网 IPSec VPN


如果要在 IPsec 中使用基于非对称加密的密钥身份验证,则 RSA 算法通过使用私钥和公钥在两个主机之间进行加密和解密来提供安全通信。此方法使用私钥进行加密,使用公钥进行解密。

通过使用 Nmstate (一个用于网络管理的声明性 API),您可以配置基于 RSA 的 IPsec 身份验证。设置配置后,Nmstate API 确保结果与配置文件匹配。如果有任何失败,nmstate 会自动回滚更改,以避免不正确的系统状态。

要在 主机到子网 配置中建立加密通信,远程 IPsec 端通过使用参数 dhcp: true 向主机提供另一个 IP。在 nmstate 中为 IPsec 定义系统的情况,左侧 命名的系统是本地主机,而 右侧 命名的系统是远程主机。

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

流程

  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. 在每个主机上生成一个 RSA 密钥对:

    # ipsec newhostkey
  5. 上一步返回的生成的密钥 ckaid。对左侧使用以下命令和 ckaid,例如:

    # ipsec showhostkey --left --ckaid <0sAwEAAesFfVZqFzRA9F>
  6. 上一命令的输出生成了配置所需的 leftrsasigkey= 行。在第二个主机(右侧)上执行相同的操作:

    # ipsec showhostkey --right --ckaid <0sAwEAAesFfVZqFzRA9E>
  7. 启用 ipsec 服务,来在引导时自动启动:

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

    ---
    interfaces:
    - name: 'example_ipsec_conn1'               
    1
    
      type: ipsec                               
    2
    
      ipv4:
        enabled: true
        dhcp: true
      libreswan:
        ipsec-interface: '99'                   
    3
    
        leftrsasigkey: '0sAwEAAesFfVZqFzRA9F'   
    4
    
        left: '192.0.2.150'                     
    5
    
        leftid: 'local-host-rsa.example.com'    
    6
    
        right: '192.0.2.250'                    
    7
    
        rightrsasigkey: '0sAwEAAesFfVZqFzRA9E'  
    8
    
        rightid: 'remote-host-rsa.example.com'  
    9
    
        ikev2: 'insist'                         
    10

    YAML 文件定义以下设置:

    1
    IPsec 连接名称
    2
    接口名称
    3
    99 表示 libreswan 创建一个 IPsec xfrm 虚拟接口 ipsec<number>,并自动查找下一个可用数字
    4
    本地主机的 RSA 公钥
    5
    本地主机的公共网络接口的静态 IPv4 地址
    6
    本地主机的可分辨名称(DN)
    7
    远程主机的 RSA 公钥
    8
    远程主机的公共网络接口的静态 IPv4 地址
    9
    远程主机的可分辨名称(DN)
    10
    insist 值只接受并接收互联网密钥交换(IKEv2)协议
  9. 将设置应用到系统:

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

验证

  1. 显示网络接口的 IP 设置:

    # ip addr show <device_name>
  2. 验证 IPsec 状态:

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

    # ip xfrm policy
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部