Azure UDR Tips: Securing Azure Firewall's Direct Internet Access Amidst BGP Routes

This is true story about an 8 hour downtime incident caused by not writing a UDR.
TL;DR
Azure Firewall MUST have direct Internet connectivity. If your AzureFirewallSubnet learns a default route to your on-premises network via BGP, you must override this with a 0.0.0.0/0 UDR with the NextHopType value set as Internet to maintain direct Internet connectivity.

Apple Podcast
First try
Mandarin Podcast
How Azure selects a route
If multiple routes container the same address prefix (e.g. 0.0.0.0/0) Azure seletecs the route type based on the following priority:
- User-defined route (UDR)
- BGP route
- System default route
By default, if no configuration is performed, the System default route
will handle the 0.0.0.0/0 NH Internet
configuration. This is also one of the reasons why SNAT/DNAT can be set up to connect to Internet.
Default Route Table
Subnet Name | Priority Type | Address prefix | Next hop type | Next hop IP address |
---|---|---|---|---|
AzureFirewallSubnet | System default route | 0.0.0.0/0 | Internet | - |
Propagate gateway routes: Yes
Incident: Azure Firewall Control Plane Degraded
If you perform BGP propagates 0.0.0.0/0 from Virtual Network Gateway, due to the higher priority of UDR
and BGP routes
compared to System default routes
, improper configuration may cause abnormalities in Azure Firewall Control Plane.
Incorrect Route Table
Subnet Name | Priority Type | Address prefix | Next hop type | Next hop IP address |
---|---|---|---|---|
AzureFirewallSubnet | BGP route | 0.0.0.0/0 | Virtual Network Gateway | x.x.x.x |
Propagate gateway routes: Yes
Because Azure Firewall MUST have direct Internet connectivity, you should make sure the next hop type is Internet
Fixed: Set up UDR for AzureFirewallSubnet
At this point, we need to utiliza the fact that UDR's riority is the highest to set up a 0.0.0.0/0 NH Internet
to ensure that the AzureFirewallSubnet is directly connected to the Internet and is not affected by BGP propagation.
Correct Route Table
Subnet Name | Priority Type | Address prefix | Next hop type | Next hop IP address |
---|---|---|---|---|
AzureFirewallSubnet | User-defined route (UDR) | 0.0.0.0/0 | Internet | - |
Propagate gateway routes: Yes
