6.13.2. 使用 nmstatectl 配置具有原始 RSA 密钥身份验证的 IPsec 站点到站点 VPN


您可以使用声明性 Nmstate API 在两个不同的网络之间配置站点到站点 VPN,在不安全的网络中连接它们。nmstate 确保结果与配置文件匹配或回滚更改。

为对网关设备进行身份验证,RSA 密钥比预共享密钥(PSK)更安全,因为其非对称加密消除了共享 secret 的风险。使用 RSA 密钥还通过避免对证书颁发机构(CA)的需求,并提供强大的对等身份验证来简化部署。

注意

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

先决条件

  • 远程网关运行 Libreswan IPsec,并为 站点到站点 连接做好了准备。

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

流程

  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. 创建一个 RSA 密钥对:

    # ipsec newhostkey

    ipsec 工具将密钥对存储在 NSS 数据库中。

  3. 在左和右对等主机上显示证书密钥属性 ID (CKAID):

    # ipsec showhostkey --list
    < 1> RSA keyid: <key_id> ckaid: <ckaid>

    在以下步骤中,您需要两个对等点的 CKAID。

  4. 显示公钥:

    1. 在左对等主机上,输入:

      # ipsec showhostkey --left --ckaid <ckaid_of_left_peer>
              # rsakey AwEAAdKCx
              leftrsasigkey=0sAwEAAdKCxpc9db48cehzQiQD...
    2. 在右对等主机上,输入:

      # ipsec showhostkey --right --ckaid <ckaid_of_right_peer>
              # rsakey AwEAAcNWC
              rightrsasigkey=0sAwEAAcNWCzZO+PR1j8WbO8X...

    命令会显示公钥,以及您必须在配置文件中使用的相应参数。

  5. 创建一个包含以下内容的 YAML 文件,如 ~/ipsec-site-to-site-rsa-auth.yml

    ---
    interfaces:
    - name: '<connection_name>'
      type: ipsec
      libreswan:
        ikev2: insist
    
        left: <ip_address_or_fqdn_of_left_peer>
        leftid: peer_b
        leftrsasigkey: <public_key_of_left_peer>
        leftmodecfgclient: false
        leftsubnet: 198.51.100.0/24
    
        right: <ip_address_or_fqdn_of_right_peer>
        rightid: peer_a
        rightrsasigkey: <public_key_of_right_peer>
        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=<id>rightid=<id>
    定义在互联网密钥交换(IKE)协商过程中是如何识别每个对等主机的。这可以是 IP 地址或字面字符串。请注意,NetworkManager 将 IP 地址以外的所有值解释为字面字符串,并在内部添加一个前导 @ 符号。这要求 Libreswan 对等点也使用字面字符串作为 ID ,否则身份验证失败。
    leftrsasigkey=<public_key> and rightrsasigkey=<public_key>
    指定对等点主机的公钥。使用上一步中 ipsec showhostkey 命令显示的值。
    leftmodecfgclient: false
    禁用此主机上的动态配置。在使用 Nmstate 的站点到站点配置中,此设置是必须的。
    leftsubnet=<subnet>rightsubnet=<subnet>
    定义通过隧道连接的无类别域间路由(CIDR)格式的子网。
  6. 启用数据包转发:

    # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
  7. 将设置应用到系统:

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

验证

  1. 显示 IPsec 状态:

    # ipsec status

    如果连接成功建立,输出会包含如下行:

    • 互联网密钥交换版本 2 (IKEv2)协商的阶段 1 已成功完成:

      000 #1: "<connection_name>":500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); REKEY in 27935s; REPLACE in 28610s; newest; idle;

      Security Association(SA)现在已准备好协商实际数据加密隧道,称为子 SA 或阶段 2 SA。

    • 子 SA 已建立:

      000 #2: "<connection_name>":500 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); REKEY in 27671s; REPLACE in 28610s; IKE SA #1; idle;

      这是您的数据流量通过的实际隧道。

  2. 从本地子网中的一个客户端 ping 远程子网中的一个客户端。

故障排除

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

    # nmcli connection export <connection_name>

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

后续步骤

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部