Virtual WAN Traffic Needs Control? Configure Routing Intent

Published on:

The CloudTrips Virtual WAN hub automatically exchanges routes between its connected VNets. That provides connectivity, but it does not guarantee that traffic passes through a central security control.

Routing intent declares that an entire category of traffic must use a security solution in the virtual hub as its next hop. It controls the path; the firewall policy separately decides which connections are allowed or denied.

This trip adds an Azure Firewall to the existing hub and sends private traffic through it. Internet routing remains unchanged.

This trip builds on: Global Branch Network Needs a Hub? Create Virtual WAN. If you deleted that lab, follow the previous trip again through Verify the Managed Routes to recreate its resource group, Virtual WAN, virtual hub, two test VNets, and two VNet connections. Do not run its cleanup before continuing here.

Understand the Two Policies

Routing intent supports two broad traffic categories:

Private traffic
  -> traffic between VNets, branches, and virtual hubs
  -> includes 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16 by default

Internet traffic
  -> traffic whose destination is 0.0.0.0/0

CloudTrips will configure only Private traffic. The intended path becomes:

App VNet -> Virtual Hub -> Azure Firewall -> Virtual Hub -> Services VNet

Without routing intent, the managed hub router sends traffic directly between the two VNet connections. Routing intent makes Azure maintain the necessary hub routes automatically; no UDR is attached to either workload subnet.

Check the Existing Hub Routing

Open vwan-cloudtrips-test, select Connectivity > Hubs, and open vhub-cloudtrips-test-weu.

Under Routing, open Route Tables and select Default. Its underlying resource name is defaultRouteTable. Do not select None, whose resource name is noneRouteTable. Confirm that Default has no custom static routes. The VNet prefixes shown under effective routes are dynamically learned and do not need to be removed.

An empty route list on the Basics tab is the expected result here. That tab shows manually configured static routes, not routes dynamically learned from the VNet connections. Do not select + Add route. Learned routes are viewed separately under Effective Routes.

Do not change Propagations in this route-table editor. The portal can show No and 0 selected and restore those values after saving. This is expected because CloudTrips has no VPN, ExpressRoute, or User VPN branch connections to select here. The two VNet connections already carry their own routing configuration, and routing intent will manage their route association and propagation automatically.

Do not create another route table; routing intent requires the built-in defaultRouteTable and noneRouteTable only.

Create a Firewall Policy

Search the portal for Firewall Manager, open Azure Firewall Policies, and select Create Azure Firewall Policy.

Configure:

Subscription: CloudTrips TEST
Resource group: rg-cloudtrips-vwan-test-weu
Name: afwp-cloudtrips-vwan-test
Region: West Europe
Policy tier: Basic
Parent policy: None

Use Basic for this short routing exercise. Standard or Premium is required only when the workload needs their additional inspection capabilities. Leave the policy without custom rules; Azure Firewall denies unmatched traffic by default.

Select Review + create, and then select Create.

Azure Firewall Policies page showing afwp-cloudtrips-vwan-test created with the Basic tier

Add Azure Firewall to the Virtual Hub

Return to vhub-cloudtrips-test-weu. Under Security, select Azure Firewall and Firewall Manager, and select Next: Azure Firewall at the bottom of the page.

Do not select Create new secured virtual hub from the general Firewall Manager page. That action creates another hub. Because vhub-cloudtrips-test-weu is already open, Next: Azure Firewall converts this existing hub by installing Azure Firewall in it. The correct wizard asks for firewall settings; it does not ask for another hub name or hub address space.

Select Deploy a firewall with an existing policy. This deploys a new Azure Firewall inside the existing virtual hub and associates the policy created in the previous step. Do not choose the option that creates another policy.

Enable Azure Firewall and configure:

Firewall tier: Basic
Firewall policy: afwp-cloudtrips-vwan-test
Public IP addresses: Keep the minimum offered by the portal

Leave trusted security partners disabled. Review the configuration and start the deployment. Azure creates the firewall inside the Microsoft-managed hub; you do not create AzureFirewallSubnet yourself.

Wait until the hub shows Secured and the Azure Firewall provisioning state is Succeeded. Also wait until the virtual hub is no longer Updating and its routing state is Provisioned. Deployment can take 20–30 minutes, and routing intent must not be saved while the hub is still updating.

CloudTrips virtual hub showing its integrated Azure Firewall and Secured status

Azure Firewall and the secured virtual hub are billable while provisioned. Complete the remaining steps and cleanup in the same lab session.

The hub is now capable of inspecting traffic, but simply installing a firewall does not yet force the VNet connections to use it.

Configure Private-Traffic Routing Intent

In vhub-cloudtrips-test-weu, select Routing > Routing Intent and Routing Policies.

Configure:

Private traffic: Select the Azure Firewall in vhub-cloudtrips-test-weu
Internet traffic: None

Routing Intent and Routing Policies page sending private traffic through the hub firewall while Internet traffic remains unconfigured

Select Save. Wait until the routing-intent provisioning state is Succeeded before checking the routes. Applying the managed routes can take several additional minutes.

If an earlier attempt shows Failed with InvalidNextHop, delete that failed routing intent. Confirm that the hub routing state is Provisioned and the firewall state is Succeeded, then configure and save it again. The firewall and its policy do not need to be recreated.

The private policy covers both temporary VNet prefixes because they are inside 10.0.0.0/8. Internet traffic is not redirected in this trip, so routing intent does not add a 0.0.0.0/0 policy route.

Verify the Generated Route

Under Routing, open Effective Routes and select Default (defaultRouteTable). Confirm that the effective routes include:

Destinations: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
Next hop: Azure Firewall

The portal can display the generated route as _policy_PrivateTraffic, use a different policy-managed name, or omit its name from the effective-routes view. The name is not the verification target. Do not select + Add route and do not create this route manually; routing intent owns it. If the prefixes are not visible, confirm that both the firewall and routing intent show Succeeded, wait several minutes, and refresh Effective Routes.

If Effective Routes shows only 10.71.0.0/16 and 10.72.0.0/16 with next hop type Virtual Network Connection, routing intent has not taken effect yet. Return to Routing Intent and Routing Policies, confirm the private traffic selection, and select Save.

Virtual hub Effective Routes showing the private address ranges with Azure Firewall as their next hop

This is the important result: routing intent manages the VNet connections’ route associations and propagation, then programs Azure to send private traffic to the firewall. If the firewall policy allows a packet, Virtual WAN forwards it to the final VNet destination.

No VMs are required for this trip. The route-table result proves control-plane configuration, not end-to-end application connectivity.

Remove the Billable Lab

First return to Routing Intent and Routing Policies, remove the private traffic selection, and save. Wait until the policy has been removed before deleting its next hop.

Under Security, open Azure Firewall and Firewall Manager and delete the Azure Firewall from the virtual hub. After the firewall is gone, delete afwp-cloudtrips-vwan-test.

If the complete Virtual WAN lab is finished, delete both VNet connections, then delete vhub-cloudtrips-test-weu and vwan-cloudtrips-test. Finally, delete rg-cloudtrips-vwan-test-weu, which also removes the two temporary VNets.