设置 ExpressRoute 和站点到站点并存连接
配置站点到站点 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 连接。
安装最新版本的 Azure PowerShell cmdlet。 有关安装 cmdlet 的信息,请参阅如何安装和配置 Azure PowerShell。针对此配置使用的 cmdlet 可能与你熟悉的 cmdlet 稍有不同。 请务必使用说明内容中指定的 cmdlet。
登录帐户并设置环境。
PowerShell复制login-AzureRmAccount -Environment $(Get-AzureRmEnvironment -Name AzureChinaCloud)
Select-AzureRmSubscription -SubscriptionName 'yoursubscription'
$location = "China North"
$resgrp = New-AzureRmResourceGroup -Name "ErVpnCoex" -Location $location
$VNetASN = 65010
创建包括网关子网的虚拟网络。 有关虚拟网络配置的详细信息,请参阅 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
创建 ExpressRoute 网关。 有关 ExpressRoute 网关配置的详细信息,请参阅 ExpressRoute 网关配置。 GatewaySKU 必须是 Standard、HighPerformance 或 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
将 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
接下来,创建站点到站点 VPN 网关。 有关 VPN 网关配置的详细信息,请参阅使用站点到站点连接配置 VNet。 GatewaySKU 必须是 Standard、HighPerformance 或 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。
创建一个本地站点 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
配置本地 VPN 设备以连接到新的 Azure VPN 网关。 有关 VPN 设备配置的详细信息,请参阅 VPN 设备配置。
将 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
如果你删除的是现有网关,则当你进行此配置时,本地系统将失去与虚拟网络建立的连接。
你需要安装 Azure PowerShell cmdlet 的最新版本。 有关安装 cmdlet 的详细信息,请参阅如何安装和配置 Azure PowerShell。 针对此配置使用的 cmdlet 可能与你熟悉的 cmdlet 稍有不同。 请务必使用说明内容中指定的 cmdlet。
删除现有的 ExpressRoute 或站点到站点 VPN 网关。
PowerShell复制Remove-AzureRmVirtualNetworkGateway -Name <yourgatewayname> -ResourceGroupName <yourresourcegroup>
删除网关子网。
PowerShell复制$vnet = Get-AzureRmVirtualNetwork -Name <yourvnetname> -ResourceGroupName <yourresourcegroup>
Remove-AzureRmVirtualNetworkSubnetConfig -Name GatewaySubnet -VirtualNetwork $vnet
添加为 /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
- 此时,你拥有不带网关的 VNet。 若要创建新网关并完成连接,可以转到 步骤 4 - 创建 ExpressRoute 网关(可以在前一组步骤中找到)。
将点到站点配置添加到 VPN 网关
可以按照下面的步骤将点到站点配置添加到共存设置中的 VPN 网关。
添加 VPN 客户端地址池。
PowerShell复制$azureVpn = Get-AzureRmVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
Set-AzureRmVirtualNetworkGatewayVpnClientConfig -VirtualNetworkGateway $azureVpn -VpnClientAddressPool "10.251.251.0/24"
为你的 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 和站点到站点并存连接的更多相关文章
- Windows Azure 配置多个站点的虚拟网络连接
通过上一篇"Windows Azure 虚拟网络配置(Site to Site)" 我们建立了可以进行Site to Site连接的虚拟网络,配置过后有些朋友会有疑问:如果需要连接 ...
- wstngfw openVpn站点到站点连接示例(SSL/TLS)
wstngfw openVpn站点到站点连接示例(SSL/TLS) 在本例中,将假设以下设置: 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Offi ...
- wstngfw openVpn站点到站点连接示例(共享密钥)
wstngfw openVpn站点到站点连接示例(共享密钥) 在本例中,将假设以下设置: 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Office( ...
- wstngfw IPsec 站点到站点连接示例
wstngfw IPsec 站点到站点连接示例 在本例中,将假设以下设置: IPsec站点设置 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Offi ...
- Linux 如何设置只允许域名访问站点而禁止IP访问站点
最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...
- Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用
Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...
- SITECORE体验编辑器 - 多站点实施站点解析
SITECORE体验编辑器 - 多站点实施站点解析 我们使用其中一个多站点实现遇到了Sitecore体验编辑器的问题.从内容编辑器中选择并尝试在体验编辑器中打开时属于某个站点的任何页面将始终解析为 ...
- centOS 7设置静态IP,使用Xshell远程连接
背景 在正式生产环境中,通常需要使用Xshell等终端软件,通过固定IP地址远程连接生产服务器进行管理,所以需要给生产服务器分配一个静态的IP地址,以方便本地计算机远程连接. 目的 本文目的在于模仿生 ...
- 虚拟机下安装Centos设置静态ip,并通过桥接连接
Centos7.6设置静态IP 1.CentOS7默认网卡设备文件存放于该目录下 /etc/sysconfig/network-scripts/ 网卡设备默认的名字为:ifcfg-ens33 查看网卡 ...
随机推荐
- 共识算法:PBFT、RAFT
转自:https://www.cnblogs.com/davidwang456/articles/9001331.html 区块链技术中,共识算法是其中核心的一个组成部分.首先我们来思考一个问题:什么 ...
- 05-python中的异常
python的所有的异常都继承自基类: Exception 处理方式和java类似: path = raw_input('input the path') array = path.split('/' ...
- Linux-文件和目录属性
文件系统的是用来组织和排列文件存取的,所以它是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,见到的都是树形结构:比如操作系统安装在一个文件系统中,他表现为由/ 起始的 ...
- 深入JVM学习心得
前言 相信很多人和我一样长期使用java编程,却很少关注过JVM底层实现,这很大程度上是因为JVM设计的很精巧,因此平时项目也很少遇到涉及JVM的问题.但是一方面出于对java底层技术的好奇,另一方面 ...
- cookie和session的区别,session的生命周期,
这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...
- 学习angualr之前需要了解的typeScript知识
官网 : www.typescriptlang.org 1.编译型语言 2.强类型语言 3.真正的面向对象的语言: 有借口.有泛型.有枚举.有访问修饰符 AMD类型的面向对象的语言 npm ...
- [Codeforces 993E]Nikita and Order Statistics
Description 题库链接 给你一个长度为 \(n\) 的序列 \(A\) ,和一个数 \(x\) ,对于每个 \(i= 0\sim n\) ,求有多少个非空子区间满足恰好有 \(i\) 个数 ...
- Linux man C++ 库函数
默认情况下,linux是的man是不能查阅C++的标准库函数的,这个很不方便,那有没有办法可以直接man C++标准库函数呢? 当然有,不过要自己动手,自己动手,才能丰衣足食! 1. 下载安装manp ...
- hadoop学习笔记(十一):MapReduce数据类型
一.序列化 1 hadoop自定义了数据类型,在hadoop中,所有的key/value类型必须实现Writable接口.有两个方法,一个是write,一个是readFileds.分别用于读(反序列化 ...
- [转]VS 2010 : 如何开发和部署Outlook 2010插件(Add-in)
本文转自:https://www.cnblogs.com/chenxizhang/archive/2010/05/08/1730766.html 概述: 这篇文章,我将通过一个简单的例子,给大家分享一 ...