配置 P2S VPN 网关服务器设置 - RADIUS 身份验证

本文帮助你创建使用 RADIUS 身份验证的点到站点 (P2S) 连接。 可以使用 PowerShell 或 Azure 门户创建此配置。 如果你要使用其他方法进行身份验证,请参阅以下文章:

有关点到站点 VPN 连接的详细信息,请参阅关于 P2S VPN

此类型的连接需要:

  • RouteBased VPN 网关。
  • 用于处理用户身份验证的 RADIUS 服务器。 可将 RADIUS 服务器部署在本地或 Azure 虚拟网络 (VNet) 中。 还可以配置两个 RADIUS 服务器以实现高可用性。
  • VPN 客户端配置文件配置包。 VPN 客户端配置文件配置包是你生成的包。 它包含 VPN 客户端通过 P2S 进行连接所需的设置。

限制:

  • 如果使用带 RADIUS 的 IKEv2,则仅支持基于 EAP 的身份验证。
  • ExpressRoute 连接不能用于连接到本地 RADIUS 服务器。

关于 P2S VPN 的 Active Directory (AD) 域身份验证

AD 域身份验证可让用户使用其组织域凭据登录到 Azure。 它需要一台与 AD 服务器集成的 RADIUS 服务器。 组织也可以使用其现有的 RADIUS 部署。

RADIUS 服务器可以驻留在本地或 Azure VNet 中。 在身份验证期间,VPN 网关充当传递设备,在 RADIUS 服务器与连接方设备之间来回转发身份验证消息。 VPN 网关必须能够访问 RADIUS 服务器。 如果 RADIUS 服务器位于本地,需要建立从 Azure 到本地站点的 VPN 站点到站点连接。

除了 Active Directory 以外,RADIUS 服务器还能与其他外部标识系统集成。 这样就为 P2S VPN 提供了大量的身份验证选项,包括 MFA 选项。 请查看 RADIUS 服务器供应商文档,获取该服务器可集成的标识系统列表。

RADIUS 身份验证 P2S 连接的图示。

开始之前

确保拥有 Azure 订阅。 如果还没有 Azure 订阅,可以注册一个试用版

使用 Azure PowerShell

可以在计算机本地安装并运行 Azure PowerShell cmdlet。 PowerShell cmdlet 经常更新。 如果尚未安装最新版本,说明中指定的值可能会失败。 若要查找计算机上安装的 Azure PowerShell 版本,请使用 Get-Module -ListAvailable Az cmdlet。 若要进行安装或更新,请参阅安装 Azure PowerShell 模块

示例值

可使用示例值创建测试环境,或参考这些值以更好地理解本文中的示例。 可以使用这些步骤作为演练并按原样使用这些值,或者根据环境更改这些值。

  • 名称:VNet1
  • 地址空间:10.1.0.0/16 和 10.254.0.0/16
    本示例中使用了多个地址空间,说明此配置可与多个地址空间一起使用。 但是,对于此配置,多个地址空间并不必要。
  • 子网名称:FrontEnd
    • 子网地址范围:10.1.0.0/24
  • 子网名称:BackEnd
    • 子网地址范围:10.254.1.0/24
  • 子网名称:GatewaySubnet
    要使 VPN 网关正常工作,必须使用子网名称 GatewaySubnet 。
    • 网关子网地址范围:10.1.255.0/27
  • VPN 客户端地址池:172.16.201.0/24
    使用此 P2S 连接连接到 VNet 的 VPN 客户端接收来自 VPN 客户端地址池的 IP 地址。
  • 订阅:如果有多个订阅,请确保使用正确的订阅。
  • 资源组:TestRG1
  • 位置:中国北部
  • DNS 服务器: 用于 VNet 名称解析的 DNS 服务器的 IP 地址。 (可选)
  • GW 名称:Vnet1GW
  • 公共 IP 名称:VNet1GWPIP
  • VpnType:RouteBased

创建资源组、VNet 和公共 IP 地址

以下步骤在包含三个子网的资源组中创建资源组和虚拟网络。 替换值时,请务必始终将网关子网特意命名为 GatewaySubnet。 如果命名为其他名称,网关创建会失败。

  1. 使用 New-AzResourceGroup 创建资源组。

    New-AzResourceGroup -Name "TestRG1" -Location "China East 2"
    
  2. 使用 New-AzVirtualNetwork 创建虚拟网络。

    $vnet = New-AzVirtualNetwork `
    -ResourceGroupName "TestRG1" `
    -Location "China East 2" `
    -Name "VNet1" `
    -AddressPrefix 10.1.0.0/16
    
  3. 使用 New-AzVirtualNetworkSubnetConfig 创建具有以下名称的子网:FrontEnd 和 GatewaySubnet(网关子网必须命名为“GatewaySubnet”)。

    $subnetConfigFrontend = Add-AzVirtualNetworkSubnetConfig `
      -Name Frontend `
      -AddressPrefix 10.1.0.0/24 `
      -VirtualNetwork $vnet
    
    $subnetConfigGW = Add-AzVirtualNetworkSubnetConfig `
      -Name GatewaySubnet `
      -AddressPrefix 10.1.255.0/27 `
      -VirtualNetwork $vnet
    
  4. 使用 Set-AzVirtualNetwork 将子网配置写入虚拟网络,以便在虚拟网络中创建子网:

    $vnet | Set-AzVirtualNetwork
    

