IKEv2 VPN 配置和使用指南

导言

现代操作系统(比如 Windows 7 和更新版本)支持 IKEv2 协议标准。因特网密钥交换(英语:Internet Key Exchange,简称 IKE 或 IKEv2)是一种网络协议,归属于 IPsec 协议族之下,用以创建安全关联 (Security Association, SA)。与 IKE 版本 1 相比较,IKEv2 的 功能改进 包括比如通过 MOBIKE 实现 Standard Mobility 支持,以及更高的可靠性。

Libreswan 支持通过使用 RSA 签名算法的 X.509 Machine Certificates 来对 IKEv2 客户端进行身份验证。该方法无需 IPsec PSK, 用户名或密码。它可以用于以下系统:

  • Windows 7, 8.x 和 10
  • OS X (macOS)
  • iOS (iPhone/iPad)
  • Android 4.x 和更新版本(使用 strongSwan VPN 客户端)
  • Linux

在按照本指南操作之后,你将可以选择三种模式中的任意一种连接到 VPN:IKEv2,以及已有的 IPsec/L2TP 和 IPsec/XAuth (“Cisco IPsec”) 模式。

配置 IKEv2 VPN 客户端

  • Windows 7, 8.x 和 10
  • OS X (macOS)
  • iOS (iPhone/iPad)
  • Android
  • Linux

Windows 7, 8.x 和 10

将生成的 .p12 文件安全地传送到你的计算机,然后导入到 “计算机账户” 证书存储。要导入 .p12 文件,打开 提升权限命令提示符 并运行以下命令:# 导入 .p12 文件(换成你自己的值) certutil -f -importpfx “.p12文件的位置和名称” NoExport另外,你也可以手动导入 .p12 文件。在导入证书后,你必须确保将客户端证书放在 “个人 -> 证书” 目录中,并且将 CA 证书放在 “受信任的根证书颁发机构 -> 证书” 目录中。注: Ubuntu 18.04 用户在尝试导入 .p12 文件时可能会遇到错误 “输入的密码不正确”。

在 Windows 计算机上添加一个新的 IKEv2 VPN 连接。对于 Windows 8.x 和 10,推荐从命令提示符运行以下命令创建 VPN 连接,以达到更佳的安全性和性能。Windows 7 不支持这些命令,你可以手动创建 VPN 连接(见下面)。# 创建 VPN 连接(将服务器地址换成你自己的值) powershell -command “Add-VpnConnection -ServerAddress ‘你的 VPN 服务器 IP(或者域名)’ -Name ‘My IKEv2 VPN’ -TunnelType IKEv2 -AuthenticationMethod MachineCertificate -EncryptionLevel Required -PassThru” # 设置 IPsec 参数 powershell -command “Set-VpnConnectionIPsecConfiguration -ConnectionName ‘My IKEv2 VPN’ -AuthenticationTransformConstants GCMAES128 -CipherTransformConstants GCMAES128 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup None -DHGroup Group14 -PassThru -Force”另外,你也可以手动创建 VPN 连接。如果你在配置 IKEv2 时指定了服务器的域名(而不是 IP 地址),则必须在 Internet地址 字段中输入该域名。

为 IKEv2 启用更强的加密算法,通过修改一次注册表来实现。这一步是可选的,但推荐。请下载并导入下面的 .reg 文件,或者打开提升权限命令提示符并运行以下命令。

适用于 Windows 7, 8.x 和 10 (下载 .reg 文件)REG ADD HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters /v NegotiateDH2048_AES256 /t REG_DWORD /d 0x1 /f

OS X (macOS)

首先,将生成的 .mobileconfig 文件安全地传送到你的 Mac,然后双击并按提示操作,以导入为 macOS 配置描述文件。在完成之后,检查并确保 “IKEv2 VPN” 显示在系统偏好设置 -> 描述文件中。

要连接到 VPN:

  1. 打开系统偏好设置并转到网络部分。
  2. 选择与 你的 VPN 服务器 IP(或者域名)对应的 VPN 连接。
  3. 选中 在菜单栏中显示 VPN 状态 复选框。
  4. 单击 连接

(可选功能)你可以选择启用 VPN On Demand(按需连接) ,该功能在使用 Wi-Fi 网络时自动建立 VPN 连接。要启用它,选中 VPN 连接的 按需连接 复选框,然后单击 应用。如果你手动配置 IKEv2 而不是使用辅助脚本,点这里查看步骤。

iOS

首先,将生成的 .mobileconfig 文件安全地传送到你的 iOS 设备,并且导入为 iOS 配置描述文件。要传送文件,你可以使用:

  1. AirDrop(隔空投送),或者
  2. 使用 iTunes 的 “文件共享” 功能上传到设备,然后打开 iOS 设备上的 “文件” 应用程序,将上传的文件移动到 “On My iPhone” 目录下。然后单击它并到 “设置” 应用程序中导入,或者
  3. 将文件放在一个你的安全的托管网站上,然后在 Mobile Safari 中下载并导入它们。

