Red Hat Training

A Red Hat training course is available for RHEL 8

第 15 章 配置 VPN 连接

这部分论述了如何配置虚拟专用网络(VPN)连接。

VPN 是通过互联网连接到本地网络的一种方式。IPsecLibreswan 提供是创建 VPN 的首选方法。Libreswan 是 VPN 在用户空间 IPsec 的一个实现。VPN 通过在中间网络(比如互联网)设置隧道,启用 LAN 和另一个远程 LAN 之间的通信。为了安全起见,VPN 隧道总是使用认证和加密。对于加密操作,Libreswan 使用 NSS 库。

15.1. 使用 control-center 配置 VPN 连接

这个步骤描述了如何使用control-center配置 VPN 连接。

先决条件

  • 已安装 NetworkManager-libreswan-gnome 软件包。

流程

  1. Super 键,键入 Settings,然后按 Enter 键打开 control-center 应用程序。
  2. 选择左侧的 Network 条目。
  3. + 图标。
  4. 选择 VPN
  5. 选择 Identity 菜单条目来查看基本配置选项:

    General

    Gateway - 远程 VPN 网关的名称或者 IP 地址。

    Authentication

    Type

    • IKEv2 (Certificate) - 客户端使用证书进行验证。它更安全(默认)。
    • IKEv1 (XAUTH) - 客户端通过用户名和密码或者一个预共享密钥(PSK)进行验证。

      以下配置设置位于 Advanced 部分:

      图 15.1. VPN 连接的高级选项

      网络 vpn 高级选项
      警告

      当使用 gnome-control-center 应用程序配置基于 IPsec 的 VPN 连接时,Advanced 对话框会显示配置,但它不允许任何更改。因此,用户无法更改任何高级 IPsec 选项。使用 nm-connection-editornmcli 工具来配置高级属性。

      身份识别

    • Domain - 如果需要,输入域名。

      安全性

    • Phase1 Algorithms - 对应于 ike Libreswan 参数 - 输入用来验证和设置加密频道的算法。
    • Phase2 Algorithms - 对应于 esp Libreswan 参数 - 输入用于 IPsec 的算法。

      检查 Disable PFS 字段关闭 Perfect Forward Secrecy(PFS)以确保与不支持 PFS 的旧服务器兼容。

    • Phase1 Lifetime - 对应于 ikelifetime Libreswan 参数 - 用于加密流量的密钥的有效期。
    • Phase2 Lifetime - 对应于 salifetime Libreswan 参数 - 在过期前连接的特定实例应当在多久时间内继续。

      注意:为了安全起见,加密密钥应该不时地更改。

    • Remote network - 对应于 rightsubnet Libreswan 参数 - 应该通过 VPN 访问的目标专用远程网络。

      检查 narrowing 字段以启用缩小功能。请注意,它只在 IKEv2 协商中有效。

    • Enable fragmentation - 对应于 fragmentation Libreswan 参数 - 是否允许 IKE 分段。有效值为 yes (默认)或 no
    • Enable Mobike - 对应于 mobike Libreswan 参数 - 是否允许移动性和多功能协议(MOBIKE,RFC 4555)启用连接以启用连接以迁移其端点,而无需从头开始重启连接。这可用于在有线、无线或者移动数据连接之间进行切换的移动设备。值为 no (默认)或 yes
  6. 选择 IPv4 菜单条目:

    IPv4 方法

    • Automatic (DHCP) - 如果您要连接的网络使用路由器广告(Router Advertisements,RA)或 DHCP 服务器来分配动态 IP 地址,请选择这个选项。
    • Link-Local Only - 如果您要连接的网络没有 DHCP 服务器且您不想手动分配 IP 地址,请选择这个选项。随机地址将根据 RFC 3927 分配前缀 169.254/16
    • Manual - 如果要手动分配 IP 地址,请选择这个选项。
    • Disable - IPv4 在这个连接中被禁用。

      DNS

      DNS 部分,当 AutomaticON时,将其切换到 OFF 以输入您要用逗号分开的 DNS 服务器的 IP 地址。

      Routes

      请注意,在 Routes 部分,当 AutomaticON 时,会使用来自 DHCP 的路由,但您也可以添加其他静态路由。当为 OFF 时,只使用静态路由。

    • Address - 输入远程网络或主机的 IP 地址。
    • Netmask - 上面输入的 IP 地址的子网掩码或前缀长度。
    • Gateway - 上面输入的远程网络或主机的 IP 地址。
    • Metric - 网络成本,为这个路由赋予的首选值。数值越低,优先级越高。

      仅将此连接用于其网络上的资源

      选择这个复选框以防止连接成为默认路由。选择这个选项意味着只有特别用于路由的流量才会通过连接自动获得,或者手动输入到连接上。

  7. 要在 VPN 连接中配置 IPv6 设置,请选择 IPv6 菜单条目:

    IPv6 Method

    • Automatic - 选择这个选项使用 IPv6 Stateless Address AutoConfiguration(SLAAC)根据硬件地址和路由器公告(RA)创建自动的、无状态的配置。
    • Automatic, DHCP only - 选择这个选项以不使用 RA,但从 DHCPv6 请求信息以创建有状态的配置。
    • Link-Local Only - 如果您要连接的网络没有 DHCP 服务器且您不想手动分配 IP 地址,请选择这个选项。随机地址将根据 RFC 4862 进行分配,前缀为 FE80::0
    • Manual - 如果要手动分配 IP 地址,请选择这个选项。
    • Disable - IPv6 在这个连接中被禁用。

      请注意,DNSRoutesUse this connection only for resources on its network 对于 IPv4 设置是通用的。

  8. 编辑完 VPN 连接后,点添加按钮自定义配置或应用按钮为现有配置保存它。
  9. 将配置集切换为 ON 来激活 VPN 连接。

