配置站点到站点 VPN 和 ExpressRoute 共存连接具有多项优势。 可以将站点到站点 VPN 配置为 ExressRoute 的安全故障转移路径,或者使用站点到站点 VPN 连接到不是通过 ExpressRoute 进行连接的站点。 我们在本文中介绍这两种方案的配置步骤。 本文适用于 Resource Manager 部署模型并使用 PowerShell。 此配置在 Azure 门户中不可用。

Important

按以下说明进行操作之前,必须预先配置ExpressRoute 线路。 在继续操作之前,请务必遵循相关指南来创建 ExpressRoute 线路配置路由

限制和局限性

  • 不支持传输路由。 无法在通过站点到站点 VPN 连接的本地网络与通过 ExpressRoute 连接的本地网络之间进行路由(通过 Azure)。
  • 不支持基本 SKU 网关。 必须为 ExpressRoute 网关和 VPN 网关使用非基本 SKU 网关。
  • 仅支持基于路由的 VPN 网关。 必须使用基于路由的 VPN Gateway使用非基本 SKU 网关。
  • 应该为 VPN 网关配置静态路由。 如果本地网络同时连接到 ExpressRoute 和站点到站点 VPN,则必须在本地网络中配置静态路由,以便将站点到站点 VPN 连接路由到公共 Internet。
  • 必须先配置 ExpressRoute 网关,然后再链接到线路。 添加站点到站点 VPN 网关前,必须先创建 ExpressRoute 网关,然后再将其链接到线路。

配置设计

将站点到站点 VPN 配置为 ExpressRoute 的故障转移路径

你可以将站点到站点 VPN 连接配置为 ExpressRoute 的备份。 这仅适用于链接到 Azure 专用对等路径的虚拟网络。 对于可通过 Azure 公共对等互连访问的服务,没有基于 VPN 的故障转移解决方案。 ExpressRoute 线路始终是主链接。 仅当 ExpressRoute 线路失败时,数据才会流经站点到站点 VPN 路径。

Note

虽然在两个路由相同的情况下 ExpressRoute 线路优先于站点到站点 VPN,Azure 仍会使用最长的前缀匹配来选择指向数据包目标的路由。

配置站点到站点 VPN,以便连接到不通过 ExpressRoute 进行连接的站点

你可以对网络进行配置,使得部分站点通过站点到站点 VPN 直接连接到 Azure,部分站点通过 ExpressRoute 进行连接。

Note

不能将虚拟网络配置为转换路由器。

选择要使用的步骤

有两组不同的过程可供选择。 选择的配置过程取决于是要连接到现有虚拟网络,还是要创建新的虚拟网络。

  • 我没有 VNet,需要创建一个。

    如果没有虚拟网络,此过程将指导你使用 Resource Manager 部署模型创建新的虚拟网络,然后创建新的 ExpressRoute 和站点到站点 VPN 连接。 若要配置虚拟网络,请遵循创建新的虚拟网络和并存连接中的步骤。

  • 我已有一个 Resource Manager 部署模型 VNet。

    你可能已在具有现有站点到站点 VPN 连接或 ExpressRoute 连接的位置拥有虚拟网络。 为现有的 VNet 配置并存连接部分将指导你删除网关,然后创建新的 ExpressRoute 连接和站点到站点 VPN 连接。 在创建新连接时,必须按照特定的顺序完成步骤。 不要按照其他文章中的说明来创建网关和连接。

    在此过程中,创建可以共存的连接需要你删除网关,然后配置新网关。 在删除并重新创建网关和连接时,跨界连接将会停止工作,但你无需将任何 VM 或服务迁移到新的虚拟网络。 在你配置网关时,如果进行了相应配置,你的 VM 和服务仍可以通过负载均衡器与外界通信。

创建新的虚拟网络和并存连接

