使用默认站点为站点到站点连接配置强制隧道

本文中的步骤可帮助指定默认站点以为站点到站点 (S2S) IPsec 连接配置强制隧道。 有关强制隧道的配置方法(包括通过 BGP 配置强制隧道)的信息,请参阅关于 VPN 网关的强制隧道

默认情况下,来自虚拟机的 Internet 绑定流量会直接进入 Internet。 如果要强制所有 Internet 绑定流量通过 VPN 网关流向本地站点进行检查和审核,可配置强制隧道来实现这一点。 配置强制隧道后,如果需要,可使用自定义用户定义的路由 (UDR) 将指定子网的 Internet 绑定流量直接路由到 Internet。

Diagram shows split tunneling.

以下步骤可帮助指定默认站点以配置强制隧道方案。 (可选)使用自定义 UDR,可通过指定来自前端子网的 Internet 绑定流量直接流向 Internet 而不是本地站点,来路由流量。

  • 所创建的 VNet 有 3 个子网(前端、中间层和后端),具有 4 个跨界连接(DefaultSiteHQ 和 3 个分支)。
  • 使用 PowerShell 为 VPN 网关指定默认站点,这会强制所有 Internet 流量返回到本地位置。 无法使用 Azure 门户配置默认站点。
  • 为前端子网分配了一个 UDR,用于绕过 VPN 网关将 Internet 流量直接发送到 Internet。 其他流量正常路由。
  • 由于指定了默认站点,中间层子网和后端子网继续通过 VPN 网关使用强制隧道将 Internet 流量返回到本地站点。

创建 VNet 和子网

首先,创建测试环境。 可以在本地运行 PowerShell。 有关详细信息,请参阅如何安装和配置 Azure PowerShell

注意

可能会看到警告“将在未来发布中修改此 cmdlet 的输出对象类型”。 这是预期行为,可以放心地忽略这些警告。

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

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

    $vnet = New-AzVirtualNetwork `
    -ResourceGroupName "TestRG1" `
    -Location "ChinaEast2" `
    -Name "VNet1" `
    -AddressPrefix 10.1.0.0/16
    
  3. 使用 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
    
  4. 使用 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 地址。

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

    $gwpip = New-AzPublicIpAddress -Name "GatewayIP" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -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
    
  3. 使用 New-AzVirtualNetworkGateway 创建网关类型为“Vpn”的虚拟网络网关。 创建网关至少需要 45 分钟,具体取决于所选的网关 SKU。

    在此示例中,我们使用 VpnGw2 第 2 代 SKU。 如果看到与 GatewaySKU 值相关的 ValidateSet 问题,请验证是否已安装最新版本的 PowerShell cmdlet。 最新版本包含最新网关 SKU 的新验证值。

    New-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -IpConfigurations $gwipconfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku VpnGw2 -VpnGatewayGeneration "Generation2"
    

配置强制隧道 - 默认站点

将默认站点分配到虚拟网络网关以配置强制隧道。 如果未指定默认站点,Internet 流量不会强制通过 VPN 网关,而是会直接遍历出所有子网的 Internet(默认情况下)。

要为网关分配默认站点,请使用-GatewayDefaultSite参数。 请确保正确分配此值。

  1. 首先,声明指定默认站点的虚拟网络网关信息和本地网络网关的变量,在本例中为 DefaultSiteHQ。

    $LocalGateway = Get-AzLocalNetworkGateway -Name "DefaultSiteHQ" -ResourceGroupName "TestRG1"
    $VirtualGateway = Get-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    
  2. 接下来,使用Set-AzVirtualNetworkGatewayDefaultSite设置虚拟网络网关默认站点。

    Set-AzVirtualNetworkGatewayDefaultSite -GatewayDefaultSite $LocalGateway -VirtualNetworkGateway $VirtualGateway
    

此时,所有 Internet 绑定流量都配置为通过强制隧道流向 DefaultSiteHQ。 必须使用 0.0.0.0/0 作为流量选择器配置本地 VPN 设备。

  • 如果只想配置强制隧道,而不想将指定子网的 Internet 流量直接路由到 Internet,可跳到本文的建立连接部分来创建连接。
  • 如果希望特定子网将 Internet 绑定流量直接发送到 Internet,请继续下面的部分来配置自定义 UDR 并分配路由。

路由特定子网的 Internet 绑定流量

作为选项,如果希望将 Internet 绑定流量直接发送到特定子网的 Internet(而不是发送到本地网络),请使用以下步骤。 这些步骤适用于已通过指定默认站点或通过 BGP 配置的强制隧道。

创建路由表和路由

若要指定 Internet 绑定流量应直接流向 Internet,请创建必要的路由表和路由。 稍后会将路由表分配给前端子网。

  1. 使用 New-AzRouteTable 创建路由表。

    $routeTable1 = New-AzRouteTable `
    -Name 'RouteTable1' `
    -ResourceGroupName "TestRG1" `
    -location "ChinaEast2"
    
  2. 使用以下 cmdlet 创建路由:GetAzRouteTableAdd-AzRouteConfigSet-AzRouteConfig。 在 RouteTable1 中为下一个跃点“Internet”创建路由。 此路由稍后将分配给前端子网。

    Get-AzRouteTable `
       -ResourceGroupName "TestRG1" `
       -Name "RouteTable1" `
       | Add-AzRouteConfig `
       -Name "ToInternet" `
       -AddressPrefix 0.0.0.0/0 `
       -NextHopType "Internet" `
       | Set-AzRouteTable
    

分配路由

在此部分中,使用以下 PowerShell 命令将路由表和路由分配到前端子网:GetAzRouteTableSet-AzRouteConfigSet-AzVirtualNetwork

  1. 使用路由“ToInternet”将前端子网分配到 RouteTable1,指定 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 连接。

  1. 声明变量。

    $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"
    
  2. 创建连接。

    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"
    
  3. 请通过以下示例查看连接。 修改任何必要的值来指定要查看的连接。

    Get-AzVirtualNetworkGatewayConnection -Name "Connection1" -ResourceGroupName "TestRG1"
    

后续步骤

有关 VPN 网关的详细信息,请参阅 VPN 网关常见问题解答