其它资源

  • 有关支持的 Libreswan 参数的详情,请查看 nm-settings-libreswan(5) man page。

15.2. 使用 nm-connection-editor 配置 VPN 连接

这个步骤描述了如何使用 nm-connection-editor 配置 VPN 连接。

先决条件

  • 已安装 NetworkManager-libreswan-gnome 软件包。
  • 如果您配置了互联网密钥交换版本 2(IKEv2)连接:

    • 证书导入到 IPsec 网络安全服务(NSS)数据库中。
    • NSS 数据库中的证书 nickname 是已知的。

流程

  1. 打开终端窗口,输入:

    $ nm-connection-editor
  2. + 按钮添加新连接。
  3. 选择 IPsec based VPN 连接类型,并点 Create
  4. VPN 标签页中:

    1. Gateway 字段中输入 VPN 网关的主机名或 IP 地址,并选择验证类型。根据验证类型,您必须输入不同的附加信息:

      • IKEv2 (Certifiate) 使用更安全的证书验证客户端。这个设置需要在 IPsec NSS 数据库中指定证书的 nickname
      • IKEv1 (XAUTH) 使用用户名和密码(预共享密钥)验证用户。此设置要求您输入以下值:

        • 用户名
        • 密码
        • 组名称
        • Secret
    2. 如果远程服务器为 IKE 交换指定本地标识符,在 Remote ID 字段输入具体字符串。在运行 Libreswan 的远程服务器中,这个值在服务器的 leftid 参数中设定。

      nm connection editor vpn tab

    3. (可选)点击高级按钮配置附加设置。您可以配置以下设置:

      • 身份识别

        • Domain - 如果需要,输入域名。
      • 安全性

        • Phase1 Algorithms 对应于 ike Libreswan 参数。输入用来验证和设置加密频道的算法。
        • Phase2 Algorithms 对应于 esp Libreswan 参数。输入用于 IPsec 的算法。

          检查 Disable PFS 字段关闭 Perfect Forward Secrecy(PFS)以确保与不支持 PFS 的旧服务器兼容。

        • Phase1 Lifetime 对应于 ikelifetime Libreswan 参数。此参数定义用于加密流量的密钥的有效期。
        • Phase2 Lifetime 对应于 salifetime Libreswan 参数。这个参数定义安全关联有效期。
      • 连接性

        • Remote network 对应于 rightsubnet Libreswan 参数,并定义应该通过 VPN 访问的目标专用远程网络。

          检查 narrowing 字段以启用缩小功能。请注意,它只在 IKEv2 协商中有效。

        • Enable fragmentation 对应于 fragmentation Libreswan 参数,并定义是否允许 IKE 分段。有效值为 yes (默认)或 no
        • Enable Mobike 对应于 mobike Libreswan 参数。参数定义是否允许移动和多功能协议(MOBIKE)(RFC 4555)启用连接来迁移其端点而无需从头开始重启连接。这可用于在有线、无线或者移动数据连接之间进行切换的移动设备。值为 no (默认)或 yes
  5. IPv4 Settings 标签中,选择 IP 分配方法,并(可选)设置额外的静态地址、DNS 服务器、搜索域和路由。

    IPsec IPv4 tab

  6. 保存连接。
  7. 关闭 nm-connection-editor
注意

当您点 + 按钮添加新连接时, NetworkManager 会为那个连接创建新配置文件,然后打开同一个对话框来编辑现有连接。这两个对话框之间的区别在于现有连接配置集有详情菜单条目。

其它资源

  • 有关支持的 IPsec 参数的详情,请查看 nm-settings-libreswan(5) man page。

15.3. 在绑定中配置 ESP 硬件卸载来加快 IPsec 连接

将安全 Payload(ESP)卸载到硬件会加快 IPsec 连接。如果您出于故障切换的原因使用网络绑定,配置 ESP 硬件卸载的要求和步骤与使用常规以太网设备的要求和步骤会不同。例如,在这种情况下,您可以在绑定中启用卸载支持,内核会将设置应用到绑定的端口。

先决条件

  • 绑定中的所有网卡都支持 ESP 硬件卸载。
  • 网络驱动程序支持绑定设备中的 ESP 硬件卸载。在 RHEL 8.4 中,只有 ixgbe 驱动程序支持这个功能。
  • 该绑定经过配置并可以正常工作。
  • 该绑定使用 active-backup 模式。绑定驱动程序不支持这个功能的任何其他模式。
  • IPsec 连接被配置并可以正常工作。

流程

  1. 在网络绑定中启用 ESP 硬件卸载支持:

    # nmcli connection modify bond0 ethtool.feature-esp-hw-offload on

    这个命令在 bond0 连接中启用 ESP 硬件卸载支持。

  2. 重新激活 bond0 连接:

    # nmcli connection up bond0
  3. 编辑应该使用 ESP 硬件卸载的 /etc/ipsec.d/ 目录中的 Libreswan 配置文件,并在连接条目中添加 nic-offload=yes 语句:

    conn example
        ...
        nic-offload=yes
  4. 重启 ipsec 服务:

    # systemctl restart ipsec

验证

  1. 显示绑定的活跃端口:

    # grep "Currently Active Slave" /proc/net/bonding/bond0
    Currently Active Slave: enp1s0
  2. 显示活跃端口的 tx_ipsecrx_ipsec 计数器:

    # ethtool enp1s0 | egrep "_ipsec"
         tx_ipsec: 10
         rx_ipsec: 10
  3. 通过 IPsec 隧道发送流量。例如,ping 远程 IP 地址:

    # ping -c 5 remote_ip_address
  4. 再次显示活跃端口的 tx_ipsecrx_ipsec 计数器:

    # ethtool enp1s0 | egrep "_ipsec"
         tx_ipsec: 15
         rx_ipsec: 15

    如果计数器值增加,ESP 硬件卸载可以正常工作。