--allow-branch-to-branch-traffic
(controls branch-to-branch communication)--allow-vnet-to-vnet-traffic
(controls VNet-to-VNet communication)az group create \
--name rg-vwan-prod \
--location eastus \
--tags environment=production project=networking
Parameter | Description | Options |
---|---|---|
--name | Resource group name | Must be unique within subscription |
--location | Azure region | eastus, westus2, westeurope, etc. |
--tags | Metadata tags | Key-value pairs for organization |
az network vwan create \
--resource-group rg-vwan-prod \
--name vwan-global-prod \
--location eastus \
--type Standard \
--disable-vpn-encryption false \
--allow-branch-to-branch-traffic true \
--allow-vnet-to-vnet-traffic true \
--tags environment=production tier=standard
Parameter | Description | Options |
---|---|---|
--type | SKU type | Basic, Standard |
--disable-vpn-encryption | VPN encryption setting | true, false (recommended: false) |
--allow-branch-to-branch-traffic | Inter-branch communication | true, false |
--allow-vnet-to-vnet-traffic | VNet-to-VNet transit | true, false |
az network vhub create \
--resource-group rg-vwan-prod \
--name vhub-eastus-prod \
--vwan vwan-global-prod \
--location eastus \
--address-prefix 10.1.0.0/16 \
--sku Standard \
--tags region=eastus purpose=primary-hub
Parameter | Description | Considerations |
---|---|---|
--address-prefix | Hub IP address space | Must not overlap with connected VNets |
--sku | Hub SKU | Standard required for full features |
--vwan | Parent Virtual WAN | Must exist before hub creation |
az network vhub create \
--resource-group rg-vwan-prod \
--name vhub-westeurope-prod \
--vwan vwan-global-prod \
--location westeurope \
--address-prefix 10.2.0.0/16 \
--sku Standard \
--tags region=westeurope purpose=secondary-hub
Gateway Type | Min Scale Units | Max Scale Units | Bandwidth per Unit |
---|---|---|---|
VPN Gateway | 1 | 40 | 500 Mbps |
ExpressRoute Gateway | 1 | 10 | 2 Gbps |
Point-to-Site VPN | 1 | 100 | 500 Mbps |
az network vpn-gateway create \
--resource-group rg-vwan-prod \
--name vpngw-eastus-prod \
--vhub vhub-eastus-prod \
--location eastus \
--scale-unit 2 \
--bgp-settings asn=65515 \
--tags gateway-type=site-to-site region=eastus
Parameter | Description | Recommendations |
---|---|---|
--scale-unit | Gateway capacity | Start with 2 units (1 Gbps) |
--bgp-settings | BGP configuration | ASN should be unique per region |
--vhub | Target Virtual Hub | Hub must be in same region |
az network express-route-gateway create \
--resource-group rg-vwan-prod \
--name ergw-eastus-prod \
--location eastus \
--virtual-hub vhub-eastus-prod \
--min-scale-units 1 \
--max-scale-units 2 \
--tags gateway-type=expressroute region=eastus
Parameter | Description | Impact |
---|---|---|
--min-scale-units | Minimum capacity | Always-on bandwidth (2 Gbps) |
--max-scale-units | Maximum capacity | Burst capacity (4 Gbps) |
az network p2s-vpn-gateway create \
--resource-group rg-vwan-prod \
--name p2sgw-eastus-prod \
--location eastus \
--scale-unit 1 \
--vhub vhub-eastus-prod \
--vpn-server-config p2s-config-prod \
--address-space 172.16.0.0/16 \
--tags gateway-type=point-to-site region=eastus
az network vhub route-table create \
--resource-group rg-vwan-prod \
--vhub-name vhub-eastus-prod \
--name rt-dmz-prod \
--labels DMZ Security \
--routes destination_type=CIDR \
destinations=10.100.0.0/16 \
next_hop_type=ResourceId \
next_hop=/subscriptions/{subscription-id}/resourceGroups/rg-vwan-prod/providers/Microsoft.Network/azureFirewalls/fw-hub-prod
Parameter | Description | Example Values |
---|---|---|
--labels | Route table categorization | DMZ, Production, Development |
destination_type | Route destination type | CIDR, ResourceId |
next_hop_type | Next hop type | ResourceId, IPAddress |
az network vhub connection create \
--resource-group rg-vwan-prod \
--vhub-name vhub-eastus-prod \
--name conn-dmz-vnet \
--remote-vnet /subscriptions/{subscription-id}/resourceGroups/rg-vwan-prod/providers/Microsoft.Network/virtualNetworks/vnet-dmz-prod \
--associated-route-table rt-dmz-prod \
--propagated-route-tables rt-dmz-prod defaultRouteTable \
--labels DMZ
az network vnet create \
--resource-group rg-vwan-prod \
--name vnet-nva-prod \
--location eastus \
--address-prefixes 10.50.0.0/16 \
--subnet-name subnet-nva-external \
--subnet-prefixes 10.50.1.0/24 \
--tags purpose=nva-security tier=premium
az network vnet subnet create \
--resource-group rg-vwan-prod \
--vnet-name vnet-nva-prod \
--name subnet-nva-internal \
--address-prefixes 10.50.2.0/24
az network vnet subnet create \
--resource-group rg-vwan-prod \
--vnet-name vnet-nva-prod \
--name subnet-nva-management \
--address-prefixes 10.50.3.0/24
az network vhub connection create \
--resource-group rg-vwan-prod \
--vhub-name vhub-eastus-prod \
--name conn-nva-prod \
--remote-vnet vnet-nva-prod \
--enable-internet-security true \
--routing-configuration associated-route-table=defaultRouteTable \
propagated-route-tables=defaultRouteTable \
static-routes='[{"name":"nva-route","address-prefixes":["0.0.0.0/0"],"next-hop-ip-address":"10.50.2.10"}]'
Parameter | Description | Impact |
---|---|---|
enable-internet-security | Internet traffic inspection | Routes internet traffic through NVA |
static-routes | Custom route injection | Defines traffic flow patterns |
next-hop-ip-address | NVA internal interface IP | Must match NVA configuration |
#!/bin/bash
# Set variables
RESOURCE_GROUP="rg-vwan-prod"
LOCATION="eastus"
VWAN_NAME="vwan-global-prod"
HUB_NAME="vhub-eastus-prod"
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
echo "š Starting Azure Virtual WAN deployment..."
# Step 1: Create Resource Group
echo "š Creating resource group..."
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION \
--tags environment=production project=networking
# Step 2: Create Virtual WAN
echo "š Creating Virtual WAN..."
az network vwan create \
--resource-group $RESOURCE_GROUP \
--name $VWAN_NAME \
--location $LOCATION \
--type Standard \
--disable-vpn-encryption false \
--allow-branch-to-branch-traffic true \
--allow-vnet-to-vnet-traffic true
# Step 3: Create Virtual Hub
echo "š¢ Creating Virtual Hub..."
az network vhub create \
--resource-group $RESOURCE_GROUP \
--name $HUB_NAME \
--vwan $VWAN_NAME \
--location $LOCATION \
--address-prefix 10.1.0.0/16 \
--sku Standard
# Step 4: Deploy VPN Gateway
echo "š Deploying VPN Gateway..."
az network vpn-gateway create \
--resource-group $RESOURCE_GROUP \
--name vpngw-eastus-prod \
--vhub $HUB_NAME \
--location $LOCATION \
--scale-unit 2 \
--bgp-settings asn=65515
# Step 5: Deploy ExpressRoute Gateway
echo "ā” Deploying ExpressRoute Gateway..."
az network express-route-gateway create \
--resource-group $RESOURCE_GROUP \
--name ergw-eastus-prod \
--location $LOCATION \
--virtual-hub $HUB_NAME \
--min-scale-units 1 \
--max-scale-units 2
echo "ā
Virtual WAN deployment completed successfully!"
echo "š Verify deployment in Azure Portal or using 'az network vwan show' command"
This comprehensive guide provides a complete Virtual WAN implementation covering SKU selection, multi-region architecture design, gateway deployment with proper scaling, advanced routing configuration, and third-party NVA integration. The modular approach allows you to implement components based on your specific requirements while maintaining a scalable and secure network architecture.
Key Benefits Achieved: