你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 P2S 证书身份验证 IKEv2 连接配置 strongSwan VPN - Linux
本文可帮助你在使用 strongSwan 的 Ubuntu Linux 客户端中通过 VPN 网关点到站点 (P2S) VPN 和证书身份验证连接到 Azure 虚拟网络 (VNet)。
开始之前
在开始之前,请验证文章是否正确。 下表显示了 Azure VPN 网关 P2S VPN 客户端可用的配置文章。 步骤因身份验证类型、隧道类型和客户端 OS 而有所不同。
身份验证 | 隧道类型 | 客户端 OS | VPN 客户端 |
---|---|---|---|
证书 | |||
IKEv2、SSTP | Windows | 本机 VPN 客户端 | |
IKEv2 | macOS | 本机 VPN 客户端 | |
IKEv2 | Linux | strongSwan | |
OpenVPN | Windows | Azure VPN 客户端 OpenVPN 客户端版本 2.x OpenVPN 客户端版本 3.x |
|
OpenVPN | macOS | OpenVPN 客户端 | |
OpenVPN | iOS | OpenVPN 客户端 | |
OpenVPN | Linux | Azure VPN 客户端 OpenVPN 客户端 |
|
Microsoft Entra ID | |||
OpenVPN | Windows | Azure VPN 客户端 | |
OpenVPN | macOS | Azure VPN 客户端 | |
OpenVPN | Linux | Azure VPN 客户端 |
先决条件
本文假定你已执行以下先决条件:
- 你已配置 VPN 网关,可用于点到站点证书身份验证和 IKEv2 隧道类型。 请参阅为 P2S VPN 网关连接配置服务器设置 - 证书身份验证以获取步骤。
- VPN 客户端配置文件已生成并可用。 有关步骤,请参阅生成 VPN 客户端配置文件。
连接要求
若要通过 IKEv2 隧道类型使用 strongSwan 客户端和证书身份验证连接到 Azure,每个连接客户端都需要以下项:
- 必须将每个客户端配置为使用 strongSwan。
- 客户端必须在本地安装正确的证书。
Workflow
本文的工作流如下:
- 安装 strongSwan。
- 查看生成的 VPN 客户端配置文件包中包含的 VPN 客户端配置文件。
- 找到必要的客户端证书。
- 配置 strongSwan。
- 连接到 Azure。
关于证书
对于证书身份验证,必须在每台客户端计算机上安装客户端证书。 要使用的客户端证书必须使用私钥导出,并且必须包含证书路径中的所有证书。 此外,对于某些配置,还需要安装根证书信息。
有关适用于 Linux 的证书的详细信息,请参阅以下文章:
安装 strongSwan
指定命令时使用了以下配置:
- 计算机:Ubuntu Server 18.04
- 依赖项:strongSwan
使用以下命令安装所需的 strongSwan 配置:
sudo apt-get update
sudo apt-get upgrade
sudo apt install strongswan
sudo apt install strongswan-pki
sudo apt install libstrongswan-extra-plugins
sudo apt install libtss2-tcti-tabrmd0
查看 VPN 客户端配置文件
生成 VPN 客户端配置文件配置包时,VPN 客户端的所有必需配置设置都包含在 VPN 客户端 zip 配置文件中。 每个虚拟网络的 P2S VPN 网关配置都有自己的 VPN 客户端配置文件。 如果生成文件后 P2S VPN 配置有任何更改,例如 VPN 协议类型或身份验证类型出现更改,则需要生成新的 VPN 客户端配置文件,并将新配置应用到所有要连接的 VPN 客户端。
找到并解压缩生成的 VPN 客户端配置文件配置包,然后下载。 可以在 Generic 文件夹中找到配置所需的所有信息。 Azure 不为此配置提供 mobileconfig 文件。
如果未看到 Generic 文件夹,请检查以下各项,然后再次生成 zip 文件。
- 检查配置的隧道类型。 可能 IKEv2 未选作隧道类型。
- 在 VPN 网关上,验证该 SKU 不是“基本”类别。 VPN 网关基本 SKU 不支持 IKEv2。 然后,选择 IKEv2 并再次生成 zip 文件以检索 Generic 文件夹。
Generic 文件夹包含以下文件:
- VpnSettings.xml:包含服务器地址和隧道类型等重要设置。
- VpnServerRoot.cer:包含在 P2S 连接设置过程中验证 Azure VPN 网关所需的根证书。
配置 VPN 客户端
查看 VPN 客户端配置文件后,请继续执行要使用的步骤:
GUI 步骤
本部分介绍如何使用 strongSwan GUI 完成配置。 以下说明是在 Ubuntu 18.0.4 上创建的。 Ubuntu 16.0.10 不支持 strongSwan GUI。 如果想要使用 Ubuntu 16.0.10,则必须使用命令行。 以下示例可能与你看到的画面不同,具体取决于所用的 Linux 和 strongSwan 版本。
打开终端并运行示例中的命令,安装 strongSwan 及其网络管理器。
sudo apt install network-manager-strongswan
选择“设置”,然后选择“网络”。 选择 + 按钮创建新连接。
从菜单中选择“IPsec/IKEv2 (strongSwan)”,然后双击。
在“添加 VPN”页上,添加 VPN 连接的名称。
打开下载的 VPN 客户端配置文件包含的 Generic 文件夹中的 VpnSettings.xml 文件。 找到名为 VpnServer 的标记,并复制以“azuregateway”开头、以“.cloudapp.net”结尾的名称。
在“网关”部分中,将此名称粘贴到新 VPN 连接的“地址”字段中 。 接下来,选择“证书”字段末尾的文件夹图标,浏览到 Generic 文件夹,并选择 VpnServerRoot 文件。
在连接的“客户端”部分,为“身份验证”选择“证书/私钥”。 对于“证书”和“私钥”,请选择前面创建的证书和私钥。 在“选项”中,选择“请求内部 IP 地址”。 然后选择“添加”。
打开连接。
CLI 步骤
本部分介绍如何使用 strongSwan CLI 完成配置。
从 VPN 客户端配置文件的 Generic 文件夹中,将 VpnServerRoot.cer 复制或移动到 /etc/ipsec.d/cacerts。
将生成的文件分别复制或移动到 /etc/ipsec.d/certs 和 /etc/ipsec.d/private/。 这些文件是客户端证书和私钥,它们需要位于相应的目录中。 使用以下命令:
sudo cp ${USERNAME}Cert.pem /etc/ipsec.d/certs/ sudo cp ${USERNAME}Key.pem /etc/ipsec.d/private/ sudo chmod -R go-rwx /etc/ipsec.d/private /etc/ipsec.d/certs
运行以下命令,记下主机名。 下一步骤中将使用此值。
hostnamectl --static
打开 VpnSettings.xml 文件并复制
<VpnServer>
值。 下一步骤中将使用此值。调整以下示例中的值,然后将该示例添加到 /etc/ipsec.conf 配置。
conn azure keyexchange=ikev2 type=tunnel leftfirewall=yes left=%any # Replace ${USERNAME}Cert.pem with the key filename inside /etc/ipsec.d/certs directory. leftcert=${USERNAME}Cert.pem leftauth=pubkey leftid=%client # use the hostname of your machine with % character prepended. Example: %client right= #Azure VPN gateway address. Example: azuregateway-xxx-xxx.vpn.azure.com rightid=% #Azure VPN gateway FQDN with % character prepended. Example: %azuregateway-xxx-xxx.vpn.azure.com rightsubnet=0.0.0.0/0 leftsourceip=%config auto=add esp=aes256gcm16
将机密值添加到 /etc/ipsec.secrets。
PEM 文件的名称必须与前面用作客户端密钥文件的内容匹配。
: RSA ${USERNAME}Key.pem # Replace ${USERNAME}Key.pem with the key filename inside /etc/ipsec.d/private directory.
运行以下命令:
sudo ipsec restart sudo ipsec up azure
后续步骤
有关更多步骤,请返回 P2S Azure 门户,查看相关文章。