本过程将指导你创建 VNet 以及将共存的站点到站点连接和 ExpressRoute 连接。

  1. 安装最新版本的 Azure PowerShell cmdlet。 有关安装 cmdlet 的信息,请参阅如何安装和配置 Azure PowerShell。针对此配置使用的 cmdlet 可能与你熟悉的 cmdlet 稍有不同。 请务必使用说明内容中指定的 cmdlet。

  2. 登录帐户并设置环境。

    PowerShell复制
    login-AzureRmAccount -Environment $(Get-AzureRmEnvironment -Name AzureChinaCloud)
    Select-AzureRmSubscription -SubscriptionName 'yoursubscription'
    $location = "China North"
    $resgrp = New-AzureRmResourceGroup -Name "ErVpnCoex" -Location $location
    $VNetASN = 65010
  3. 创建包括网关子网的虚拟网络。 有关虚拟网络配置的详细信息,请参阅 Azure 虚拟网络配置

    Important

    网关子网必须是 /27 或更短的前缀(例如 /26 或 /25)。

    创建新的 VNet。

    PowerShell复制
    $vnet = New-AzureRmVirtualNetwork -Name "CoexVnet" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AddressPrefix "10.200.0.0/16"

    添加子网。

    PowerShell复制
    Add-AzureRmVirtualNetworkSubnetConfig -Name "App" -VirtualNetwork $vnet -AddressPrefix "10.200.1.0/24"
    Add-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet -AddressPrefix "10.200.255.0/24"

    保存 VNet 配置。

    PowerShell复制
    $vnet = Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
  4. 创建 ExpressRoute 网关。 有关 ExpressRoute 网关配置的详细信息,请参阅 ExpressRoute 网关配置。 GatewaySKU 必须是 StandardHighPerformance 或 UltraPerformance

    PowerShell复制
    $gwSubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzureRmPublicIpAddress -Name "ERGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzureRmVirtualNetworkGatewayIpConfig -Name "ERGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    $gw = New-AzureRmVirtualNetworkGateway -Name "ERGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "ExpressRoute" -GatewaySku Standard
  5. 将 ExpressRoute 网关连接到 ExpressRoute 线路。 完成此步骤后,则已通过 ExpressRoute 建立本地网络与 Azure 之间的连接。 有关链接操作的详细信息,请参阅 将 VNet 链接到 ExpressRoute

    PowerShell复制
    $ckt = Get-AzureRmExpressRouteCircuit -Name "YourCircuit" -ResourceGroupName "YourCircuitResourceGroup"
    New-AzureRmVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $gw -PeerId $ckt.Id -ConnectionType ExpressRoute
  6. 接下来,创建站点到站点 VPN 网关。 有关 VPN 网关配置的详细信息,请参阅使用站点到站点连接配置 VNet。 GatewaySKU 必须是 StandardHighPerformance 或 UltraPerformance。 VpnType 必须为 RouteBased

    PowerShell复制
    $gwSubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzureRmPublicIpAddress -Name "VPNGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzureRmVirtualNetworkGatewayIpConfig -Name "VPNGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    New-AzureRmVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "Standard"

    Azure VPN 网关支持 BGP 路由协议。 通过在以下命令中添加 -Asn 开关,可为该虚拟网络指定 ASN(AS 编号)。 若未指定该参数,将默认为 AS 编号 65515。

    PowerShell复制
    $azureVpn = New-AzureRmVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "Standard" -Asn $VNetASN

    可以在 $azureVpn.BgpSettings.BgpPeeringAddress 和 $azureVpn.BgpSettings.Asn 中找到 Azure 用于 VPN 网关的 BGP 对等 IP 和 AS 编号。 有关详细信息,请参阅为 Azure VPN 网关配置 BGP

  7. 创建一个本地站点 VPN 网关实体。 此命令不会配置本地 VPN 网关, 而是允许你提供本地网关设置(如公共 IP 和本地地址空间),以便 Azure VPN 网关可以连接到它。

    如果本地 VPN 设备仅支持静态路由,可按以下方式配置静态路由:

    PowerShell复制
    $MyLocalNetworkAddress = @("10.100.0.0/16","10.101.0.0/16","10.102.0.0/16")
    $localVpn = New-AzureRmLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress *<Public IP>* -AddressPrefix $MyLocalNetworkAddress

    如果本地 VPN 设备支持 BGP,并且想要启用动态路由,那么需要知道本地 VPN 设备使用的 BGP 对等 IP 和 AS 编号。

    PowerShell复制
    $localVPNPublicIP = "<Public IP>"
    $localBGPPeeringIP = "<Private IP for the BGP session>"
    $localBGPASN = "<ASN>"
    $localAddressPrefix = $localBGPPeeringIP + "/32"
    $localVpn = New-AzureRmLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress $localVPNPublicIP -AddressPrefix $localAddressPrefix -BgpPeeringAddress $localBGPPeeringIP -Asn $localBGPASN
  8. 配置本地 VPN 设备以连接到新的 Azure VPN 网关。 有关 VPN 设备配置的详细信息,请参阅 VPN 设备配置

  9. 将 Azure 上的站点到站点 VPN 网关连接到本地网关。

    PowerShell复制
    $azureVpn = Get-AzureRmVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
    New-AzureRmVirtualNetworkGatewayConnection -Name "VPNConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $azureVpn -LocalNetworkGateway2 $localVpn -ConnectionType IPsec -SharedKey <yourkey>

