An Azure service that delivers high availability and network performance to applications.
The behavior matches an asymmetric routing problem: the public IP is owned by the load balancer, but SNAT state for outbound connections is on the firewall. Return traffic is hitting the load balancer instead of the firewall, so the firewall never sees the response packets and the sessions fail.
In Azure, this is a known issue when a public load balancer and Azure Firewall share the same public IP or when the default route sends traffic back through the firewall’s private IP while inbound traffic arrives via a different path.
To fix it, the public IP used for inbound and outbound must have a consistent path so that both directions traverse the same stateful device:
- Ensure the firewall is the true owner of the public IP for the flows where it performs SNAT.
- In the documented pattern, internet traffic first lands on the firewall’s public IP, then the firewall DNATs to the load balancer’s frontend IP. The firewall also performs SNAT for outbound flows, so both directions go through the firewall.
- If using a public load balancer in front of the firewall, avoid routing return traffic through the firewall’s private IP when the initial packet did not traverse that same path.
- As described, asymmetric routing occurs when a subnet has a default route to the firewall’s private IP, but inbound traffic arrives via a public load balancer frontend. The firewall is stateful and drops returning packets that don’t match an existing session.
- Use the documented workaround for public load balancer + firewall:
- Add a specific route so that traffic destined to the firewall’s public IP goes directly to the internet, bypassing the default route to the firewall’s private IP. This prevents asymmetric routing when integrating Azure Firewall with a public load balancer.
- If a NAT Gateway is involved, ensure routes and NSGs are aligned with the NAT Gateway’s public IP, not the firewall’s public IP, because the NAT Gateway’s public IP takes precedence over the firewall’s public IP.
- In that case, configure a route so the return path uses the NAT Gateway public IP as next hop “Internet” and allow that IP in NSGs.
In summary, the same public IP cannot safely be “owned” by both the load balancer and the firewall for the same flows. Either:
- Terminate inbound on the firewall’s public IP and then forward to the load balancer, letting the firewall handle both DNAT and SNAT, or
- Keep the load balancer as the public entry point and avoid using that same IP for firewall SNAT, ensuring that outbound and inbound paths are symmetric through whichever device holds the NAT state.
References: