本文介绍如何创建一个从本地网络到 Azure 虚拟网络 (VNet) 的 IPv4 和 IPv6 双栈主动-主动站点到站点 (S2S) VPN 连接。 选择Azure portal、Azure PowerShell或Azure CLI来配置连接。
站点到站点 VPN 网关连接通过 IPsec/IKE VPN 隧道将本地网络连接到 Azure 虚拟网络。 这种连接需要一个位于本地、拥有外部公共IP地址的VPN设备。 支持双堆栈的当前站点到站点 VPN 配置仅允许内部隧道中的 IPv6 流量。 内隧道仅在使用 IKEv2 时支持 IPv6 流量。
本文步骤是在VPN网关与拥有两个公共IP地址的本地VPN设备之间建立两个连接。 每个本地公共IP地址由Azure中的独立局域网网关表示。 两个连接使用共享密钥,属于主动-主动配置,每个网关实例都有一个隧道。 有关VPN网关的更多信息,请参见《关于VPN 网关》。
注释
本文介绍了用于S2S连接的IPv6。 对于点对点(P2S)连接,请使用P2S配置文章中的认证类型。 P2S支持IKEv2和OpenVPN的IPv6,但不支持SSTP。 有关详细信息,请参阅 “关于点到站点 VPN”。
在您开始之前
在开始配置之前,请验证环境是否符合以下条件:
验证是否具有基于路由的正常运行的 VPN 网关。 要创建VPN网关,请参见Azure门户中的“创建VPN网关”、“用Azure PowerShell创建VPN网关”,或“用Azure CLI创建基于路由的VPN网关”。
如果你不熟悉本地网络配置中的IP地址范围,建议与能提供这些信息的人协调。 创建配置时,必须指定 Azure 路由到本地位置的 IP 地址前缀。 你本地网络中的子网不能与你想连接的虚拟网络子网重叠。
确保你有兼容的VPN设备和能配置的人。 有关兼容的 VPN 设备和设备配置的详细信息,请参阅关于 VPN 设备。
确定 VPN 设备是否支持双活模式网关。 本文将创建一个主动主动模式的 VPN 网关。 我们推荐主动模式以实现高度可得的连接。 主动-主动模式指定两个网关 VM 实例都处于活动状态。 此模式需要两个公共 IP 地址,一个用于每个网关 VM 实例。 需要将 VPN 设备配置为连接到每个网关 VM 实例的 IP 地址。
如果 VPN 设备不支持此模式,请不要为网关启用此模式。 有关详细信息,请参阅为跨场所连接和 VNet 到 VNet 连接设计高可用连接和关于主动-主动模式的 VPN 网关。
如果虚拟网络网关和本地网关驻留在不同的订阅和不同的租户中,则需要使用略有不同的步骤。 请查看“与不同租户和不同订阅的连接”部分。
限制
以下限制适用于IPv4和IPv6双栈VPN 网关部署,无论部署方式如何:
- VpnGw1AZ 通过 VpnGw5AZ 支持 IPv6 双栈部署。
- 你不能将部署在IPv6双栈模式下的VPN网关改成仅支持IPv4的配置。
- S2S VPN 网关不支持 IKEv1 的 IPv6 流量。 使用 IKEv2。
- IPv6 仅支持 VPN 隧道内的流量。 Azure VPN 网关 不支持 IPv6 外部 VPN 隧道端点。
Azure 门户
三种部署方法的示例使用相同的值。 用环境值替换示例地址空间和资源名称。
截图展示了代表性的双栈设置。 截图中的数值可能与该程序中的示例不同。
创建 Azure 虚拟网络
创建一个包含IPv4和IPv6地址空间的虚拟网络。
在Azure portal中,搜索并选择Virtual networks。
选择“创建”。
在“ 基本信息 ”选项卡上,选择订阅和资源组。 输入VNet1作为名称,然后选择你的Azure区域。
在 IP地址 标签页中,配置以下地址空间:
-
IPv4地址空间:
10.1.0.0/16 -
IPv6地址空间:
fd:0:1::/48
-
IPv4地址空间:
添加一个名为 subnet1 的工作载荷子网,地址范围如下:
-
IPv4地址范围:
10.1.1.0/24 -
IPv6地址范围:
fd:0:1:1::/64
-
IPv4地址范围:
选择 “审阅 + 创建”,然后选择“ 创建”。
创建网关子网
转到 Azure 门户中的 VNet1。
在 设置中,选择 子网,然后选择 +网关子网。
配置这些地址范围:
-
IPv4地址范围:
10.1.0.0/24 -
IPv6地址范围:
fd:0:1:e::/64
-
IPv4地址范围:
选择“保存”。
创建主动-主动双栈 VPN 网关
使用以下值创建主动-主动 VPN 网关:
IPv6 支持适用于 VPN 隧道内的流量,并且需要 IKEv2。 Azure 不支持 IPv6 终端作为外部 VPN 隧道。 本示例使用支持的 VpnGw2AZ SKU。
- 名称:VNet1GW
- 网关类型: VPN
- SKU:VpnGw2AZ
- 代系:第 2 代
- 虚拟网络: VNet1
- 公共IP地址名称:VNet1GWpip1
- 第二个公共IP地址名称:VNet1GWpip2
- 启用主动-主动模式:已启用
- 配置 BGP:已禁用
在“搜索资源、服务和文档(G+/)”中,输入“虚拟网络网关”。 在市场搜索结果中找到“虚拟网络网关”,选择它以打开“创建虚拟网络网关”页面。
在“基本信息”选项卡上,填写“项目详细信息”和“实例详细信息”的值 。
订阅:从下拉列表中选择要使用的订阅。
资源组:在此页上选择虚拟网络时,会自动填充此值。
名称:要创建的网关对象的名称。 这与用于部署网关资源的子网不同。
区域:选择要在其中创建此资源的区域。 网关的区域必须与虚拟网络相同。
网关类型:选择“VPN”。 VPN 网关使用虚拟网络网关类型“VPN” 。
SKU:从下拉列表中选择一个支持你想要使用的功能的
网关 SKU。 - 建议选择尽可能以 AZ 结尾的 SKU。 AZ SKU 支持可用性区域。
- 门户中没有基础 SKU。 必须使用 PowerShell 或 CLI 配置基本 SKU 网关。
代系:从下拉列表中选择“第 2 代”。
虚拟网络:从下拉列表中选择要将此网关添加到的虚拟网络。 如果看不到要使用的虚拟网络,请确保在以前的设置中选择了正确的订阅和区域。
“网关子网地址范围”或“子网”:创建 VPN 网关时需要网关子网。
目前,此字段可能显示不同的设置选项,具体取决于虚拟网络地址空间,以及是否已为虚拟网络创建名为 GatewaySubnet 的子网。
如果你没有网关子网,并且此页面未显示创建选项,请返回你的虚拟网络中创建网关子网。 然后,返回到此页面并配置 VPN 网关。
指定“公共 IP 地址”的值。 这些设置指定将与 VPN 网关关联的公共 IP 地址对象。 创建 VPN 网关后,会将公共 IP 地址分配给每个公共 IP 地址对象。 仅当删除并重新创建网关时,分配的公共 IP 地址才会发生更改。 IP 地址不会因为 VPN 网关扩展、重置或其他内部维护/升级而更改。
公共 IP 地址类型:如果显示了此选项,请选择“标准”。
公共 IP 地址:保持“新建”选中状态。
公共 IP 地址名称:在文本框中,输入公共 IP 地址实例的名称。
公共 IP 地址 SKU:设置会自动选择为标准 SKU。
分配:分配通常是自动选择的,并且应为“静态”。
可用性区域:此设置适用于支持可用性区域区域中的 AZ 网关 SKU。 选择“区域冗余”,除非明确需要指定一个区域。
启用主动-主动模式:建议选择“启用”,以利用主动-主动模式网关的优势。 如果计划将此网关用于站点到站点连接,请考虑以下事项:
- 验证要使用的主动-主动设计。 必须专门配置与本地 VPN 设备的连接,以便在主动-主动模式下运行。
- 某些 VPN 设备不支持主动-主动模式。 如果不确定,请咨询 VPN 设备供应商。 如果您的 VPN 设备不支持主动-主动模式,您可以在此设置中选择“禁用”。
第二个公共 IP 地址:选择“新建”。 仅当您在启用主动-主动模式设置中选择启用时,此选项才可用。
公共 IP 地址名称:在文本框中,输入公共 IP 地址实例的名称。
公共 IP 地址 SKU:设置会自动选择为标准 SKU。
可用性区域:选择“区域冗余”,除非明确需要指定一个区域。
配置 BGP:除非你的配置专门需要此设置,否则请选择“已禁用”。 如果确实需要此设置,则默认 ASN 为 65515,但可以更改此值。
启用 密钥保管库 访问权限:除非你的配置专门需要此设置,否则请选择“禁用”。
选择“查看 + 创建” ,运行验证。
验证通过后,选择“创建”以部署 VPN 网关。
创建一个网关可能需要45分钟甚至更久。 您可以在 网关的概览 页面查看部署状态。
查看VPN网关的公共IP地址
- 在Azure门户访问VNet1GW。
- 在 设置下,选择 属性。
- 记录两个公共IP地址。 配置本地VPN设备时,为每个地址创建一个隧道。
创建本地网络网关
每个本地网络网关代表同一本地 VPN 设备上的一个公共 IP 地址。 两个本地网络网关都包含相同的本地IPv4和IPv6地址前缀。
通过以下数值创建第一个本地网络网关:
- 名称:lngSite11
- 端点:IP地址
- IP地址:您本地VPN设备上的第一个公共IP地址
-
地址空间:
10.0.0.0/16、fd:0:2::/48、 和fd:0:3::/48
配置注意事项:
- VPN 网关 的每个 FQDN 仅支持一个 IPv4 地址。 如果域名解析为多个 IP 地址,VPN 网关会使用 DNS 服务器返回的第一个 IP 地址。 为了消除这种不确定性,建议你的 FQDN 始终解析为一个单一的 IPv4 地址。 不支持 IPv6。
- VPN 网关维护一个 DNS 缓存,该缓存每 5 分钟刷新一次。 此网关仅尝试解析已断开连接的隧道的 FQDN。 重置网关也触发 FQDN 解析。
- 尽管 VPN 网关 支持与多个不同的本地网络网关建立连接,每个连接使用不同的 FQDN,但所有 FQDN 必须解析为不同的 IP 地址。
在门户中,转到“本地网络网关”,打开“创建本地网关”页。
在基本信息选项卡上,指定本地网络网关的值。
- Subscription: 验证显示的订阅是否正确。
- 资源组:选择要使用的资源组。 可以创建新的资源组或选择已创建的资源组。
- 区域:选择此对象所在的区域。 可能希望选择与虚拟网络所在位置相同的位置,但这不是必须的。
- 名称: 指定本地网络网关对象的名称。
- 终结点:为本地 VPN 设备选择“IP 地址”或“FQDN (完全限定的域名)”作为终结点类型。
- IP 地址:如果你的 Internet 服务提供商 (ISP) 向你分配了可用于 VPN 设备的静态公共 IP 地址,那么请选择“IP 地址”选项。 填写示例所示的 IP 地址。 此地址是 Azure VPN 网关要连接的 VPN 设备的公共 IP 地址。 如果目前没有 IP 地址,可以使用示例中显示的值。 稍后,你必须返回并将占位符 IP 地址替换为 VPN 设备的公共 IP 地址。 否则,Azure 无法进行连接。
- FQDN:如果你有动态公共 IP 地址,且该地址可能会在某段时间(通常由你的 ISP 决定)后发生变化,那么你可对动态 DNS 服务使用常量 DNS 名称来指向你的 VPN 设备的当前公共 IP 地址。 你的 Azure VPN 网关会解析 FQDN 来确定要连接到的公共 IP 地址。
- 地址空间:地址空间指的是此本地网络所代表的网络的地址范围。 可以添加多个地址空间范围。 请确保此处指定的范围不会与要连接到的其他网络范围重叠。 Azure 会将你指定的地址范围路由到本地 VPN 设备 IP 地址。 如果需要连接到本地站点,请在此处使用自己的值,而不是示例中显示的值。
在“高级”选项卡上,可以根据需要配置 BGP 设置。
指定值后,选择页面底部的“查看 + 创建”以验证页面。
选择创建以创建本地网络网关对象。
重复上述步骤以创建 lngSite12。 在同一台本地 VPN 设备上使用第二个公共 IP 地址,并添加相同的 IPv4 和 IPv6 地址空间。
配置 VPN 设备
站点到站点连接需要兼容的本地VPN设备。 将设备配置为以下数值:
- 共享密钥:为本地设备和两个 Azure 连接使用相同的共享密钥。 生成一个VPN设备支持的强密钥。
- Azure网关公网IP地址:为主动VPN网关的每个公网IP地址配置一条隧道。
- IKE 版本:使用 IKEv2。 IKEv1不支持IPv6流量。
- 远程地址空间:为你的 Azure VNet 配置 IPv4 和 IPv6 地址空间。
关于设备特定的配置指南,请参见 “配置您的VPN设备”。
创建 VPN 连接
通过以下数值创建第一个连接:
- 连接类型:站点对站点(IPsec)
- 名称:conn11
- 虚拟网络网关:VNet1GW
- 本地网络网关:lngSite11
- 共享密钥:在你的VPN设备上配置的共享密钥
- IKE 协议:IKEv2
在门户中,转到虚拟网络网关并将其打开。
打开网关页面后,选择“连接”选项。
在“连接”页的顶部,选择“+添加”打开“创建连接”页。
在“创建连接”页的“基本信息”选项卡上,配置连接的各个值:
在“项目详细信息”下,选择订阅和资源所在的资源组。
在“实例详细信息”下,配置以下设置:
- 连接类型: 选择“站点到站点(IPsec)”。
- 名称: 命名连接。
- 区域:选择此连接所在的区域。
选择“设置”选项卡,配置以下值:
- 虚拟网络网关:从下拉列表中选择虚拟网络网关。
- 本地网络网关:从下拉列表中选择本地网络网关。
- 共享密钥:此处的值必须与用于本地 VPN 设备的值匹配。 如果此字段未显示在门户页上,或者想要稍后更新此密钥,可以在创建连接对象后执行此操作。 转到创建的连接对象(示例名称:VNet1toSite1),并在“身份验证”页上更新密钥。
- IKE 协议:选择“IKEv2”。
- 使用Azure专用 IP 地址:请勿选择。
- 启用 BGP:不要选择。
- FastPath:不要选择。
- IPsec/IKE 策略:选择“默认”。
- 使用基于策略的流量选择器:选择“禁用”。
- DPD 超时(秒):选择45。
- 连接模式:选择“默认”。 此设置用于指定哪个网关可以启动连接。 有关详细信息,请参阅 VPN 网关设置 - 连接模式。
对于“NAT 规则关联”,请将“Ingress”和“Egress”保留为“已选 0”。
选择“查看 + 创建”,确认连接设置。
选择“创建”以创建连接。
部署完成后,可在虚拟网络网关的“连接”页上查看连接。 “状态”会从“未知”更改为“正在连接”,再更改为“成功”。
重复上述步骤即可创建 conn12。 选择 lngSite12 作为本地网络网关,并使用相同的共享密钥。
验证VPN连接
- 在Azure门户访问VNet1GW。
- 在“设置”下,选择“连接”。
- 确认 conn11 和 conn12 都显示为 已连接状态。
- 选择每个连接以查看其入口和出口数据传输值。
修改本地网络网关的 IP 地址前缀
- 在 Azure 门户中,选择“本地网络网关”,选择你想修改的本地网络网关。
- 在 “设置”下,选择“ 配置”。
- 添加或移除IPv4和IPv6地址空间。 完整的集合必须代表Azure通过该本地网络网关路由的网络。
- 选择“保存”。
如果两个本地网络网关代表相同的本地网络,则对 lngSite11 和 lngSite12 进行相同的前缀更改。
修改本地网络网关的 IP 地址
- 在 Azure 门户中访问本地网络网关。
- 在 “设置”下,选择“ 配置”。
- 将 IP 地址 更改为您的本地部署 VPN 设备更新后的公网 IP 地址。
- 选择“保存”。
删除网关连接
- 在Azure门户访问VNet1GW。
- 在“设置”下,选择“连接”。
- 选择你想删除的连接,然后选择 删除。
- 确认删除。
Azure PowerShell
本文使用 PowerShell cmdlet。 若要运行 cmdlet,请使用计算机上安装的 PowerShell。 确保已安装最新的Azure PowerShell模块。 有关安装说明,请参阅 Install Azure PowerShell。
分配配置中使用的变量。
$ResourceGroup = 'resource-group-name'
$Location = 'name-of-the-azure-region'
$vnetName = 'VNet1'
$VNetAddressPrefix = "10.1.0.0/16", "fd:0:1::/48"
$WorkloadSubnetName = 'subnet1'
$GatewaySubnet = @('10.1.0.0/24', 'fd:0:1:e::/64')
$WorkloadSubnet = @('10.1.1.0/24', 'fd:0:1:1::/64')
$GatewayName = 'gw1'
# name of the first and second public IP of the VPN Gateway
$PublicIP1 = "$GatewayName-pip1"
$PublicIP2 = "$GatewayName-pip2"
# name of the configurations of the VPN Gateway
$GatewayIPConfig1 = "$GatewayName-ipconfig1"
$GatewayIPConfig2 = "$GatewayName-ipconfig2"
# VPN type Route based
$VPNType = 'RouteBased'
$GatewayType = 'Vpn'
创建 Azure 虚拟网络
# Create the configuration for the GatewaySubnet
$subnet1 = New-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix $GatewaySubnet
# Create the configuration for the workload subnet
$subnet2 = New-AzVirtualNetworkSubnetConfig -Name $WorkloadSubnetName -AddressPrefix $WorkloadSubnet
# Create the VNet with name specified in the variable $vnetName
New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $ResourceGroup `
-Location $Location `
-AddressPrefix $VNetAddressPrefix `
-Subnet $subnet1, $subnet2
创建主动-主动双栈 VPN 网关
在 GatewaySubnet 部署带有区域 SKU 的 Azure VPN 网关。 IPv6 支持适用于 VPN 隧道内的流量,并且需要 IKEv2。 外部VPN隧道不支持IPv6端点。 在主动-主动模式下,网关需要两个采用标准 SKU 的公共 IP 地址。 本示例使用支持的 VpnGw2AZ SKU。 先创建公网IP地址,然后创建VPN网关。
# Create the first public IP for the VPN Gateway
$gwpip1 = New-AzPublicIpAddress -Name $PublicIP1 -ResourceGroupName $ResourceGroup -Location $Location -AllocationMethod Static -Sku Standard -Tier Regional -Zone 1,2,3
# Create the second public IP for the VPN Gateway
$gwpip2 = New-AzPublicIpAddress -Name $PublicIP2 -ResourceGroupName $ResourceGroup -Location $Location -AllocationMethod Static -Sku Standard -Tier Regional -Zone 1,2,3
# Retrieve the VNet and GatewaySubnet for the gateway IP configurations
$vnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $ResourceGroup
$gatewaySubnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig1 = New-AzVirtualNetworkGatewayIpConfig -Name $GatewayIPConfig1 -SubnetId $gatewaySubnet.Id -PublicIpAddressId $gwpip1.Id
$gwipconfig2 = New-AzVirtualNetworkGatewayIpConfig -Name $GatewayIPConfig2 -SubnetId $gatewaySubnet.Id -PublicIpAddressId $gwpip2.Id
# Create the VPN Gateway with VpnGw2AZ SKU in active-active mode
New-AzVirtualNetworkGateway -Name $GatewayName -ResourceGroupName $ResourceGroup `
-Location $Location -IpConfigurations $gwipconfig1, $gwipconfig2 `
-GatewayType $GatewayType `
-VpnType $VPNType -GatewaySku VpnGw2AZ -EnableActiveActiveFeature
查看 VPN 网关
使用 Get-AzVirtualNetworkGateway cmdlet 查看 VPN 网关。
Get-AzVirtualNetworkGateway -Name $GatewayName -ResourceGroupName $ResourceGroup
创建本地网络网关
局域网网关(LNG)代表你的本地位置。 它与虚拟网络网关不同。 VPN 网关支持通过 BGP 进行静态路由和动态路由。 在本文中,你将配置IPsec隧道中的静态路由。 你给网站一个Azure用来指代它的名称,然后指定你创建连接的本地VPN设备的IP地址。 你还指定了通过VPN网关到VPN设备的IP地址前缀。 指定的地址前缀是位于本地网络的前缀。 如果本地网络发生更改,可以轻松更新前缀。
使用以下值:
- public-IP1-onpremises-device是你本地VPN设备的第一个公共IP地址,而不是你的Azure VPN网关。
- public-IP2-onpremises-device是你本地VPN设备的第二个公共IP地址,而不是你的Azure VPN网关。
# Collect the first public IP assigned to the on-premises VPN device
# Replace public-IP1-onpremises-device with the first IP address of your on-premises device
$OnpremIpAddress1 = 'public-IP1-onpremises-device'
# Collect the second public IP assigned to the on-premises VPN device
# Replace public-IP2-onpremises-device with the second IP address of your on-premises device
$OnpremIpAddress2 = 'public-IP2-onpremises-device'
# Define the local network gateway name for the first IPsec tunnel
$LocalNetworkGatewayName1 = 'lngSite11'
# Define the local network gateway name for the second IPsec tunnel
$LocalNetworkGatewayName2 = 'lngSite12'
# Specify the list of IPv4 and IPv6 on-premises networks
$LocalAddressPrefixes = @("10.0.0.0/16", "fd:0:2::/48", "fd:0:3::/48")
New-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 `
-ResourceGroupName $ResourceGroup `
-Location $Location `
-GatewayIpAddress $OnpremIpAddress1 `
-AddressPrefix $LocalAddressPrefixes
New-AzLocalNetworkGateway -Name $LocalNetworkGatewayName2 `
-ResourceGroupName $ResourceGroup `
-Location $Location `
-GatewayIpAddress $OnpremIpAddress2 `
-AddressPrefix $LocalAddressPrefixes
配置 VPN 设备
要实现站点到站点连接到本地网络,需要使用 VPN 设备。 有关帮助配置设备的信息,请参阅 “配置 VPN 设备”。 在配置VPN设备时,你需要以下条件。
共享密钥:此共享密钥与创建站点到站点 VPN 连接时指定的密钥相同。 在示例中,使用了一个简单的共享密钥。 生成一个更复杂的密钥供你使用。
虚拟网络网关实例的公共 IP 地址:获取每个 VM 实例的 IP 地址。 如果你的网关处于主动-主动模式,你为每个网关虚拟机实例都有一个IP地址。 请务必为您的设备配置这两个 IP 地址,每个活动网关 VM 都要有一个单独的 IP 地址。
确保你配置VPN设备连接到主动模式VPN网关的两个网关IP地址。 如果你的 VPN 设备不支持双活模式,你仍然可以连接到两个网关 IP 地址,但一次只能有一个连接处于活动状态。 有关详细信息,请参阅为跨场所连接和 VNet 到 VNet 连接设计高可用连接和关于主动-主动模式的 VPN 网关。
创建 VPN 连接
在虚拟网络网关和本地 VPN 设备之间创建站点到站点 VPN 连接。 你使用的是主动-主动模式网关,因此每个网关 VM 实例都有一个单独的 IP 地址。 要正确配置高可用性连接,必须在每个 VM 实例和 VPN 设备之间建立隧道。 这两条隧道均采用主动-主动配置。 如果本地网络网关和虚拟网络网关驻留在不同的订阅和不同的租户中,请参阅 “具有不同租户和不同订阅的连接 ”部分。
共享密钥必须与用于 VPN 设备配置的值匹配。 请注意,用于站点到站点的是 -ConnectionTypeIPsec。
设置变量。
$ConnectionName1 = 'conn11' $ConnectionName2 = 'conn12' $LocalNetworkGatewayName1 = 'lngSite11' $LocalNetworkGatewayName2 = 'lngSite12' $SharedKey = 'abc123' # Collect the VPN Gateway and store the object in the variable $gateway $gateway = Get-AzVirtualNetworkGateway -Name $GatewayName -ResourceGroupName $ResourceGroup # Collect the local network gateway for the first S2S tunnel $localNetw1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 -ResourceGroupName $ResourceGroup # Collect the local network gateway for the second S2S tunnel $localNetw2 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName2 -ResourceGroupName $ResourceGroup创建连接。
# Create the VPN connection for the first S2S tunnel New-AzVirtualNetworkGatewayConnection -Name $ConnectionName1 ` -ResourceGroupName $ResourceGroup ` -Location $Location ` -VirtualNetworkGateway1 $gateway ` -LocalNetworkGateway2 $localNetw1 ` -ConnectionType IPsec -SharedKey $SharedKey # Create the VPN connection for the second S2S tunnel New-AzVirtualNetworkGatewayConnection -Name $ConnectionName2 ` -ResourceGroupName $ResourceGroup ` -Location $Location ` -VirtualNetworkGateway1 $gateway ` -LocalNetworkGateway2 $localNetw2 ` -ConnectionType IPsec -SharedKey $SharedKey
验证 VPN 连接
使用 Get-AzVirtualNetworkGatewayConnection cmdlet(无论是否使用 -Debug),以验证连接是否已成功建立。
使用以下 cmdlet 示例,配置符合自己需要的值。 如果有提示,选择 A 来运行 全部。 在此示例中,
-Name是指要测试的连接的名称。Get-AzVirtualNetworkGatewayConnection -Name $ConnectionName1 -ResourceGroupName $ResourceGroupcmdlet 运行完毕后,查看值。 在以下示例中,连接状态显示为 “已连接” ,可以看到入口和出口字节。
"connectionStatus": "Connected", "ingressBytesTransferred": 33509044, "egressBytesTransferred": 4142431
修改本地网络网关的 IP 地址前缀
如果要路由到本地部署位置的 IP 地址前缀发生更改,可以修改本地网络网关。 使用这些例子时,调整数值以匹配你的环境。
添加更多地址前缀
为本地网络网关设置变量。
$local1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 -ResourceGroupName $ResourceGroup
修改前缀。 指定的值将覆盖以前的值。
Set-AzLocalNetworkGateway -LocalNetworkGateway $local1 `
-AddressPrefix @('10.0.0.0/16','10.5.0.0/16', 'fd:0:2::/48', 'fd:0:3::/48','fd:0:5::/48')
删除地址前缀
省略不再需要的前缀。 在这个例子中,你不再需要前一个例子中的前缀 fd:0:5::/48 ,所以你更新本地网络网关并排除那个前缀。
为本地网络网关设置变量。
$local1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 `
-ResourceGroupName $ResourceGroup
使用更新后的前缀设置网关。
Set-AzLocalNetworkGateway -LocalNetworkGateway $local1 `
-AddressPrefix @("10.0.0.0/16", "fd:0:2::/48")
修改本地网络网关的 IP 地址
如果更改 VPN 设备的公共 IP 地址,则需要使用更新的 IP 地址修改本地网络网关。 修改此值时,还可同时修改地址前缀。 修改时,请务必使用本地网络网关的现有名称。
# Retrieve the local network gateway
$local1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 `
-ResourceGroupName $ResourceGroup
# Assign the new value to the public IP of the local network gateway
$local1.GatewayIpAddress = "5.4.3.2"
# Commit the change
Set-AzLocalNetworkGateway -LocalNetworkGateway $local1
删除网关连接
如果你不知道连接的名字,可以用 Get-AzVirtualNetworkGatewayConnection 命令包去查找它。
Remove-AzVirtualNetworkGatewayConnection -Name $ConnectionName1 `
-ResourceGroupName $ResourceGroup
Azure CLI
本文使用 Azure CLI 命令。 若要运行命令,请使用计算机上本地安装的Azure CLI。 命令的语法在 Bash shell 里,但你可以转换成 PowerShell。
分配配置中使用的变量。
ResourceGroup="resource-group-name"
Location="name-of-the-azure-region"
vnetName="VNet1"
VNetAddressPrefixIPv4="10.1.0.0/16"
VNetAddressPrefixIPv6="fd:0:1::/48"
GatewaySubnetPrefix1="10.1.0.0/24"
GatewaySubnetPrefix2="fd:0:1:e::/64"
GatewayName="VNet1GW"
# Name of the first and second public IP address of the gateway
PublicIP1="${GatewayName}-pip1"
PublicIP2="${GatewayName}-pip2"
# VPN type Route based
VPNType="RouteBased"
GatewayType="Vpn"
创建 Azure 虚拟网络
# Create a resource group
az group create --name "$ResourceGroup" --location "$Location"
# Create an Azure VNet
az network vnet create \
--name "$vnetName" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--address-prefixes "$VNetAddressPrefixIPv4" "$VNetAddressPrefixIPv6"
# Create the GatewaySubnet
az network vnet subnet create \
--name "GatewaySubnet" \
--vnet-name "$vnetName" \
--resource-group "$ResourceGroup" \
--address-prefixes "$GatewaySubnetPrefix1" "$GatewaySubnetPrefix2"
创建主动-主动双栈 VPN 网关
在 GatewaySubnet 部署带有区域 SKU 的 Azure VPN 网关。 IPv6 支持适用于 VPN 隧道内的流量,并且需要 IKEv2。 外部VPN隧道不支持IPv6端点。 在主动-主动模式下,网关需要两个采用标准 SKU 的公共 IP 地址。 本示例使用支持的 VpnGw2AZ SKU。 先创建公网IP地址,然后创建VPN网关。
# Create the first public IP of the VPN Gateway
az network public-ip create \
--name "$PublicIP1" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--allocation-method Static \
--sku Standard \
--tier Regional \
--zone 1 2 3
# Create the second public IP of the VPN Gateway
az network public-ip create \
--name "$PublicIP2" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--allocation-method Static \
--sku Standard \
--tier Regional \
--zone 1 2 3
# Create the VPN Gateway with VpnGw2AZ SKU in active-active mode
az network vnet-gateway create \
--name "$GatewayName" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--vnet "$vnetName" \
--gateway-type "$GatewayType" \
--vpn-type "$VPNType" \
--sku VpnGw2AZ \
--public-ip-addresses "$PublicIP1" "$PublicIP2"
查看 VPN 网关
使用 az network vnet-gateway show 命令查看VPN网关。
az network vnet-gateway show \
--name "$GatewayName" \
--resource-group "$ResourceGroup"
创建本地网络网关
局域网网关(LNG)代表你的本地位置。 它与虚拟网络网关不同。 VPN 网关支持通过 BGP 进行静态路由和动态路由。 在本文中,你将配置IPsec隧道中的静态路由。 你给网站一个Azure用来指代它的名称,然后指定你创建连接的本地VPN设备的IP地址。 你还指定了通过VPN网关到VPN设备的IP地址前缀。 指定的地址前缀是位于本地网络的前缀。 如果本地网络发生更改,可以轻松更新前缀。
使用以下值:
- OnpremDevPubIPv4Address1是你本地VPN设备的第一个公共IPv4地址,而不是你的Azure VPN网关。
- OnpremDevPubIPv4Address2 是你本地 VPN 设备的第二个公共 IPv4 地址,而不是你的 Azure VPN 网关。
# Collect the first public IP assigned to the on-premises VPN device
# Replace public-IPv4Address1-onpremises-device with the first IPv4 address of your on-premises device
OnpremDevPubIPv4Address1="public-IPv4Address1-onpremises-device"
# Collect the second public IP assigned to the on-premises VPN device
# Replace public-IPv4Address2-onpremises-device with the second IPv4 address of your on-premises device
OnpremDevPubIPv4Address2="public-IPv4Address2-onpremises-device"
# Local network gateway to use for the first IPsec tunnel
LocalNetworkGatewayName1="lngSite11"
# Local network gateway to use for the second IPsec tunnel
LocalNetworkGatewayName2="lngSite12"
# Specify the list of IPv4 and IPv6 on-premises networks
OnpremIPv4AddressPrefix1="10.0.0.0/16"
OnpremIPv6AddressPrefix1="fd:0:2::/48"
OnpremIPv6AddressPrefix2="fd:0:3::/48"
# Create the local network gateway for the first tunnel
az network local-gateway create \
--name "$LocalNetworkGatewayName1" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--gateway-ip-address "$OnpremDevPubIPv4Address1" \
--local-address-prefixes "$OnpremIPv4AddressPrefix1" "$OnpremIPv6AddressPrefix1" "$OnpremIPv6AddressPrefix2"
# Create the local network gateway for the second tunnel
az network local-gateway create \
--name "$LocalNetworkGatewayName2" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--gateway-ip-address "$OnpremDevPubIPv4Address2" \
--local-address-prefixes "$OnpremIPv4AddressPrefix1" "$OnpremIPv6AddressPrefix1" "$OnpremIPv6AddressPrefix2"
配置 VPN 设备
要实现站点到站点连接到本地网络,需要使用 VPN 设备。 有关帮助配置设备的信息,请参阅 “配置 VPN 设备”。 在配置VPN设备时,你需要以下条件。
共享密钥:此共享密钥与创建站点到站点 VPN 连接时指定的密钥相同。 在示例中,使用了一个简单的共享密钥。 生成一个更复杂的密钥供你使用。
虚拟网络网关实例的公共 IP 地址:获取每个 VM 实例的 IP 地址。 如果你的网关处于主动-主动模式,你为每个网关虚拟机实例都有一个IP地址。 请务必为您的设备配置这两个 IP 地址,每个活动网关 VM 都要有一个单独的 IP 地址。
确保你配置VPN设备连接到主动模式VPN网关的两个网关IP地址。 如果你的 VPN 设备不支持双活模式,你仍然可以连接到两个网关 IP 地址,但一次只能有一个连接处于活动状态。 有关详细信息,请参阅为跨场所连接和 VNet 到 VNet 连接设计高可用连接和关于主动-主动模式的 VPN 网关。
创建 VPN 连接
在虚拟网络网关和本地 VPN 设备之间创建站点到站点 VPN 连接。 使用主动-主动模式网关时,每个网关 VM 实例都有单独的 IP 地址。 要正确配置高可用性连接,必须在每个 VM 实例和 VPN 设备之间建立隧道。 如果本地网络网关和虚拟网络网关驻留在不同的订阅和不同的租户中,请参阅 “具有不同租户和不同订阅的连接 ”部分。
共享密钥必须与用于 VPN 设备配置的值匹配。
设置变量。
LocalNetworkGatewayName1="lngSite11"
LocalNetworkGatewayName2="lngSite12"
GatewayName="VNet1GW"
ConnectionName1="conn11"
ConnectionName2="conn12"
sharedKey='abc123'
创建连接。
# Create the VPN connection for the first S2S tunnel
az network vpn-connection create \
--name "$ConnectionName1" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--vnet-gateway1 "$GatewayName" \
--local-gateway2 "$LocalNetworkGatewayName1" \
--shared-key "$sharedKey"
# Create the VPN connection for the second S2S tunnel
az network vpn-connection create \
--name "$ConnectionName2" \
--resource-group "$ResourceGroup" \
--location "$Location" \
--vnet-gateway1 "$GatewayName" \
--local-gateway2 "$LocalNetworkGatewayName2" \
--shared-key "$sharedKey"
验证 VPN 连接
要获取资源组中的VPN连接列表:
az network vpn-connection list \
--resource-group "$ResourceGroup" \
--output table
可使用 az network vpn-connection show 命令来验证连接是否成功。
az network vpn-connection show \
--name "$ConnectionName1" \
--resource-group "$ResourceGroup"
过滤命令输出,只提取 ConnectionStatus 和 ProvisioningState 两个值:
az network vpn-connection show \
--name "$ConnectionName1" \
--resource-group "$ResourceGroup" \
--query "{ProvisioningState:provisioningState, ConnectionStatus:connectionStatus}"
成功部署返回以下值:
{
"ConnectionStatus": "Connected",
"ProvisioningState": "Succeeded"
}
修改本地网络网关的 IP 地址前缀
如果要路由到本地部署位置的 IP 地址前缀发生更改,可以修改本地网络网关。 使用这些例子时,调整数值以匹配你的环境。
添加更多地址前缀
该 --local-address-prefixes 参数将所有现有前缀替换为新值。 包含你想保留的所有前缀。 在这个例子中,你添加了两个新的前缀:
az network local-gateway update \
--name "$LocalNetworkGatewayName1" \
--resource-group "$ResourceGroup" \
--local-address-prefixes "10.0.0.0/16" "10.5.0.0/16" "fd:0:2::/48" "fd:0:3::/48" "fd:0:5::/48"
删除地址前缀
省略不再需要的前缀。 在这个示例中,你不再需要上一个示例中的前缀 10.5.0.0/16 和 fd:0:5::/48,因此你需要更新本地网络网关并排除这些前缀。
检查局域网网关中指定的网络前缀。
# View current prefixes
az network local-gateway show \
--name "$LocalNetworkGatewayName1" \
--resource-group "$ResourceGroup" \
--query "localNetworkAddressSpace.addressPrefixes"
使用修改的列表进行更新。
# Update with the modified list
az network local-gateway update \
--name "$LocalNetworkGatewayName1" \
--resource-group "$ResourceGroup" \
--local-address-prefixes "10.0.0.0/16" "fd:0:2::/48" "fd:0:3::/48"
修改本地网络网关的 IP 地址
如果更改 VPN 设备的公共 IP 地址,则需要使用更新的 IP 地址修改本地网络网关。 修改时,请务必使用本地网络网关的现有名称。
# Get the public IP of the local network gateway
az network local-gateway show \
--name "$LocalNetworkGatewayName1" \
--resource-group "$ResourceGroup" \
--query "gatewayIpAddress" -o tsv
# Change the gateway IP address of the local network gateway
az network local-gateway update \
--name "$LocalNetworkGatewayName1" \
--resource-group "$ResourceGroup" \
--gateway-ip-address "198.51.100.1"
删除网关连接
如果你不知道连接名称,可以用 az network vpn-connection list 命令查找它。
# Delete connection 1
az network vpn-connection delete \
--name "$ConnectionName1" \
--resource-group "$ResourceGroup"