From be3f0da600d5d8e53e600224eeb448a9819e7d2d Mon Sep 17 00:00:00 2001 From: JohnPWSharp Date: Thu, 4 Aug 2016 13:25:29 +0100 Subject: [PATCH 01/11] Doc: guidance-hybrid-network-expressroute.md. Added "Solution Components" and "Deployment" sections --- .../guidance-hybrid-network-expressroute.md | 262 ++++++++++-------- 1 file changed, 148 insertions(+), 114 deletions(-) diff --git a/articles/guidance/guidance-hybrid-network-expressroute.md b/articles/guidance/guidance-hybrid-network-expressroute.md index 6cd3537dd4a..6fd45b2b6c7 100644 --- a/articles/guidance/guidance-hybrid-network-expressroute.md +++ b/articles/guidance/guidance-hybrid-network-expressroute.md @@ -14,7 +14,7 @@ ms.topic="article" ms.tgt_pltfrm="na" ms.workload="na" - ms.date="07/07/2016" + ms.date="08/04/2016" ms.author="telmos"/> # Implementing a hybrid network architecture with Azure ExpressRoute @@ -45,7 +45,7 @@ The following diagram highlights the important components in this architecture: ![[0]][0] -- **Azure Virtual Networks (VNets).** Each VNet resides in a single Azure region, and can host multiple application tiers. Application tiers can be segmented using subnets in each VNet and/or network security groups (NSGs). +- **Azure virtual networks (VNets).** Each VNet resides in a single Azure region, and can host multiple application tiers. Application tiers can be segmented using subnets in each VNet and/or network security groups (NSGs). - **Azure public services.** These are Azure services that can be utilized within a hybrid application. These services are also available over the public Internet, but accessing them via an ExpressRoute circuit provides low latency and more predictable performance since traffic does not go through the Internet. Connections are performed by using **public peering**, with addresses that are either owned by your organization or supplied by your connectivity provider. @@ -73,7 +73,7 @@ The following diagram highlights the important components in this architecture: Get-AzureRmExpressRouteServiceProvider ``` - ExpressRoute connectivity providers connect your datacenter to Microsoft in one of three different ways: + ExpressRoute connectivity providers connect your datacenter to Microsoft in the following ways: - **Co-located at a cloud exchange.** If you're co-located in a facility with a cloud exchange, you can order virtual cross-connections to the Microsoft cloud through the co-location provider’s Ethernet exchange. Co-location providers can offer either Layer 2 cross-connections, or managed Layer 3 cross-connections between your infrastructure in the co-location facility and the Microsoft cloud.. @@ -87,7 +87,7 @@ The following diagram highlights the important components in this architecture: - Ensure that your organization has met the [ExpressRoute prerequiste requirements][expressroute-prereqs] for connecting to Azure. -- If you haven't already done so, add a subnet named `GatewaySubnet` to your Azure VNet and create a VPN gateway. For more information about this process, see [ExpressRoute workflows for circuit provisioning and circuit states][ExpressRoute-provisioning]. +- If you haven't already done so, add a subnet named `GatewaySubnet` to your Azure VNet and create an ExpressRoute virtual network gateway using the Azure VPN Gateway service. For more information about this process, see [ExpressRoute workflows for circuit provisioning and circuit states][ExpressRoute-provisioning]. - Create an ExpressRoute circuit as follows: @@ -142,7 +142,7 @@ Note the following points: ## Availability considerations -You can configure high availability for your Azure connection in different ways, depending on the type of provider you use, and the number of ExpressRoute circuits and VPN gateway connection you're willing to configure. The points below summarize your availability options: +You can configure high availability for your Azure connection in different ways, depending on the type of provider you use, and the number of ExpressRoute circuits and virtual network gateway connections you're willing to configure. The points below summarize your availability options: - ExpressRoute does not support router redundancy protocols such as HSRP and VRRP to implement high availability. Instead, it uses a redundant pair of BGP sessions per peering. To facilitate highly-available connections to your network, Microsoft Azure provisions you with two redundant ports on two routers (part of the Microsoft edge) in an active-active configuration. @@ -254,129 +254,156 @@ If a previously functioning ExpressRoute circuit now fails to connect, in the ab ``` - If your provider had already provisioned the circuit, and the `ProvisioningState` is set to `Failed`, or the `CircuitProvisioningState` is not `Enabled`, contact your provider for further assistance. -## Solution Deployment +## Solution components - + -The [Azure PowerShell][azure-powershell] commands in this section show how to connect an on-premises network to an Azure VNet by using an ExpressRoute connection. This script assumes that you're using a layer 3 connection. +A sample solution script, [Deploy-ReferenceArchitecture.ps1][solution-script], is available that you can use to implement the architecture that follows the recommendations described in this article. This script utilizes [Azure Resource Manager][arm-Templates] templates. The templates are available as a set of fundamental building blocks, each of which performs a specific action such as creating a VNet or configuring an NSG. The purpose of the script is to orchestrate template deployment. -To use the script below, execute the following steps: +The templates are parameterized, with the parameters held in separate JSON files. You can modify the parameters in these files to configure the deployment to meet your own requirements. You do not need to amend the templates themselves. Note that you must not change the schemas of the objects in the parameter files. -1. Copy the [sample script][sample-script] and paste it into a new file. -2. Save the file as a .ps1 file. -3. Open a PowerShell command shell. -4. Run the script with the necessary parameters to create an ExpressRoute circuit, as shown below. +When you edit the parameter files, create objects that follow the naming conventions described in [Recommended Naming Conventions for Azure Resources][naming-conventions]. + + + +>[AZURE.NOTE] This script creates the ExpressRoute circuit but does not provision it. You must work with your service provider to perform this task. + +The script references the parameters in the following files: + +- **[er-gateway-er-connection-settings.parameters.json][er-gateway-parameters]**. This file contains the parameters that specify the settings for a VNet and virtual network gateway connection for linking to the ExpressRoute circuit. + + ```json + "parameters": { + "virtualNetworkSettings": { + "value": { + "name": "hybrid-er-vnet", + "addressPrefixes": [ + "10.20.0.0/16" + ], + "subnets": [ + { + "name": "GatewaySubnet", + "addressPrefix": "10.20.255.224/27" + }, + { + "name": "hybrid-er-internal-subnet", + "addressPrefix": "10.20.0.0/24" + } + ], + "dnsServers": [ ] + } + }, + "virtualNetworkGatewaySettings": { + "value": { + "name": "hybrid-er-vgw", + "gatewayType": "ExpressRoute", + "vpnType": "RouteBased", + "sku": "Standard" + } + }, + "connectionSettings": { + "value": { + "name": "hybrid-er-vpn", + "connectionType": "ExpressRoute", + "virtualNetworkGateway1": { + "name": "hybrid-er-vgw" + }, + "expressRouteCircuit": { + "name": "hybrid-er-erc" + } + } + } + } + ``` + + - The `virtualNetworkSettings` section defines the structure of the VNet to create. You can specify the name of the VNet (*hybrid-er-vnet* shown in the example above) and the address space (*10.20.0.0/16*). + + The `subnets` array indicates the subnets to add to the VNet. You must always create at least one subnet named *GatewaySubnet* with an address space of at least /27. Do not create any application objects in the GatewaySubnet. + + You should also create subnets with sufficient space to hold the IP addresses for each peering required by your organization. + + You can also use the `dnsServers` array to specify the addresses of DNS servers required by your application. + + - The `virtualNetworkGatewaySettings` section contains the information used to create the Azure VPN gateway. + + For this architecture, ensure that the `gatewayType` parameter is set to *ExpressRoute*. The `vpnType` parameter can be *RouteBased* or *PolicyBased*. You can set the `sku` parameter to *Standard* or *HighPerformance*. + + - The `connectionSettings` section defines the configuration for the local network gateway and the connection to the on-premises network. + + The `connectionType` should be *ExpressRoute*. + + The `expressRouteCircuit` object specifies the name of the ExpressRoute circuit to use to create the connection. This should be the name of a circuit defined in the [er-circuit.parameters.json][er-circuit-parameters] file. + +- **[er-circuit.parameters.json][er-circuit-parameters]**. This file contains the details of the ExpressRoute circuit. Set the parameters in this file to the values appropriate to your provider: + + ```json + "parameters": { + "expressRouteCircuitSettings": { + "value": { + "name": "hybrid-er-erc", + "skuTier": "Premium", + "skuFamily": "UnlimitedData", + "serviceProviderName": "Equinix", + "peeringLocation": "Silicon Valley", + "bandwidthInMbps": 50, + "allowClassicOperations": false + } + } + } + ``` + +## Deployment + +You can run the Deploy-ReferenceArchitecture.ps1 script twice. The first time to create the ExpressRoute circuit, and the second time to create a virtual network connection to your Azure VNet through the ExpressRoute circuit. If you already have an ExpressRoute circuit, you do not need to create another one, and you can just run the script once to connect to the VNet. + +The solution assumes the following prerequisites: + +- You have an existing on-premises infrastructure already configured with a suitable network appliance. + +- You have an existing Azure subscription in which you can create resource groups. + +- You have downloaded and installed the most recent build of Azure Powershell. See [here][azure-powershell-download] for instructions. + +To run the script that deploys the solution: + +1. Move to a convenient folder on your local computer and create the following two subfolders: + + - Scripts + + - Templates + +2. Download the [Deploy-ReferenceArchitecture.ps1][solution-script] file to the Scripts folder + +3. Download the [er-gateway-er-connection-settings.parameters.json][er-gateway-parameters] and [er-circuit.parameters.json][er-circuit-parameters] files to Templates folder: + +4. Edit the Deploy-ReferenceArchitecture.ps1 file in the Scripts folder, and change the following line to specify the resource group that should be created or used to hold the resources created by the script: ```powershell - .\<>.ps1 -SubscriptionId <> -BaseName <> -Location <> -ExpressRouteSkuTier <> -ExpressRouteSkuFamily <> -ExpressRouteServiceProviderName <> -ExpressRoutePeeringLocation <> -ExpressRouteBandwidth <> + $resourceGroupName = "hybrid-er-rg" ``` +5. Edit the parameter files in the Templates folder to set the parameters for the VNet, virtual network gateway, and ExpressRoute connection, as described in the Solution Components section above. -5. Contact your provider with your circuit `ServiceKey` and wait for the circuit to be provisioned. -6. Run the script with the necessary parameters to create a VNet and connect it to the ExpressRoute circuit, as shown below. +6. Open an Azure PowerShell window, move to the Scripts folder, and run the following command to create the ExpressRoute circuit. If you already have an ExpressRoute circuit, you can skip this step: ```powershell - .\<>.ps1 -CreateVNet $true -VnetAddressPrefix <> -InternalSubnetAddressPrefix <> -GatewaySubnetAddressPrefix <> -SubscriptionId <> -BaseName <> -Location <> -ExpressRouteSkuTier <> -ExpressRouteSkuFamily <> -ExpressRouteServiceProviderName <> -ExpressRoutePeeringLocation <> -ExpressRouteBandwidth <> + .\Deploy-ReferenceArchitecture.ps1 Circuit ``` -### Sample solution script + Replace `` with your Azure subscription ID. -The deployment steps above use the following sample script. + For ``, specify an Azure region, such as `eastus` or `westus`. -```powershell -param( - [parameter(Mandatory=$true)] - [ValidateScript({ - try { - [System.Guid]::Parse($_) | Out-Null - $true - } - catch { - $false - } - })] - [string]$SubscriptionId, - - [Parameter(Mandatory=$false)] - [string]$BaseName = "hybrid-er", - - [Parameter(Mandatory=$false)] - [string]$Location = "Central US", - - [Parameter(Mandatory=$false, ParameterSetName="CreateERCircuit")] - [ValidateSet("Premium", "Standard")] - [string]$ExpressRouteSkuTier = "Standard", - - [Parameter(Mandatory=$false, ParameterSetName="CreateERCircuit")] - [ValidateSet("MeteredData", "UnlimitedData")] - [string]$ExpressRouteSkuFamily = "MeteredData", - - [Parameter(Mandatory=$true, ParameterSetName="CreateERCircuit")] - [string]$ExpressRouteServiceProviderName, - - [Parameter(Mandatory=$true, ParameterSetName="CreateERCircuit")] - [string]$ExpressRoutePeeringLocation, - - [Parameter(Mandatory=$true, ParameterSetName="CreateERCircuit")] - [string]$ExpressRouteBandwidth, - - - [Parameter(Mandatory=$true, ParameterSetName="CreateVNet")] - [switch]$CreateVNet, - - [Parameter(Mandatory=$false, ParameterSetName="CreateVNet")] - [string]$VnetAddressPrefix = "10.20.0.0/16", - - [Parameter(Mandatory=$false, ParameterSetName="CreateVNet")] - [string]$GatewaySubnetAddressPrefix = "10.20.255.224/27", - - [Parameter(Mandatory=$false, ParameterSetName="CreateVNet")] - [string]$InternalSubnetAddressPrefix = "10.20.0.0/24" -) - -$resourceGroup = "$BaseName-rg" -$vnetName = "$BaseName-vnet" -$internalSubnetName = "$BaseName-internal-subnet" -$expressRouteCircuitName = "$BaseName-erc" -$gatewayPublicIpAddressName = "$BaseName-pip" -$vnetGatewayName = "$BaseName-vgw" -$vpnConnectionName = "$BaseName-vpn" - -Login-AzureRmAccount -Select-AzureRmSubscription -SubscriptionId $SubscriptionId - -switch($PSCmdlet.ParameterSetName) { - "CreateERCircuit" { - New-AzureRmResourceGroup -Name $resourceGroup -Location $Location - New-AzureRmExpressRouteCircuit -Name $expressRouteCircuitName ` - -ResourceGroupName $resourceGroup -Location $Location -SkuTier $ExpressRouteSkuTier ` - -SkuFamily $ExpressRouteSkuFamily -ServiceProviderName $ExpressRouteServiceProviderName ` - -PeeringLocation $ExpressRoutePeeringLocation -BandwidthInMbps $ExpressRouteBandwidth - } - "CreateVNet" { - $gatewaySubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" ` - -AddressPrefix $GatewaySubnetAddressPrefix - $internalSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $internalSubnetName ` - -AddressPrefix $InternalSubnetAddressPrefix - $vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroup ` - -Location $Location -AddressPrefix $VnetAddressPrefix ` - -Subnet $gatewaySubnetConfig, $internalSubnetConfig - $gwsubnet = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name GatewaySubnet - $gatewayPublicIpAddress = New-AzureRmPublicIpAddress -Name $gatewayPublicIpAddressName -ResourceGroupName $resourceGroup ` - -Location $Location -AllocationMethod Dynamic - $gatewayIpConfig = New-AzureRmVirtualNetworkGatewayIpConfig -Name gwIpConfig ` - -SubnetId $gwsubnet.Id -PublicIpAddressId $gatewayPublicIpAddress.Id - $vnetGateway = New-AzureRmVirtualNetworkGateway -Name $vnetGatewayName ` - -ResourceGroupName $resourceGroup -Location $Location -IpConfigurations $gatewayIpConfig ` - -GatewayType ExpressRoute -VpnType RouteBased - $expressRouteCircuit = Get-AzureRmExpressRouteCircuit -Name $expressRouteCircuitName ` - -ResourceGroupName $resourceGroup - $vpnConnection = New-AzureRmVirtualNetworkGatewayConnection -Name $vpnConnectionName ` - -ResourceGroupName $resourceGroup -Location $Location -VirtualNetworkGateway1 $vnetGateway ` - -PeerId $expressRouteCircuit.Id -ConnectionType ExpressRoute - } -} - -``` +7. When the script has completed, initiate the ExpressRoute circuit provisioning process with your service provider. + +8. After the circuit has been provisioned, run the script again as follows to create a VNet and a virtual network gateway connection to the VNet: + + ```powershell + .\Deploy-ReferenceArchitecture.ps1 VNet + ``` + + Specify the same values for `` and `` as before. + +9. Use the Azure portal to verify that the VNet and ExpressRoute virtual network gateway connection have been created successfully. ## Next steps @@ -398,6 +425,13 @@ switch($PSCmdlet.ParameterSetName) { [azurect]: https://github.com/Azure/NetworkMonitoring/tree/master/AzureCT [forced-tuneling]: ./guidance-iaas-ra-secure-vnet-hybrid.md [highly-available-network-architecture]: ./guidance-hybrid-network-expressroute-vpn-failover.md +[arm-templates]: ../virtual-machines/virtual-machines-deploy-rmtemplates-azure-cli.md +[naming-conventions]: ./guidance-naming-conventions.md +[solution-script]: https://raw.githubusercontent.com/mspnp/arm-building-blocks/master/guidance-hybrid-network-er/Scripts/Deploy-ReferenceArchitecture.ps1 +[er-gateway-parameters]: https://raw.githubusercontent.com/mspnp/arm-building-blocks/master/guidance-hybrid-network-er/Templates/er-gateway-er-connection-settings.parameters.json +[er-circuit-parameters]: https://raw.githubusercontent.com/mspnp/arm-building-blocks/master/guidance-hybrid-network-er/Templates/er-circuit.parameters.json + +[azure-powershell-download]: https://azure.microsoft.com/documentation/articles/powershell-install-configure/ [0]: ./media/guidance-hybrid-network-expressroute/figure1.png "Hybrid network architecture using Azure ExpressRoute" [1]: ./media/guidance-hybrid-network-expressroute/figure2.png "Using redundant routers with ExpressRoute primary and secondary circuits" [2]: ./media/guidance-hybrid-network-expressroute/figure3.png "Adding security devices to the on-premises network" From a65d8abcbd0f500c2fa084825acad489d8491a5e Mon Sep 17 00:00:00 2001 From: JohnPWSharp Date: Thu, 4 Aug 2016 16:35:37 +0100 Subject: [PATCH 02/11] Added deployment step to send ServiceKey to service provider --- .../guidance-hybrid-network-expressroute.md | 7 ++++++- .../figure5.png | Bin 0 -> 71756 bytes 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 articles/guidance/media/guidance-hybrid-network-expressroute/figure5.png diff --git a/articles/guidance/guidance-hybrid-network-expressroute.md b/articles/guidance/guidance-hybrid-network-expressroute.md index 6fd45b2b6c7..d08d4817a49 100644 --- a/articles/guidance/guidance-hybrid-network-expressroute.md +++ b/articles/guidance/guidance-hybrid-network-expressroute.md @@ -393,7 +393,11 @@ To run the script that deploys the solution: For ``, specify an Azure region, such as `eastus` or `westus`. -7. When the script has completed, initiate the ExpressRoute circuit provisioning process with your service provider. +7. When the script has completed, contact your service provider with the ServiceKey of the circuit and wait for the circuit to be provisioned. + + You can find the ServiceKey by using the Azure portal: + + ![[4]][4] 8. After the circuit has been provisioned, run the script again as follows to create a VNet and a virtual network gateway connection to the VNet: @@ -436,3 +440,4 @@ To run the script that deploys the solution: [1]: ./media/guidance-hybrid-network-expressroute/figure2.png "Using redundant routers with ExpressRoute primary and secondary circuits" [2]: ./media/guidance-hybrid-network-expressroute/figure3.png "Adding security devices to the on-premises network" [3]: ./media/guidance-hybrid-network-expressroute/figure4.png "Using forced tunneling to audit Internet-bound traffic" +[4]: ./media/guidance-hybrid-network-expressroute/figure5.png "Locating the ServiceKey of an ExpressRoute circuit" diff --git a/articles/guidance/media/guidance-hybrid-network-expressroute/figure5.png b/articles/guidance/media/guidance-hybrid-network-expressroute/figure5.png new file mode 100644 index 0000000000000000000000000000000000000000..298760f2d2424b56fd431d8b284edc699b10bb76 GIT binary patch literal 71756 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 >`Itrkb_c2@C(`qM`xZPlOs5E(mB0G6X#Om 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
    1T#;N# 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 JV&Tu;{|oAh9Vq|+ literal 0 HcmV?d00001 From a32fb8440fe951c7d88547a0e6e38ef3836f1aad Mon Sep 17 00:00:00 2001 From: JohnPWSharp Date: Fri, 5 Aug 2016 09:46:33 +0100 Subject: [PATCH 03/11] Corrected capitilization of arm-templates link --- articles/guidance/guidance-hybrid-network-expressroute.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/guidance/guidance-hybrid-network-expressroute.md b/articles/guidance/guidance-hybrid-network-expressroute.md index d08d4817a49..fb914bf01f7 100644 --- a/articles/guidance/guidance-hybrid-network-expressroute.md +++ b/articles/guidance/guidance-hybrid-network-expressroute.md @@ -258,7 +258,7 @@ If a previously functioning ExpressRoute circuit now fails to connect, in the ab -A sample solution script, [Deploy-ReferenceArchitecture.ps1][solution-script], is available that you can use to implement the architecture that follows the recommendations described in this article. This script utilizes [Azure Resource Manager][arm-Templates] templates. The templates are available as a set of fundamental building blocks, each of which performs a specific action such as creating a VNet or configuring an NSG. The purpose of the script is to orchestrate template deployment. +A sample solution script, [Deploy-ReferenceArchitecture.ps1][solution-script], is available that you can use to implement the architecture that follows the recommendations described in this article. This script utilizes [Azure Resource Manager][arm-templates] templates. The templates are available as a set of fundamental building blocks, each of which performs a specific action such as creating a VNet or configuring an NSG. The purpose of the script is to orchestrate template deployment. The templates are parameterized, with the parameters held in separate JSON files. You can modify the parameters in these files to configure the deployment to meet your own requirements. You do not need to amend the templates themselves. Note that you must not change the schemas of the objects in the parameter files. From a5819f0cc36cbf64a60be6898c91abba0092034b Mon Sep 17 00:00:00 2001 From: Mike Wasson Date: Fri, 5 Aug 2016 10:00:07 -0700 Subject: [PATCH 04/11] Fix validation warning --- articles/guidance/guidance-hybrid-network-expressroute.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/guidance/guidance-hybrid-network-expressroute.md b/articles/guidance/guidance-hybrid-network-expressroute.md index d08d4817a49..fb914bf01f7 100644 --- a/articles/guidance/guidance-hybrid-network-expressroute.md +++ b/articles/guidance/guidance-hybrid-network-expressroute.md @@ -258,7 +258,7 @@ If a previously functioning ExpressRoute circuit now fails to connect, in the ab -A sample solution script, [Deploy-ReferenceArchitecture.ps1][solution-script], is available that you can use to implement the architecture that follows the recommendations described in this article. This script utilizes [Azure Resource Manager][arm-Templates] templates. The templates are available as a set of fundamental building blocks, each of which performs a specific action such as creating a VNet or configuring an NSG. The purpose of the script is to orchestrate template deployment. +A sample solution script, [Deploy-ReferenceArchitecture.ps1][solution-script], is available that you can use to implement the architecture that follows the recommendations described in this article. This script utilizes [Azure Resource Manager][arm-templates] templates. The templates are available as a set of fundamental building blocks, each of which performs a specific action such as creating a VNet or configuring an NSG. The purpose of the script is to orchestrate template deployment. The templates are parameterized, with the parameters held in separate JSON files. You can modify the parameters in these files to configure the deployment to meet your own requirements. You do not need to amend the templates themselves. Note that you must not change the schemas of the objects in the parameter files. From df6aa0de62e2cd5be1a1beac75b8058b575b6b70 Mon Sep 17 00:00:00 2001 From: Mike Wasson Date: Fri, 5 Aug 2016 10:12:08 -0700 Subject: [PATCH 05/11] Fix link --- articles/guidance/guidance-hybrid-network-expressroute.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/guidance/guidance-hybrid-network-expressroute.md b/articles/guidance/guidance-hybrid-network-expressroute.md index fb914bf01f7..4e3249caa22 100644 --- a/articles/guidance/guidance-hybrid-network-expressroute.md +++ b/articles/guidance/guidance-hybrid-network-expressroute.md @@ -429,7 +429,7 @@ To run the script that deploys the solution: [azurect]: https://github.com/Azure/NetworkMonitoring/tree/master/AzureCT [forced-tuneling]: ./guidance-iaas-ra-secure-vnet-hybrid.md [highly-available-network-architecture]: ./guidance-hybrid-network-expressroute-vpn-failover.md -[arm-templates]: ../virtual-machines/virtual-machines-deploy-rmtemplates-azure-cli.md +[arm-templates]: ../resource-group-authoring-templates.md [naming-conventions]: ./guidance-naming-conventions.md [solution-script]: https://raw.githubusercontent.com/mspnp/arm-building-blocks/master/guidance-hybrid-network-er/Scripts/Deploy-ReferenceArchitecture.ps1 [er-gateway-parameters]: https://raw.githubusercontent.com/mspnp/arm-building-blocks/master/guidance-hybrid-network-er/Templates/er-gateway-er-connection-settings.parameters.json From ce312cefdc2de937705a8215a8258f2751cc6b15 Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Mon, 8 Aug 2016 13:16:21 -0700 Subject: [PATCH 06/11] new lng updates --- ...teway-create-site-to-site-rm-powershell.md | 10 ++++- ...pn-gateway-modify-local-network-gateway.md | 19 +++++--- ...vpn-gateway-modify-ip-prefix-rm-include.md | 18 ++++---- ...ateway-modify-lng-gateway-ip-rm-include.md | 45 +++++++++++++++++++ 4 files changed, 76 insertions(+), 16 deletions(-) create mode 100644 includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md diff --git a/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md b/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md index 337aa0f5611..cd8f1048afe 100644 --- a/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md +++ b/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md @@ -183,7 +183,7 @@ Next, you'll create the Site-to-Site VPN connection between your virtual network After a short while, the connection will be established. -## 9. Verify a VPN connection +## To verify a VPN connection There are a few different ways to verify your VPN connection. Below, we'll talk about how to do basic verification by using the Azure portal and by using PowerShell. @@ -191,10 +191,16 @@ There are a few different ways to verify your VPN connection. Below, we'll talk ## To modify IP address prefixes for a local network gateway -If you need to change the prefixes for your local network gateway, use the instructions below. Two sets of instructions are provided. The instructions you choose depends on whether you have already created your VPN gateway connection. +If you need to change the prefixes for your local network gateway, use the instructions below. Two sets of instructions are provided. The instructions you choose depend on whether you have already created your gateway connection. [AZURE.INCLUDE [vpn-gateway-modify-ip-prefix-rm](../../includes/vpn-gateway-modify-ip-prefix-rm-include.md)] +## To modify the gateway IP address for a local network gateway + +If you need to change the gateway IP address for your local network gateway, use the instructions below. Two sets of instructions are provided. The instructions you choose depend on whether you have already created your gateway connection. + +[AZURE.INCLUDE [vpn-gateway-modify-lng-gateway-ip-rm](../../includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md)] + ## Next steps diff --git a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md index 93c4ee05f99..7f67640c521 100644 --- a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md +++ b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md @@ -1,5 +1,5 @@ -# Modify the IP address prefixes for your local network gateway using PowerShell +# Modify the local network gateway IP address prefixes and the gateway IP address using PowerShell -Sometimes your local network gateway prefixes change. If you need to change the prefixes for your Resource Manager local network gateway, use the instructions below. Two sets of instructions are provided. The instructions you choose depends on whether you have already created your VPN gateway connection. +Sometimes the settings for your local network gateway AddressPrefix or GatewayIPAddress change. The instructions below will help you modify your local network gateway settings. You can also modify these settings in the Azure portal. ## Before you begin @@ -27,9 +27,18 @@ Sometimes your local network gateway prefixes change. If you need to change the ## To modify IP address prefixes +If you need to change the prefixes for your Resource Manager local network gateway, use the instructions below. Two sets of instructions are provided. The instructions you choose depend on whether you have already created your VPN gateway connection. + + [AZURE.INCLUDE [vpn-gateway-modify-ip-prefix-rm](../../includes/vpn-gateway-modify-ip-prefix-rm-include.md)] +## To modify the gateway IP address + +If you need to change the gateway IP address that your local network gateway specifies as a connection point, use the instructions below. Two sets of instructions are provided. The instructions you choose depend on whether you have already created your VPN gateway connection. + +[AZURE.INCLUDE [vpn-gateway-modify-lng-gateway-ip-rm](../../includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md)] + ## Next steps -You can verify your VPN connection. See [Verify a gateway connection](vpn-gateway-verify-connection-resource-manager.md). +You can verify your gateway connection. See [Verify a gateway connection](vpn-gateway-verify-connection-resource-manager.md). diff --git a/includes/vpn-gateway-modify-ip-prefix-rm-include.md b/includes/vpn-gateway-modify-ip-prefix-rm-include.md index 53220cfe94a..a12ded5475e 100644 --- a/includes/vpn-gateway-modify-ip-prefix-rm-include.md +++ b/includes/vpn-gateway-modify-ip-prefix-rm-include.md @@ -1,18 +1,18 @@ -### How to add or remove prefixes without a gateway connection +### How to add or remove prefixes - no gateway connection - **To add** additional address prefixes to a local network gateway that you created, but that doesn't yet have a gateway connection, use the example below. Be sure to change the values to your own. - $local = Get-AzureRmLocalNetworkGateway -Name LocalSite -ResourceGroupName testrg ` + $local = Get-AzureRmLocalNetworkGateway -Name MyLocalNetworkGWName -ResourceGroupName MyRGName ` Set-AzureRmLocalNetworkGateway -LocalNetworkGateway $local ` -AddressPrefix @('10.0.0.0/24','20.0.0.0/24','30.0.0.0/24') - **To remove** an address prefix from a local network gateway that doesn't have a VPN connection, use the example below. Leave out the prefixes that you no longer need. In this example, we no longer need prefix 20.0.0.0/24 (from the previous example), so we will update the local network gateway and exclude that prefix. - $local = Get-AzureRmLocalNetworkGateway -Name LocalSite -ResourceGroupName testrg ` + $local = Get-AzureRmLocalNetworkGateway -Name MyLocalNetworkGWName -ResourceGroupName MyRGName ` Set-AzureRmLocalNetworkGateway -LocalNetworkGateway $local ` -AddressPrefix @('10.0.0.0/24','30.0.0.0/24') -### How to add or remove prefixes with a gateway connection +### How to add or remove prefixes - existing gateway connection If you have created your gateway connection and want to add or remove the IP address prefixes contained in your local network gateway, you'll need to do the following steps in order. This will result in some downtime for your VPN connection. When updating your prefixes, you'll first remove the connection, modify the prefixes, and then create a new connection. In the examples below, be sure to change the values to your own. @@ -20,13 +20,13 @@ If you have created your gateway connection and want to add or remove the IP add 1. Remove the connection. - Remove-AzureRmVirtualNetworkGatewayConnection -Name localtovon -ResourceGroupName testrg + Remove-AzureRmVirtualNetworkGatewayConnection -Name MyGWConnectionName -ResourceGroupName MyRGName 2. Modify the address prefixes for your local network gateway. Set the variable for the LocalNetworkGateway. - $local = Get-AzureRmLocalNetworkGateway -Name LocalSite -ResourceGroupName testrg + $local = Get-AzureRmLocalNetworkGateway -Name MyLocalNetworkGWName -ResourceGroupName MyRGName Modify the prefixes. @@ -37,13 +37,13 @@ If you have created your gateway connection and want to add or remove the IP add Set the variable for the VirtualNetworkGateway. - $gateway1 = Get-AzureRmVirtualNetworkGateway -Name vnetgw1 -ResourceGroupName testrg + $gateway1 = Get-AzureRmVirtualNetworkGateway -Name RMGateway -ResourceGroupName MyRGName Create the connection. Note that this sample uses the variable $local that you set in the preceding step. - New-AzureRmVirtualNetworkGatewayConnection -Name rm-to-localtovon ` - -ResourceGroupName testrg -Location 'West US' ` + New-AzureRmVirtualNetworkGatewayConnection -Name MyGWConnectionName ` + -ResourceGroupName MyRGName -Location 'West US' ` -VirtualNetworkGateway1 $gateway1 -LocalNetworkGateway2 $local ` -ConnectionType IPsec ` -RoutingWeight 10 -SharedKey 'abc123' diff --git a/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md b/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md new file mode 100644 index 00000000000..6f07d591807 --- /dev/null +++ b/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md @@ -0,0 +1,45 @@ +To modify the gateway IP address, we use the `New-AzureRmVirtualNetworkGatewayConnection` cmdlet, not the "Set" cmdlet. As long as you keep the name of the local network gateway exactly the same as the existing name, the settings will overwrite. At this time, the "Set" cmdlet does not support modifying the gateway IP address. + +### How to modify the gatewayipaddress - no gateway connection + +To update the gateway IP address for your local network gateway that doesn't yet have a connection, use the example below. You can also update the address prefixes at the same time. The settings you specify will overwrite the existing settings. Be sure to use the existing name of your local network gateway. If you don't, you'll be creating a new local network gateway, not overwriting the existing one. + + New-AzureRmLocalNetworkGateway -Name MyLocalNetworkGWName ` + -Location "West US" -AddressPrefix @('10.0.0.0/24','20.0.0.0/24','30.0.0.0/24') ` + -GatewayIpAddress "5.4.3.2" -ResourceGroupName MyRGName + + +### How to modify the gatewayipaddress - existing gateway connection + +If a gateway connection already exists, you need to remove the connection, modify the gateway IP, and then recreate a new connection. This will result in some downtime for your VPN connection. + + +>[AZURE.IMPORTANT] Don’t delete the VPN gateway. If you do so, you’ll have to go back through the steps to recreate it, as well as reconfigure your on-premises router with the IP address that will be assigned to the newly created gateway. + + +1. Remove the connection. You can find the name of your connection by using the `Get-AzureRmVirtualNetworkGatewayConnection` cmdlet. + + Remove-AzureRmVirtualNetworkGatewayConnection -Name MyGWConnectionName ` + -ResourceGroupName MyRGName + +3. Modify GatewayIpAddress. You can also modify your address prefixes at this time, if necessary. Note that this will overwrite the existing local network gateway settings. Use the existing name of your local network gateway when modifying so that the settings will overwrite. If you don't, you'll be creating a new local network gateway, not modifying the existing one. + + New-AzureRmLocalNetworkGateway -Name MyLocalNetworkGWName ` + -Location "West US" -AddressPrefix @('10.0.0.0/24','20.0.0.0/24','30.0.0.0/24') ` + -GatewayIpAddress "104.40.81.124" -ResourceGroupName MyRGName + +4. Create the connection. In this example, we are configuring an IPsec connection type. When you recreate your connection, use the connection type that is specified for your configuration. For additional connection types, see the [PowerShell cmdlet](https://msdn.microsoft.com/library/mt603611.aspx) page. To obtain the VirtualNetworkGateway Name, you can run the `Get-AzureRmVirtualNetworkGateway` cmdlet. + + Set the variables: + + $local = Get-AzureRMLocalNetworkGateway -Name MyLocalNetworkGWName -ResourceGroupName MyRGName ` + $vnetgw = Get-AzureRmVirtualNetworkGateway -Name RMGateway -ResourceGroupName MyRGName + + Create the connection: + + New-AzureRmVirtualNetworkGatewayConnection -Name MyGWConnectionName -ResourceGroupName MyRGName ` + -Location "West US" ` + -VirtualNetworkGateway1 $vnetgw ` + -LocalNetworkGateway2 $local ` + -ConnectionType IPsec -RoutingWeight 10 -SharedKey 'abc123' + From f36ec5cbbf366db6379310a2e52f00095da8fc8a Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Mon, 8 Aug 2016 14:06:59 -0700 Subject: [PATCH 07/11] update gatewayIP --- .../vpn-gateway-modify-lng-gateway-ip-rm-include.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md b/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md index 6f07d591807..b5ef851c5ff 100644 --- a/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md +++ b/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md @@ -1,17 +1,19 @@ -To modify the gateway IP address, we use the `New-AzureRmVirtualNetworkGatewayConnection` cmdlet, not the "Set" cmdlet. As long as you keep the name of the local network gateway exactly the same as the existing name, the settings will overwrite. At this time, the "Set" cmdlet does not support modifying the gateway IP address. +To modify the gateway IP address, use the `New-AzureRmVirtualNetworkGatewayConnection` cmdlet. As long as you keep the name of the local network gateway exactly the same as the existing name, the settings will overwrite. At this time, the "Set" cmdlet does not support modifying the gateway IP address. ### How to modify the gatewayipaddress - no gateway connection To update the gateway IP address for your local network gateway that doesn't yet have a connection, use the example below. You can also update the address prefixes at the same time. The settings you specify will overwrite the existing settings. Be sure to use the existing name of your local network gateway. If you don't, you'll be creating a new local network gateway, not overwriting the existing one. +Use the following example, replacing the values for your own. + New-AzureRmLocalNetworkGateway -Name MyLocalNetworkGWName ` -Location "West US" -AddressPrefix @('10.0.0.0/24','20.0.0.0/24','30.0.0.0/24') ` -GatewayIpAddress "5.4.3.2" -ResourceGroupName MyRGName -### How to modify the gatewayipaddress - existing gateway connection +### How to modify the gateway IP address - existing gateway connection -If a gateway connection already exists, you need to remove the connection, modify the gateway IP, and then recreate a new connection. This will result in some downtime for your VPN connection. +If a gateway connection already exists, you'll first need to remove the connection. Then, you can modify the gateway IP address and recreate a new connection. This will result in some downtime for your VPN connection. >[AZURE.IMPORTANT] Don’t delete the VPN gateway. If you do so, you’ll have to go back through the steps to recreate it, as well as reconfigure your on-premises router with the IP address that will be assigned to the newly created gateway. @@ -22,13 +24,13 @@ If a gateway connection already exists, you need to remove the connection, modif Remove-AzureRmVirtualNetworkGatewayConnection -Name MyGWConnectionName ` -ResourceGroupName MyRGName -3. Modify GatewayIpAddress. You can also modify your address prefixes at this time, if necessary. Note that this will overwrite the existing local network gateway settings. Use the existing name of your local network gateway when modifying so that the settings will overwrite. If you don't, you'll be creating a new local network gateway, not modifying the existing one. +2. Modify the GatewayIpAddress value. You can also modify your address prefixes at this time, if necessary. Note that this will overwrite the existing local network gateway settings. Use the existing name of your local network gateway when modifying so that the settings will overwrite. If you don't, you'll be creating a new local network gateway, not modifying the existing one. New-AzureRmLocalNetworkGateway -Name MyLocalNetworkGWName ` -Location "West US" -AddressPrefix @('10.0.0.0/24','20.0.0.0/24','30.0.0.0/24') ` -GatewayIpAddress "104.40.81.124" -ResourceGroupName MyRGName -4. Create the connection. In this example, we are configuring an IPsec connection type. When you recreate your connection, use the connection type that is specified for your configuration. For additional connection types, see the [PowerShell cmdlet](https://msdn.microsoft.com/library/mt603611.aspx) page. To obtain the VirtualNetworkGateway Name, you can run the `Get-AzureRmVirtualNetworkGateway` cmdlet. +3. Create the connection. In this example, we are configuring an IPsec connection type. When you recreate your connection, use the connection type that is specified for your configuration. For additional connection types, see the [PowerShell cmdlet](https://msdn.microsoft.com/library/mt603611.aspx) page. To obtain the VirtualNetworkGateway name, you can run the `Get-AzureRmVirtualNetworkGateway` cmdlet. Set the variables: From 914442b11883b83304a6371377e2f1ac1b8ec7f2 Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Mon, 8 Aug 2016 14:22:28 -0700 Subject: [PATCH 08/11] update formatting --- .../vpn-gateway/vpn-gateway-modify-local-network-gateway.md | 5 +---- includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md index 7f67640c521..da81dc864ea 100644 --- a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md +++ b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md @@ -23,13 +23,10 @@ Sometimes the settings for your local network gateway AddressPrefix or GatewayIP ## Before you begin -- You'll need to install the latest version of the Azure Resource Manager PowerShell cmdlets. See [How to install and configure Azure PowerShell](../powershell-install-configure.md) for more information about installing the PowerShell cmdlets. +You'll need to install the latest version of the Azure Resource Manager PowerShell cmdlets. See [How to install and configure Azure PowerShell](../powershell-install-configure.md) for more information about installing the PowerShell cmdlets. ## To modify IP address prefixes -If you need to change the prefixes for your Resource Manager local network gateway, use the instructions below. Two sets of instructions are provided. The instructions you choose depend on whether you have already created your VPN gateway connection. - - [AZURE.INCLUDE [vpn-gateway-modify-ip-prefix-rm](../../includes/vpn-gateway-modify-ip-prefix-rm-include.md)] ## To modify the gateway IP address diff --git a/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md b/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md index b5ef851c5ff..7cd85d5f569 100644 --- a/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md +++ b/includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md @@ -1,6 +1,6 @@ To modify the gateway IP address, use the `New-AzureRmVirtualNetworkGatewayConnection` cmdlet. As long as you keep the name of the local network gateway exactly the same as the existing name, the settings will overwrite. At this time, the "Set" cmdlet does not support modifying the gateway IP address. -### How to modify the gatewayipaddress - no gateway connection +### How to modify the gateway IP address - no gateway connection To update the gateway IP address for your local network gateway that doesn't yet have a connection, use the example below. You can also update the address prefixes at the same time. The settings you specify will overwrite the existing settings. Be sure to use the existing name of your local network gateway. If you don't, you'll be creating a new local network gateway, not overwriting the existing one. From e451bfd72607c2653688340e9e7e0b96bd405514 Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Mon, 8 Aug 2016 14:24:37 -0700 Subject: [PATCH 09/11] update formatting --- .../vpn-gateway-create-site-to-site-rm-powershell.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md b/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md index cd8f1048afe..8e4d19c06a9 100644 --- a/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md +++ b/articles/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell.md @@ -197,11 +197,8 @@ If you need to change the prefixes for your local network gateway, use the instr ## To modify the gateway IP address for a local network gateway -If you need to change the gateway IP address for your local network gateway, use the instructions below. Two sets of instructions are provided. The instructions you choose depend on whether you have already created your gateway connection. - [AZURE.INCLUDE [vpn-gateway-modify-lng-gateway-ip-rm](../../includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md)] - ## Next steps - You can add virtual machines to your virtual networks. See [Create a Virtual Machine](../virtual-machines/virtual-machines-windows-hero-tutorial.md) for steps. From 1825404cfc94eac3e428c578e7599a7e8e1e3d2d Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Mon, 8 Aug 2016 16:06:19 -0700 Subject: [PATCH 10/11] update modify article --- .../vpn-gateway/vpn-gateway-modify-local-network-gateway.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md index da81dc864ea..f6ac1841ea1 100644 --- a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md +++ b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md @@ -31,8 +31,6 @@ You'll need to install the latest version of the Azure Resource Manager PowerShe ## To modify the gateway IP address -If you need to change the gateway IP address that your local network gateway specifies as a connection point, use the instructions below. Two sets of instructions are provided. The instructions you choose depend on whether you have already created your VPN gateway connection. - [AZURE.INCLUDE [vpn-gateway-modify-lng-gateway-ip-rm](../../includes/vpn-gateway-modify-lng-gateway-ip-rm-include.md)] ## Next steps From 399492159a8ca7b70fa47bd536cf5e4f86a8c661 Mon Sep 17 00:00:00 2001 From: Cheryl McGuire Date: Mon, 8 Aug 2016 16:09:54 -0700 Subject: [PATCH 11/11] modify title --- .../vpn-gateway/vpn-gateway-modify-local-network-gateway.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md index f6ac1841ea1..2e0609a855e 100644 --- a/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md +++ b/articles/vpn-gateway/vpn-gateway-modify-local-network-gateway.md @@ -17,7 +17,7 @@ ms.date="08/08/2016" ms.author="cherylmc"/> -# Modify the local network gateway IP address prefixes and the gateway IP address using PowerShell +# Modify local network gateway settings using PowerShell Sometimes the settings for your local network gateway AddressPrefix or GatewayIPAddress change. The instructions below will help you modify your local network gateway settings. You can also modify these settings in the Azure portal.