请求公共 IP 地址

VPN 网关必须具有公共 IP 地址。 请先请求 IP 地址资源,并在创建虚拟网关时参阅该资源。 创建 VPN 网关时,IP 地址将静态分配给资源。 公共 IP 地址只在删除或重新创建网关时更改。 该地址不会因为 VPN 网关大小调整、重置或其他内部维护/升级而更改。

  1. 使用 New-AzPublicIpAddress 请求 VPN 网关的公共 IP 地址。

    $gwpip = New-AzPublicIpAddress -Name "GatewayIP" -ResourceGroupName "TestRG1" -Location "China East 2" -AllocationMethod Static -Sku Standard
    
  2. 使用 New-AzVirtualNetworkGatewayIpConfig 创建网关 IP 地址配置。 创建 VPN 网关时会引用此配置。

    $vnet = Get-AzVirtualNetwork -Name "VNet1" -ResourceGroupName "TestRG1"
    $gwsubnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
    $gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $gwsubnet.Id -PublicIpAddressId $gwpip.Id
    

设置 RADIUS 服务器

在创建和配置虚拟网络网关之前,应该正确配置 RADIUS 服务器,以便能够进行身份验证。

  1. 如果未部署 RADIUS 服务器,请部署一个。 有关部署步骤,请参阅 RADIUS 供应商提供的设置指南。
  2. 将 VPN 网关配置为 RADIUS 上的 RADIUS 客户端。 添加此 RADIUS 客户端时,请指定创建的虚拟网络 GatewaySubnet。
  3. 设置 RADIUS 服务器后,获取 RADIUS 服务器的 IP 地址和共享机密,RADIUS 客户端将使用这些信息来与 RADIUS 服务器通信。 如果 RADIUS 服务器在 Azure VNet 中,请使用 RADIUS 服务器 VM 的 CA IP。

网络策略服务器 (NPS) 一文提供了有关为 AD 域身份验证配置 Windows RADIUS 服务器 (NPS) 的指导。

创建 VPN 网关

在此步骤中,将为 VNet 配置和创建虚拟网络网关。 有关身份验证和隧道类型的更完整信息,请参阅本文 Azure 门户版本中的指定隧道和身份验证类型

  • -GatewayType 必须是“Vpn”,且 -VpnType 必须是“RouteBased”。
  • VPN 网关可能需要 45 分钟或更长时间才能建立,具体取决于你选择的网关 SKU

在下面的示例中,我们使用 VpnGw2 第 2 代 SKU。 如果看到与 GatewaySKU 值相关的 ValidateSet 错误并且正在本地运行这些命令,请验证是否已安装最新版本的 PowerShell cmdlet。 最新版本包含最新网关 SKU 的新验证值。

使用 New-AzVirtualNetworkGateway 创建网关类型为“Vpn”的虚拟网络网关。

New-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1" `
-Location "China East 2" -IpConfigurations $gwipconfig -GatewayType Vpn `
-VpnType RouteBased -EnableBgp $false -GatewaySku VpnGw2 -VpnGatewayGeneration "Generation2"

添加 RADIUS 服务器

  • 可按名称或 IP 地址指定 -RadiusServer。 如果你指定该名称并且服务器驻留在本地,则 VPN 网关可能无法解析该名称。 如果出现这种情况,最好是指定服务器的 IP 地址。
  • -RadiusSecret 应该与 RADIUS 服务器上配置的值匹配。
  • -VpnClientAddressPool 是连接方 VPN 客户端在连接时要从中接收 IP 地址的范围。 使用专用 IP 地址范围时,该范围不得与要通过其进行连接的本地位置重叠,也不得与要连接到其中的 VNet 重叠。 请确保配置足够大的地址池。  
  1. 为 RADIUS 机密创建安全字符串。

    $Secure_Secret=Read-Host -AsSecureString -Prompt "RadiusSecret"
    
  2. 系统会提示输入 RADIUS 机密。 输入的字符不会显示,而是被“*”字符取代。

    RadiusSecret:***
    

添加客户端地址池和 RADIUS 服务器值

在本部分中,你将添加 VPN 客户端地址池和 RADIUS 服务器信息。 有多种可能的配置。 选择你要配置的示例。

SSTP 配置

$Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName "TestRG1" -Name "VNet1GW"
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
-VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "SSTP" `
-RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret

OpenVPN® 配置

$Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName "TestRG1" -Name "VNet1GW"
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway -VpnClientRootCertificates @()
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
-VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "OpenVPN" `
-RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret

IKEv2 配置

$Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName "TestRG1" -Name "VNet1GW"
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
-VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "IKEv2" `
-RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret

SSTP + IKEv2

$Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName "TestRG1" -Name "VNet1GW"
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
-VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol @( "SSTP", "IkeV2" ) `
-RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret

指定两个 RADIUS 服务器

若要指定两个 RADIUS 服务器,请使用以下语法。 根据需要修改 -VpnClientProtocol 值。

$radiusServer1 = New-AzRadiusServer -RadiusServerAddress 10.1.0.15 -RadiusServerSecret $radiuspd -RadiusServerScore 30
$radiusServer2 = New-AzRadiusServer -RadiusServerAddress 10.1.0.16 -RadiusServerSecret $radiuspd -RadiusServerScore 1

$radiusServers = @( $radiusServer1, $radiusServer2 )

Set-AzVirtualNetworkGateway -VirtualNetworkGateway $actual -VpnClientAddressPool 201.169.0.0/16 -VpnClientProtocol "IkeV2" -RadiusServerList $radiusServers

配置 VPN 客户端并连接

VPN 客户端配置文件配置包包含帮助你配置 VPN 客户端配置文件以连接到 Azure VNet 的设置。

若要生成 VPN 客户端配置包并配置 VPN 客户端,请参阅以下文章之一:

配置 VPN 客户端后,连接到 Azure。

验证连接

  1. 如果要验证用户的 VPN 连接是否处于活动状态,请打开提升的命令提示符,并运行 ipconfig/all

  2. 查看结果。 请注意,收到的 IP 地址是在配置中指定的 P2S VPN 客户端地址池中的地址之一。 结果与以下示例类似:

    PPP adapter VNet1:
       Connection-specific DNS Suffix .:
       Description.....................: VNet1
       Physical Address................:
       DHCP Enabled....................: No
       Autoconfiguration Enabled.......: Yes
       IPv4 Address....................: 172.16.201.3(Preferred)
       Subnet Mask.....................: 255.255.255.255
       Default Gateway.................:
       NetBIOS over Tcpip..............: Enabled
    

若要对 P2S 连接进行故障排除,请参阅排查 Azure 点到站点连接问题

连接到虚拟机

你可以通过建立与 VM 的远程桌面连接来连接部署到虚拟网络的 VM。 若要通过初始验证来确认能否连接到 VM,最好的方式是使用其专用 IP 地址而不是计算机名称进行连接。 这种方式测试的是能否进行连接,而不是测试名称解析是否已正确配置。

  1. 定位专用 IP 地址。 如需查找 VM 的专用 IP 地址,可以通过在 Azure 门户中查看 VM 的属性或通过使用 PowerShell 实现。

    • Azure 门户:在 Azure 门户中找到你的 VM。 查看 VM 的属性。 专用 IP 地址已列出。

    • PowerShell:通过此示例查看资源组中 VM 的列表及其专用 IP 地址。 在使用此示例之前不需对其进行修改。

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. 验证是否已连接到虚拟网络。

  3. 通过在任务栏上的搜索框中输入“RDP”或“远程桌面连接”,打开远程桌面连接。 然后选择“远程桌面连接”。 也可在 PowerShell 中使用 mstsc 命令来打开远程桌面连接

  4. 在“远程桌面连接”中,输入 VM 的专用 IP 地址。 你可以选择“显示选项”来调整其他设置,然后进行连接

如果无法通过 VPN 连接连接到 VM,请检查以下各项:

  • 验证 VPN 连接是否成功。
  • 验证是否已连接到 VM 的专用 IP 地址。
  • 如果可以使用专用 IP 地址连接到 VM,但不能使用计算机名称进行连接,则请验证是否已正确配置 DNS。 若要详细了解如何对 VM 进行名称解析,请参阅针对 VM 的名称解析

若要详细了解 RDP 连接,请参阅排查远程桌面连接到 VM 的问题

  • 验证是否在为 VNet 指定 DNS 服务器 IP 地址之后,才生成 VPN 客户端配置包。 如果更新了 DNS 服务器 IP 地址,请生成并安装新的 VPN 客户端配置包。

  • 使用“ipconfig”来检查分配给以太网适配器的 IPv4 地址,该适配器所在的计算机正是你要从其进行连接的计算机。 如果该 IP 地址位于要连接到的 VNet 的地址范围内,或者位于 VPNClientAddressPool 的地址范围内,则称为地址空间重叠。 当地址空间以这种方式重叠时,网络流量不会抵达 Azure,而是呆在本地网络中。

FAQ

有关常见问题解答信息,请参阅“常见问题解答”的点到站点 - RADIUS 身份验证部分。

后续步骤

连接完成后,即可将虚拟机添加到虚拟网络。 有关详细信息,请参阅虚拟机。 若要详细了解网络和虚拟机,请参阅 Azure 和 Linux VM 网络概述