为现有的 VNet 配置并存连接

如果你已经有了一个虚拟网络,请检查网关子网大小。 如果网关子网为 /28 或 /29,则必须先删除虚拟网络网关,然后增加网关子网大小。 本部分的步骤说明如何这样做。

如果网关子网为 /27 或更大,且虚拟网络是通过 ExpressRoute 连接的,则可跳过下面的步骤,转到前一部分的“步骤 6 - 创建站点到站点 VPN 网关”

Note

如果你删除的是现有网关,则当你进行此配置时,本地系统将失去与虚拟网络建立的连接。

  1. 你需要安装 Azure PowerShell cmdlet 的最新版本。 有关安装 cmdlet 的详细信息,请参阅如何安装和配置 Azure PowerShell。 针对此配置使用的 cmdlet 可能与你熟悉的 cmdlet 稍有不同。 请务必使用说明内容中指定的 cmdlet。

  2. 删除现有的 ExpressRoute 或站点到站点 VPN 网关。

    PowerShell复制
    Remove-AzureRmVirtualNetworkGateway -Name <yourgatewayname> -ResourceGroupName <yourresourcegroup>
  3. 删除网关子网。

    PowerShell复制
    $vnet = Get-AzureRmVirtualNetwork -Name <yourvnetname> -ResourceGroupName <yourresourcegroup>
    Remove-AzureRmVirtualNetworkSubnetConfig -Name GatewaySubnet -VirtualNetwork $vnet
  4. 添加为 /27 或更大的网关子网。

    Note

    如果你因为虚拟网络中没有剩余足够的 IP 地址而无法增加网关子网大小,则需增加 IP 地址空间。

    PowerShell复制
    $vnet = Get-AzureRmVirtualNetwork -Name <yourvnetname> -ResourceGroupName <yourresourcegroup>
    Add-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet -AddressPrefix "10.200.255.0/24"

    保存 VNet 配置。

    PowerShell复制
    $vnet = Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
  5. 此时,你拥有不带网关的 VNet。 若要创建新网关并完成连接,可以转到 步骤 4 - 创建 ExpressRoute 网关(可以在前一组步骤中找到)。

将点到站点配置添加到 VPN 网关

可以按照下面的步骤将点到站点配置添加到共存设置中的 VPN 网关。

  1. 添加 VPN 客户端地址池。

    PowerShell复制
    $azureVpn = Get-AzureRmVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
    Set-AzureRmVirtualNetworkGatewayVpnClientConfig -VirtualNetworkGateway $azureVpn -VpnClientAddressPool "10.251.251.0/24"
  2. 为你的 VPN 网关将 VPN 根证书上传到 Azure。 在此示例中,假定根证书存储在运行以下 PowerShell cmdlet 的本地计算机中。

    PowerShell复制
    $p2sCertFullName = "RootErVpnCoexP2S.cer"
    $p2sCertMatchName = "RootErVpnCoexP2S"
    $p2sCertToUpload=get-childitem Cert:\CurrentUser\My | Where-Object {$_.Subject -match $p2sCertMatchName}
    if ($p2sCertToUpload.count -eq 1){
    write-host "cert found"
    } else {
    write-host "cert not found"
    exit
    }
    $p2sCertData = [System.Convert]::ToBase64String($p2sCertToUpload.RawData)
    Add-AzureRmVpnClientRootCertificate -VpnClientRootCertificateName $p2sCertFullName -VirtualNetworkGatewayname $azureVpn.Name -ResourceGroupName $resgrp.ResourceGroupName -PublicCertData $p2sCertData

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

