点到站点 (P2S) 配置提供通过创建用户组基于特定地址池中的用户 IP 地址或身份验证凭据分配用户 IP 地址的功能。 本文可帮助你配置用户组、组成员和设置组的优先级。 有关使用用户组的详细信息,请参阅 “关于用户组”。
重要
P2S 连接的用户组和 IP 地址池目前为预览版。 有关适用于 Beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Azure 预览版补充使用条款 。
先决条件
本文假定你具有 VPN 网关 P2S 配置。 如果尚未设置 P2S VPN 网关,请参阅以下文章:
- 使用 证书身份验证配置 P2S VPN 网关:
- 有关 门户 的信息,请参阅配置 P2S VPN 网关证书身份验证的服务器设置
- 有关 Powershell ,请参阅 P2S VPN 网关证书身份验证 - PowerShell
- 使用 Microsoft Entra ID 身份验证 配置 P2S VPN 网关的步骤,请参阅 P2S VPN 网关,用于Microsoft Entra ID 身份验证
- 若要配置 Azure VPN 客户端,请参阅 VPN 客户端配置表。
Workflow
本文使用以下工作流来帮助为 P2S VPN 网关连接设置用户组和 IP 地址池。
- 考虑配置要求。
- 选择身份验证机制。
- 创建用户组。
- 配置网关设置
考虑配置要求
本部分列出了用户组和 IP 地址池的配置要求和限制。
单个 P2S VPN 网关可以引用的最大组数为 90。 分配给网关的组中,用于标识连接用户所属组的最大策略/组成员数为 390。 但是,如果将一个组分配到同一网关上的多个连接配置,则此组及其成员将多次计入限制。 例如,如果有一个策略组包含 10 个成员,该组分配给网关上的三个 VPN 连接配置。 此配置将计为 30 个总成员的三个组,而不是一个包含 10 个成员的组。 连接到网关的并发用户总数受网关缩放单元的限制,以及分配给每个用户组的 IP 地址数,而不是与网关关联的策略/组成员数。
创建组作为 VPN 服务器配置的一部分后,无法修改组的名称和默认设置。
组名称应不同。
在具有较高数值优先级的组之前,将处理具有较低数值优先级的组。 如果连接用户是多个组的成员,网关会将其视为具有较低数值优先级的组的成员,以便分配 IP 地址。
无法删除现有点到站点 VPN 网关使用的组。
可以通过单击对应于该组的向上箭头按钮对组的优先级重新排序。
- 地址池不能与其他连接配置中使用的地址池重叠(相同或不同的网关)。
- 地址池也不能与虚拟网络地址空间、虚拟中心地址空间或本地地址重叠。
- 地址池不能小于 /24。 例如,不能分配 /25 或 /26 的范围。
选择身份验证机制
以下部分列出了可在创建用户组时使用的可用身份验证机制。
Microsoft Entra 组
若要创建和管理Microsoft Entra 组,请参阅 “管理Microsoft Entra 组和组成员身份。
需要将 Microsoft Entra 用户组 对象 ID (而不是组名称)指定为点到站点配置的一部分。
Microsoft Entra 用户可以分配为多个 Active Directory 组的一部分,VPN 网关将用户视为 VPN 用户/策略的一部分。 如果用户属于多个组,则在点到站点连接中选择具有最低数值优先级的组。
RADIUS - NPS 供应商特定的属性
有关网络策略服务器(NPS)特定于供应商的属性配置信息,请参阅 RADIUS - 为特定于供应商的属性配置 NPS。
证书
若要生成自签名证书,请参阅 使用 PowerShell 为点到站点生成和导出证书。 若要生成具有特定公用名的证书,请运行 PowerShell 命令时,将 xx@domain.com 参数更改为相应的值(例如New-SelfSignedCertificate
)。 例如,可以使用以下 使用者生成证书:
数字证书字段 | 价值 | Description |
---|---|---|
主题 | CN= cert@marketing.contoso.com | 营销部门的数字证书 |
主题 | CN= cert@sale.contoso.com | 销售部门的数字证书 |
具有数字证书身份验证的多个地址池功能适用于基于 “使用者” 字段的特定用户组。 选择条件不适用于使用者可选名称(SAN)证书。
如果要在其证书中指定 SAN,则必须与多池功能的使用者相同才能正常运行。 主题与 SAN 之间的差异将导致问题。
创建用户组
1.声明变量
$rg = "TestRG2"
$location = "ChinaNorth3"
$VNetName = "TestVNet"
$AppSubName = "AppSubnet"
$GWSubName = "GatewaySubnet"
$VNetPrefix = "10.0.0.0/24"
$AppSubPrefix = "10.0.0.0/26"
$GWSubPrefix = "10.0.0.192/26"
$GWName = "gw"
$GWIPName = "gwIP1"
$GWIPconf = "gwipconf1"
2.创建虚拟网络和 VPN 网关
打开 PowerShell 控制台并连接到帐户。 有关详细信息,请参阅 将 Windows PowerShell 与资源管理器配合使用。 使用以下示例帮助你连接:
Connect-AzAccount
Select-AzSubscription -SubscriptionName <YourSubscriptionName>
New-AzResourceGroup -Name $rg -Location $location
$appsub = New-AzVirtualNetworkSubnetConfig -Name $AppSubName -AddressPrefix $AppSubPrefix
$gwsub = New-AzVirtualNetworkSubnetConfig -Name $GWSubName -AddressPrefix $GWSubPrefix
New-AzVirtualNetwork -Name $VNetName -ResourceGroupName $RG -Location $Location -AddressPrefix $VNetPrefix -Subnet $appsub,$gwsub
$gwpip = New-AzPublicIpAddress -Name $GW2IPName1 -ResourceGroupName $RG -Location $Location -AllocationMethod Static `
-Sku Standard -Tier Regional -Zone 1, 2, 3
$vnet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $RG
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
$gwipconf = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconf1 -Subnet $subnet -PublicIpAddress $gwpip
New-AzVirtualNetworkGateway -Name $GWName -ResourceGroupName $RG -Location $Location `
-IpConfigurations $gwipconf `
-GatewayType Vpn `
-VpnType RouteBased `
-VpnGatewayGeneration Generation2 `
-GatewaySku VpnGw2AZ
创建 VPN 网关可能需要大约 45 分钟或更多时间。
3.验证是否具有正确的 VPN 网关
$gw = Get-AzVirtualNetworkGateway -Name $GWName -ResourceGroupName $RG
4.创建用户组
在此方案中,我们考虑四个用户组的情况:具有数字证书身份验证的两个用户组和两个具有Microsoft Entra ID 身份验证的用户组:
具有公用名的两组客户端证书。
yourServiceName@marketing.contoso.com
yourServiceName@sale.contoso.com
在 Microsoft Entra ID 中创建的两个组(替换为
ObjectId1/ObjectId2
对象 ID 值)。- 工程组 {ObjectId1}
- Finance {ObjectId2}
5.将 P2S 配置添加到 VPN 网关
以下 cmdlet 配置将 VPN 网关设置为使用客户端地址池 VpnClientAddressPool 和身份验证选项:
- 基于证书的身份验证: 证书
- Microsoft Entra ID: AAD
有关 P2S Microsoft Entra ID 身份验证值的详细信息,请参阅 配置 P2S VPN 网关以Microsoft Entra ID 身份验证。
以 .cer 格式导出根证书的公共数据,收集数据并在变量中分配根证书的公共数据$rootCert:
$rootCert = 'MIIC5zCCAc+gAwIBAgIQH0n3xp1vV7FBfqhwRvJOljA...............'
注释
收集根证书(.cer文件)的公共数据时,不包括分配给变量的值中的标头和预告片$rootCer
接下来,设置虚拟网络网关。 在以下命令中,替换以下值:
- 具有相应Microsoft Entra 租户 ID 的 {TenantID}(不含大括号)。
- AadAudienceID ,其Microsoft注册的 Azure VPN 客户端应用 ID 的相应值。 还可以在此字段中使用 自定义受众 。
- x.x.0.0/24 地址池,用于连接不属于多个地址池配置的 VPN 客户端。
$gw = Set-AzVirtualNetworkGateway -VirtualNetworkGateway $gw1 `
-VpnAuthenticationType Certificate, AAD -VpnClientAddressPool x.x.0.0/24 `
-VpnClientRootCertificates $rootCert -VpnClientProtocol IkeV2, OpenVPN `
-AadTenantUri 'https://login.chinacloudapi.cn/{TenantID}' `
-AadIssuerUri 'https://sts.chinacloudapi.cn/{TenantID}/' `
-AadAudienceId 'c632b3df-fb67-4d84-bdcf-b95ad541b5c8'
6. 创建策略组成员
为每个组配置四个成员,一个成员:
member1 和 member2 基于数字证书身份验证(身份验证类型: CertificateGroupID)。
member3 和 member4 基于 Microsoft Entra ID 身份验证(身份验证类型:AADGroupID)
- {ObjectId1} 和 {ObjectId2} 是表示Microsoft Entra ID 租户中两个不同的组 ID 的值。
成员名称 | 身份验证类型 | 属性值 |
---|---|---|
member1 | CertificateGroupId | marketing.contoso.com |
member2 | CertificateGroupId | sale.contoso.com |
member3 | AADGroupID | {ObjectId1} |
member4 | AADGroupID | {ObjectId2} |
$member1 = New-AzVirtualNetworkGatewayPolicyGroupMember -Name "member1" `
-AttributeType "CertificateGroupId" -AttributeValue "marketing.contoso.com" `
$member2 = New-AzVirtualNetworkGatewayPolicyGroupMember -Name "member2" `
-AttributeType "CertificateGroupId" -AttributeValue "sale.contoso.com" `
$member3 = New-AzVirtualNetworkGatewayPolicyGroupMember -Name "member3" `
-AttributeType "AADGroupId" -AttributeValue "{ObjectId1}" `
$member4 = New-AzVirtualNetworkGatewayPolicyGroupMember -Name "member4" `
-AttributeType "AADGroupId" -AttributeValue "{ObjectId2}" `
7. 创建虚拟网络网关策略组
该配置创建三个网关策略组,这些策略组负责使用数字证书在公用名(CN)字段中指定以下内容,并Microsoft指定 ObjectID 组的 Entra ID 组:
- policyGroup1:marketing.contoso.com、$member 1
- policyGroup2:sale.contoso.com、$member 2
- policyGroup3:{ObjectId1},也称为$member 3
- policyGroup4:{ObjectId2},也称为$member 4
按表中所述创建三个网关策略组:
策略组名称 | 默认策略 | Priority | 策略成员对象 |
---|---|---|---|
policyGroup1 | 是 | 0 | member1 |
policyGroup2 | 假 | 10 | member2 |
policyGroup3 | 假 | 20 | member3 |
policyGroup4 | 假 | 30 | member4 |
$policyGroup1 = New-AzVirtualNetworkGatewayPolicyGroup -Name "policyGroup1" `
-Priority 0 -DefaultPolicyGroup -PolicyMember $member1
$policyGroup2 = New-AzVirtualNetworkGatewayPolicyGroup -Name "policyGroup2" `
-Priority 10 -PolicyMember $member2
$policyGroup3 = New-AzVirtualNetworkGatewayPolicyGroup -Name "policyGroup3" `
-Priority 20 -PolicyMember $member3
$policyGroup4 = New-AzVirtualNetworkGatewayPolicyGroup -Name "policyGroup4" `
-Priority 30 -PolicyMember $member4
8. 创建 VPN 客户端连接配置
VPN 配置定义了四个不同的地址池,每个池都链接到特定的 policyGroup。
VPN 配置名称 | 地址池 | PolicyGroup |
---|---|---|
config1 | x.x.1.0/24 | policyGroup 1:marketing.contoso.com |
config2 | x.x.2.0/24 | PolicyGroup 2:sale.contoso.com |
config3 | x.x.3.0/24 | PolicyGroup 3:工程 {ObjectId1} |
config4 | x.x.4.0/24 | PolicyGroup4:Finance {ObjectId2} |
$vngconnectionConfig1 = New-AzVpnClientConnectionConfiguration -Name "config1" `
-VirtualNetworkGatewayPolicyGroup $policyGroup1 `
-VpnClientAddressPool "x.x.1.0/24"
$vngconnectionConfig2 = New-AzVpnClientConnectionConfiguration -Name "config2" `
-VirtualNetworkGatewayPolicyGroup $policyGroup2 `
-VpnClientAddressPool "x.x.2.0/24"
$vngconnectionConfig3 = New-AzVpnClientConnectionConfiguration -Name "config3" `
-VirtualNetworkGatewayPolicyGroup $policyGroup3 `
-VpnClientAddressPool "x.x.3.0/24"
$vngconnectionConfig4 = New-AzVpnClientConnectionConfiguration -Name "config4" `
-VirtualNetworkGatewayPolicyGroup $policyGroup4 `
-VpnClientAddressPool "x.x.4.0/24"
9. 将配置应用到 VPN 网关
$gw = Set-AzVirtualNetworkGateway -VirtualNetworkGateway $gw `
-VirtualNetworkGatewayPolicyGroup `
$policyGroup1, $policyGroup2, $policyGroup3, $policyGroup4 `
-ClientConnectionConfiguration $vngconnectionConfig1, $vngconnectionConfig2, `
$vngconnectionConfig3, $vngconnectionConfig4
在多个地址池设置结束时,可以通过以下逻辑结构来表示配置:
策略组名称 | 默认策略 | Priority | 策略成员 | 身份验证类型 | 组配置值 | VPN 客户端地址池 |
---|---|---|---|---|---|---|
policyGroup1 | 是 | 0 | member1 | CertificateGroupId | marketing.contoso.com | x.x.1.0/24 |
policyGroup2 | 假 | 10 | member2 | CertificateGroupId | sale.contoso.com | x.x.2.0/24 |
policyGroup3 | 假 | 20 | member3 | AADGroupID | {ObjectId1} | x.x.3.0/24 |
policyGroup4 | 假 | 30 | member4 | AADGroupID | {ObjectId2} | x.x.4.0/24 |
Troubleshooting
- 验证数据包是否具有正确的属性? Wireshark 或其他数据包捕获可以在 NPS 模式下运行,并使用共享密钥解密数据包。 可以验证数据包是否正从 RADIUS 服务器发送到配置了正确的 RADIUS VSA 的点到站点 VPN 网关。
- 是否为用户分配了错误的 IP? 设置并检查 NPS 事件日志记录以进行身份验证,无论用户是否匹配策略。
- 处理池时遇到问题? 每个地址池都在网关上指定。 地址池拆分为两个地址池,并分配给点到站点 VPN 网关对中的每个主动-主动实例。 这些拆分地址应显示在有效的路由表中。 例如,如果指定 10.0.0.0/24,则应在有效路由表中看到两个“/25”路由。 如果不是这种情况,请尝试更改网关上定义的地址池。
- P2S 客户端无法接收路由? 确保所有点到站点 VPN 连接配置都关联到 defaultRouteTable,并传播到同一组路由表。 如果使用门户,则应自动配置此项,但如果使用的是 REST、PowerShell 或 CLI,请确保正确设置所有传播和关联。
- 无法使用 Azure VPN 客户端启用多池? 如果使用 Azure VPN 客户端,请确保安装在用户设备上的 Azure VPN 客户端是最新版本。 需要再次下载客户端才能启用此功能。
- 所有用户都分配到默认组? 如果使用 Microsoft Entra ID 身份验证,请确保服务器配置
(https://login.chinacloudapi.cn/<tenant ID>)
中的租户 URL 输入不会以结尾\
。 如果 URL 输入为结尾\
,则网关将无法正确处理Microsoft Entra 用户组,并且所有用户都分配到默认组。 若要修正,请修改服务器配置以删除尾随\
并修改网关上配置的地址池,以将更改应用到网关。 这是一个已知问题。 - 尝试邀请外部用户使用 Multipool 功能? 如果使用 Microsoft Entra ID 身份验证,并且计划邀请外部用户(不属于 VPN 网关上配置的 Microsoft Entra 域的用户)连接到 VPN 网关,请确保外部用户的用户类型为“成员”而不是“来宾”。 此外,请确保用户的“名称”设置为用户的电子邮件地址。 如果未正确设置连接用户的用户类型和名称,或者无法将外部成员设置为 Microsoft Entra 域的“成员”,则连接用户将分配到默认组,并从默认 IP 地址池分配 IP。