在完成之后,检查并确保 “IKEv2 VPN” 显示在设置 -> 通用 -> 描述文件中。

要连接到 VPN:

  1. 进入设置 -> 通用 -> VPN。
  2. 选择与 你的 VPN 服务器 IP(或者域名)对应的 VPN 连接。
  3. 启用 VPN 连接。

(可选功能)你可以选择启用 VPN On Demand(按需连接) ,该功能在使用 Wi-Fi 网络时自动建立 VPN 连接。要启用它,单击 VPN 连接右边的 “i” 图标,然后启用 按需连接。如果你手动配置 IKEv2 而不是使用辅助脚本,点这里查看步骤。

Android

  1. 将生成的 .sswan 文件安全地传送到你的 Android 设备。
  2. 从 Google Play 安装 strongSwan VPN 客户端
  3. 启动 strongSwan VPN 客户端。
  4. 单击右上角的 “更多选项” 菜单,然后单击 导入VPN配置
  5. 选择你从服务器传送过来的 .sswan 文件。
    注: 要查找 .sswan 文件,单击左上角的抽拉式菜单,然后浏览到你保存文件的目录。
  6. 在 “导入VPN配置” 屏幕上,单击 从VPN配置导入证书,并按提示操作。
  7. 在 “选择证书” 屏幕上,选择新的客户端证书并单击 选择
  8. 单击 导入
  9. 单击新的 VPN 配置文件以开始连接。

如果你的设备运行 Android 6.0 或更早版本,点这里查看额外的步骤。

(可选功能)你可以选择启用 Android 上的 “始终开启的 VPN” 功能。启动 设置 应用程序,进入 网络和互联网 -> 高级 -> VPN,单击 “strongSwan VPN 客户端” 右边的设置图标,然后启用 始终开启的 VPN 以及 屏蔽未使用 VPN 的所有连接 选项。如果你手动配置 IKEv2 而不是使用辅助脚本,点这里查看步骤。

Linux

在配置 Linux 客户端之前,你必须更改 VPN 服务器上的以下设置:编辑服务器上的 /etc/ipsec.d/ikev2.conf。在 conn ikev2-cp 小节的末尾添加 authby=rsa-sha1,开头必须空两格。保存文件并运行 service ipsec restart

要配置你的 Linux 计算机以作为客户端连接到 IKEv2,首先安装 NetworkManager 的 strongSwan 插件:

# Ubuntu and Debian
sudo apt-get update
sudo apt-get install network-manager-strongswan

# Arch Linux
sudo pacman -Syu  # 升级所有软件包
sudo pacman -S networkmanager-strongswan

# Fedora
sudo yum install NetworkManager-strongswan-gnome

# CentOS
sudo yum install epel-release
sudo yum --enablerepo=epel install NetworkManager-strongswan-gnome

下一步,将生成的 .p12 文件安全地从 VPN 服务器传送到你的 Linux 计算机。然后提取 CA 证书,客户端证书和私钥。将下面示例中的 vpnclient.p12 换成你的 .p12 文件名。

# 示例:提取 CA 证书,客户端证书和私钥。在完成后可以删除 .p12 文件。
# 注:你将需要输入 import password,它可以在 IKEv2 辅助脚本的输出中找到。
openssl pkcs12 -in vpnclient.p12 -cacerts -nokeys -out ikev2vpnca.cer
openssl pkcs12 -in vpnclient.p12 -clcerts -nokeys -out vpnclient.cer
openssl pkcs12 -in vpnclient.p12 -nocerts -nodes  -out vpnclient.key
rm vpnclient.p12

# (重要)保护证书和私钥文件
# 注:这一步是可选的,但强烈推荐。
sudo chown root.root ikev2vpnca.cer vpnclient.cer vpnclient.key
sudo chmod 600 ikev2vpnca.cer vpnclient.cer vpnclient.key

然后你可以创建并启用 VPN 连接:

  1. 进入 Settings -> Network -> VPN。单击 + 按钮。
  2. 选择 IPsec/IKEv2 (strongswan)
  3. 在 Name 字段中输入任意内容。
  4. 在 Gateway (Server) 部分的 Address 字段中输入 你的 VPN 服务器 IP(或者域名)。
  5. 为 Certificate 字段选择 ikev2vpnca.cer 文件。
  6. 在 Client 部分的 Authentication 下拉菜单选择 Certificate(/private key)
  7. 在 Certificate 下拉菜单(如果存在)选择 Certificate/private key
  8. 为 Certificate (file) 字段选择 vpnclient.cer 文件。
  9. 为 Private key 字段选择 vpnclient.key 文件。
  10. 在 Options 部分,选中 Request an inner IP address 复选框。
  11. 在 Cipher proposals (Algorithms) 部分,选中 Enable custom proposals 复选框。
  12. 保持 IKE 字段空白。
  13. 在 ESP 字段中输入 aes128gcm16.
  14. 单击 Add 保存 VPN 连接信息。
  15. 启用 VPN 连接。