后续步骤

有关 ExpressRoute 的详细信息,请参阅 ExpressRoute 常见问题

设置 ExpressRoute 和站点到站点并存连接的更多相关文章

  1. Windows Azure 配置多个站点的虚拟网络连接

    通过上一篇"Windows Azure 虚拟网络配置(Site to Site)" 我们建立了可以进行Site to Site连接的虚拟网络,配置过后有些朋友会有疑问:如果需要连接 ...

  2. wstngfw openVpn站点到站点连接示例(SSL/TLS)

    wstngfw openVpn站点到站点连接示例(SSL/TLS) 在本例中,将假设以下设置: 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Offi ...

  3. wstngfw openVpn站点到站点连接示例(共享密钥)

    wstngfw openVpn站点到站点连接示例(共享密钥) 在本例中,将假设以下设置: 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Office( ...

  4. wstngfw IPsec 站点到站点连接示例

    wstngfw IPsec 站点到站点连接示例 在本例中,将假设以下设置: IPsec站点设置 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Offi ...

  5. Linux 如何设置只允许域名访问站点而禁止IP访问站点

    最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...

  6. Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用

    Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...

  7. SITECORE体验编辑器 - 多站点实施站点解析

    SITECORE体验编辑器 - 多站点实施站点解析   我们使用其中一个多站点实现遇到了Sitecore体验编辑器的问题.从内容编辑器中选择并尝试在体验编辑器中打开时属于某个站点的任何页面将始终解析为 ...

  8. centOS 7设置静态IP,使用Xshell远程连接

    背景 在正式生产环境中,通常需要使用Xshell等终端软件,通过固定IP地址远程连接生产服务器进行管理,所以需要给生产服务器分配一个静态的IP地址,以方便本地计算机远程连接. 目的 本文目的在于模仿生 ...

  9. 虚拟机下安装Centos设置静态ip,并通过桥接连接

    Centos7.6设置静态IP 1.CentOS7默认网卡设备文件存放于该目录下 /etc/sysconfig/network-scripts/ 网卡设备默认的名字为:ifcfg-ens33 查看网卡 ...

随机推荐

  1. Major GC和Full GC的区别是什么?触发条件呢?

    作者:RednaxelaFX链接:http://www.zhihu.com/question/41922036/answer/93079526来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  2. 【LeetCode题解】206_反转链表(Reverse-Linked-List)

    目录 描述 解法一:迭代 思路 Java 实现 Python 实现 复杂度分析 解法二:递归 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以访问我的 git ...

  3. Python List 基础学习

    list&tuple&dict list list 常见操作 初始化: list1 = [123, 'abc', 4.56, ['inner', 'list'], 7-9j] list ...

  4. Linux系统资源查看 之 资源信息

    1. 系统 版本信息 内核版本 使用 uname 命令: -a : 查看所有系统信息 -r : 查看内核版本信息 -s : 查看内核名称 代码如下: [niesh@niesh ~]$ uname -a ...

  5. SQL2008无法连接到(local),该账户当前被锁定,所以Sa用户登陆失败

    1 安装小结 换了电脑,很多软件都得重装,期间报了很多问题,比如说先装vs2008再装sql server2008r2会报一个“存在2008早期版本”,通过查找,百度一系列的坑爹之路后,我还是把vs2 ...

  6. [转] Hadoop 2.0 详细安装过程

    1. 准备 创建用户 useradd hadoop passwd hadoop 创建相关的目录 定义代码及工具存放的路径 mkdir -p /home/hadoop/source mkdir -p / ...

  7. cefsharp 在anycpu下运行

    从cefsharp57开始就支持anycpu了,不过需要一些设置: 1.首先要打开*.csprj文件,添加节点 <CefSharpAnyCpuSupport>true</CefSha ...

  8. async 和 await 的用法示例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. [javaSE] 网络编程(UDP通信)

    UDP发送端 获取DatagramSocket对象,new出来 获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度,InetAddress对象,int端口 调用D ...

  10. [javaSE] 基本类型(String相关)

    字符串是一个特殊的对象 字符串一旦初始化就不可以被改变 获取字符串的长度 调用String对象的length()方法,返回int长度 获取某个索引位置的字符 调用String对象的charAt()方法 ...