本文中的步骤通过指定默认站点来帮助为站点到站点 (S2S) IPsec 连接配置强制隧道。 有关强制隧道配置方法的信息(包括通过 BGP 配置强制隧道),请参阅 VPN 网关的强制隧道。
默认情况下,来自 VM 的 Internet 绑定流量将直接发送到 Internet。 如果要将所有发往 Internet 的流量都通过 VPN 网关强制转发到本地部署站点进行检查和审计,可以通过配置 强制隧道 来实现。 配置强制隧道后,如果需要,可以使用自定义用户定义路由(UDR),将指定子网中发往 Internet 的流量直接路由到 Internet。
以下步骤将帮助你通过指定默认站点来配置强制隧道场景。 或者,使用自定义 UDR,您可以通过指定将来自前端子网、发往 Internet 的流量直接路由到 Internet,而不是路由到本地站点。
- 创建的 VNet 有三个子网:前端、中间层和后端,具有四个跨界连接:DefaultSiteHQ 和三个分支。
- 使用 PowerShell 为 VPN 网关指定默认站点,这会强制所有 Internet 流量返回到本地位置。 无法使用 Azure 门户配置默认站点。
- 为前端子网分配了一个 UDR,用于将 Internet 流量直接发送到 Internet,从而绕过 VPN 网关。 其他流量则按常规方式路由。
- 中间层和后端子网的互联网流量继续通过 VPN 网关被强制隧道传回本地部署站点,因为指定了“默认站点”。
创建 VNet 和子网
首先,创建测试环境。 可以在本地运行 PowerShell。 有关详细信息,请参阅如何安装和配置 Azure PowerShell。
注释
你可能会看到警告,指出“此 cmdlet 的输出对象类型将在将来的版本中修改”。 这是预期行为,可以放心地忽略这些警告。
使用 New-AzResourceGroup 创建资源组。
New-AzResourceGroup -Name "TestRG1" -Location "ChinaEast2"使用 New-AzVirtualNetwork 创建虚拟网络。
$vnet = New-AzVirtualNetwork ` -ResourceGroupName "TestRG1" ` -Location "ChinaEast2" ` -Name "VNet1" ` -AddressPrefix 10.1.0.0/16使用 New-AzVirtualNetworkSubnetConfig 创建子网。 创建前端、中间层和后端子网以及网关子网(必须命名为 GatewaySubnet)。
$subnetConfigFrontend = Add-AzVirtualNetworkSubnetConfig ` -Name Frontend ` -AddressPrefix 10.1.0.0/24 ` -VirtualNetwork $vnet $subnetConfigMid-tier = Add-AzVirtualNetworkSubnetConfig ` -Name Mid-tier ` -AddressPrefix 10.1.1.0/24 ` -VirtualNetwork $vnet $subnetConfigBackend = Add-AzVirtualNetworkSubnetConfig ` -Name Backend ` -AddressPrefix 10.1.2.0/24 ` -VirtualNetwork $vnet $subnetConfigGW = Add-AzVirtualNetworkSubnetConfig ` -Name GatewaySubnet ` -AddressPrefix 10.1.200.0/27 ` -VirtualNetwork $vnet使用 Set-AzVirtualNetwork 将子网配置写入虚拟网络,以便在虚拟网络中创建子网:
$vnet | Set-AzVirtualNetwork
创建本地网络网关
在本部分中,使用 New-AzLocalNetworkGateway 为站点创建本地网络网关。 由于要创建每个本地网络网关,因此每条命令之间都会稍作停顿。 在此示例中,值 -GatewayIpAddress 是占位符。 若要建立连接,稍后需要将这些值替换为相应本地 VPN 设备的公共 IP 地址。
$lng1 = New-AzLocalNetworkGateway -Name "DefaultSiteHQ" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -GatewayIpAddress "111.111.111.111" -AddressPrefix "192.168.1.0/24"
$lng2 = New-AzLocalNetworkGateway -Name "Branch1" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -GatewayIpAddress "111.111.111.112" -AddressPrefix "192.168.2.0/24"
$lng3 = New-AzLocalNetworkGateway -Name "Branch2" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -GatewayIpAddress "111.111.111.113" -AddressPrefix "192.168.3.0/24"
$lng4 = New-AzLocalNetworkGateway -Name "Branch3" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -GatewayIpAddress "111.111.111.114" -AddressPrefix "192.168.4.0/24"
创建 VPN 网关
在本部分中,将请求公共 IP 地址,并创建与公共 IP 地址对象关联的 VPN 网关。 将本地或外部 VPN 设备连接到用于跨界连接的 VPN 网关时,将使用公共 IP 地址。
使用 New-AzPublicIpAddress 请求 VPN 网关的公共 IP 地址。
$gwpip = New-AzPublicIpAddress -Name "GatewayIP" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -AllocationMethod Static -Sku Standard使用 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使用 New-AzVirtualNetworkGateway 创建网关类型为“Vpn”的虚拟网络网关。 创建网关可能需要 45 分钟或更多时间,具体取决于所选网关 SKU。
在此示例中,我们使用 VpnGw1AZ 第 2 代 SKU。 如果看到有关 GatewaySKU 值的 ValidateSet 错误,请验证是否已安装 最新版本的 PowerShell cmdlet。 最新版本包含最新网关 SKU 的新验证值。
New-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -IpConfigurations $gwipconfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku VpnGw1AZ -VpnGatewayGeneration "Generation2"
配置强制隧道 - 默认站点
通过将默认站点分配给虚拟网络网关来配置强制隧道。 如果未指定默认站点,互联网流量将不会被强制通过 VPN 网关,而是默认由所有子网直接访问互联网。
若要为网关分配默认站点,请使用 -GatewayDefaultSite 参数。 请务必正确分配此值。
首先,声明指定默认站点的虚拟网络网关信息和本地网络网关的变量,在本例中为 DefaultSiteHQ。
$LocalGateway = Get-AzLocalNetworkGateway -Name "DefaultSiteHQ" -ResourceGroupName "TestRG1" $VirtualGateway = Get-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"接下来,使用 Set-AzVirtualNetworkGatewayDefaultSite 设置虚拟网络网关默认站点。
Set-AzVirtualNetworkGatewayDefaultSite -GatewayDefaultSite $LocalGateway -VirtualNetworkGateway $VirtualGateway
此时,所有发往 Internet 的流量都已配置为通过强制隧道传送到 DefaultSiteHQ。 必须使用 0.0.0.0/0 作为流量选择器配置本地 VPN 设备。
- 如果只想配置强制隧道,而不是将 Internet 流量直接路由到 Internet 的特定子网,可以跳到本文的 “建立连接 ”部分来创建连接。
- 如果希望特定子网将发往 Internet 的流量直接路由到 Internet,请继续阅读以下章节,以配置自定义 UDR 并分配路由规则。
为特定子网路由发往互联网的流量
或者,如果您希望特定子网中发往 Internet 的流量直接发送到 Internet(而不是发送到本地部署网络),请按照以下步骤操作。 这些步骤适用于通过指定默认站点或通过 BGP 配置的强制隧道。
创建路由表和路由
若要指定发往 Internet 的流量应直接发往 Internet,请创建必要的路由表和路由。 你稍后将把路由表分配给前端子网。
使用 New-AzRouteTable 创建路由表。
$routeTable1 = New-AzRouteTable ` -Name 'RouteTable1' ` -ResourceGroupName "TestRG1" ` -location "ChinaEast2"使用以下 cmdlet 创建路由: GetAzRouteTable、 Add-AzRouteConfig 和 Set-AzRouteConfig。 在 RouteTable1 中为下一跃点类型“Internet”创建路由。 此路由稍后会分配给前端子网。
Get-AzRouteTable ` -ResourceGroupName "TestRG1" ` -Name "RouteTable1" ` | Add-AzRouteConfig ` -Name "ToInternet" ` -AddressPrefix 0.0.0.0/0 ` -NextHopType "Internet" ` | Set-AzRouteTable
指定路由
在本部分中,使用以下 PowerShell 命令将路由表和路由分配到前端子网: GetAzRouteTable、 Set-AzRouteConfig 和 Set-AzVirtualNetwork。
将 Frontend 子网关联到 RouteTable1,其中名为“ToInternet”的路由将 0.0.0.0/0 指定为地址前缀,并将下一跳指定为 Internet。
$vnet = Get-AzVirtualNetwork -Name "VNet1" -ResourceGroupName "TestRG1" $routeTable1 = Get-AzRouteTable ` -ResourceGroupName "TestRG1" ` -Name "RouteTable1" Set-AzVirtualNetworkSubnetConfig ` -VirtualNetwork $vnet ` -Name 'Frontend' ` -AddressPrefix 10.1.0.0/24 ` -RouteTable $routeTable1 | ` Set-AzVirtualNetwork
建立 S2S VPN 连接
使用 New-AzVirtualNetworkGatewayConnection 建立 S2S 连接。
声明变量。
$gateway = Get-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1" $lng1 = Get-AzLocalNetworkGateway -Name "DefaultSiteHQ" -ResourceGroupName "TestRG1" $lng2 = Get-AzLocalNetworkGateway -Name "Branch1" -ResourceGroupName "TestRG1" $lng3 = Get-AzLocalNetworkGateway -Name "Branch2" -ResourceGroupName "TestRG1" $lng4 = Get-AzLocalNetworkGateway -Name "Branch3" -ResourceGroupName "TestRG1"创建连接。
New-AzVirtualNetworkGatewayConnection -Name "Connection1" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -VirtualNetworkGateway1 $gateway -LocalNetworkGateway2 $lng1 -ConnectionType IPsec -SharedKey "preSharedKey" New-AzVirtualNetworkGatewayConnection -Name "Connection2" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -VirtualNetworkGateway1 $gateway -LocalNetworkGateway2 $lng2 -ConnectionType IPsec -SharedKey "preSharedKey" New-AzVirtualNetworkGatewayConnection -Name "Connection3" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -VirtualNetworkGateway1 $gateway -LocalNetworkGateway2 $lng3 -ConnectionType IPsec -SharedKey "preSharedKey" New-AzVirtualNetworkGatewayConnection -Name "Connection4" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -VirtualNetworkGateway1 $gateway -LocalNetworkGateway2 $lng4 -ConnectionType IPsec -SharedKey "preSharedKey"若要查看连接,请使用以下示例。 修改任何必要的值以指定要查看的连接。
Get-AzVirtualNetworkGatewayConnection -Name "Connection1" -ResourceGroupName "TestRG1"
后续步骤
有关 VPN 网关的详细信息,请参阅 VPN 网关常见问题解答。