Here is additional diagnostics
Azure Standard Public IP unreachable from the internet but reachable from inside the same VNet — causing Front Door 504s (AKS Standard LB origin)
Environment
- Front Door Standard profile: raar-dev-afd (resource group raar-dev-rg), endpoint raar-dev-endpoint-aqaef0bjd3aagzbx.z03.azurefd.net, provisioningState: Succeeded.
- Custom domains: dev.raarventures.com, api.dev.raarventures.com (both routes enabledState: Enabled, provisioningState: Succeeded).
- Origin groups: raar-dev-origin-group / raar-dev-api-origin-group, each with a single origin pointing at raar-dev-ingress.eastus.cloudapp.azure.com → public IP 172.171.83.113, health probe HTTPS GET on /legal/terms and /health/ready respectively, 30s interval.
- Origin is an AKS (raar-dev-aks, K8s 1.35.6) ingress-nginx controller Service of type LoadBalancer, backed by the standard AKS-managed Azure Standard Load Balancer (kubernetes LB in MC_raar-dev-rg_raar-dev-aks_eastus), Standard SKU public IP, zone-redundant (zones 1,2,3), ddosSettings.protectionMode: VirtualNetworkInherited.
Symptom
Every client request to both custom domains returns HTTP/2 504 directly from the Front Door edge (content-type: text/html, content-length: 2061, cache-control: no-store, x-cache: CONFIG_NOCACHE — Front Door's own generic 504 page, not a proxied response from origin).
TrackingReferences for support to pull
- 20260815T232753Z-1769666fcd6f2hqdhC1PHLkbac000000087g000000003rgf (dev.raarventures.com, 2026-08-15T23:27:53Z)
- 20260815T232801Z-1769666fcd66d76rhC1PHLkrbc000000076g00000000c8u5 (api.dev.raarventures.com, 2026-08-15T23:28:01Z)
- 20260815T233340Z-r15f8ccd5fb8rxq6hC1IADvp6n00000035ag000000005g3c (dev.raarventures.com, 2026-08-15T23:33:40Z)
- 20260815T233348Z-r15f8ccd5fbqg54shC1IADps8000000035800000000038v8 (api.dev.raarventures.com, 2026-08-15T23:33:48Z)
- 20260815T235446Z-17b47974d968p7sdhC1BL1rqw400000003u0000000001kx6 (dev.raarventures.com, 2026-08-15T23:54:46Z)
- 20260815T235455Z-17b47974d966sz7fhC1BL1mgwc000000046g000000003dyb (api.dev.raarventures.com, 2026-08-15T23:54:55Z)
⭐ Decisive finding: internal-good / external-bad on the same VIP
From a pod inside the AKS cluster's own VNet, hitting the public LB frontend IP directly returns a clean success:
curl -H "Host: dev.raarventures.com" https://172.171.83.113/legal/terms → HTTP 200
Both backend NodePorts (30575 HTTP, 32764 HTTPS) also respond correctly from inside the cluster, on both nodes.
From outside — my own machine, and Front Door's global edge network — the exact same IP times out completely:
curl -H "Host: dev.raarventures.com" https://172.171.83.113/legal/terms → connection timeout
This proves the backend, Service, Endpoints, kube-proxy, and LB backend pool are all healthy and correctly configured — the failure is isolated to the internet-to-VIP path specifically, not to anything in our Kubernetes or LB configuration.
Supporting metrics (Azure Monitor, sampled over ~1 hour)
- Front Door raar-dev-afd: RequestCount nonzero (client traffic reaching the edge, 7–27 req/min), OriginHealthPercentage = 0.0% every interval, OriginRequestCount = 0 (Front Door never forwards to origin), Percentage5XX 60–100%+, WebApplicationFirewallRequestCount tracks RequestCount ~1:1 (WAF evaluating normally, not blocking).
- AKS-managed Load Balancer (kubernetes, RG MC_raar-dev-rg_raar-dev-aks_eastus): VipAvailability = 0.0%, DipAvailability = 0.0% for the full window — Azure's own external synthetic monitoring, consistent with the external-unreachability finding above.
What we've ruled out ourselves
- DNS resolves correctly.
- ingress-nginx-controller pod 1/1 Running; Service has valid Endpoints.
- kube-proxy healthy on both nodes, iptables rules synced with no errors.
- No Kubernetes NetworkPolicy restricting the ingress-nginx namespace.
- No VMSS Application Health Extension in play (not installed on this node pool).
- LB rules/health-probe settings/backend pool correctly reference both VMSS NodePorts and both instance NICs, all provisioningState: Succeeded.
- Custom NSG rule explicitly allows Internet → 172.171.83.113:80,443.
- Public IP SKU (Standard) matches LB SKU (Standard) — no SKU mismatch.
- WAF evaluating traffic normally, not blocking (response isn't a WAF block page).
- deploymentStatus: NotStarted on the Front Door endpoint/routes/origin groups — per prior guidance this is believed cosmetic when provisioningState: Succeeded; not treated as root cause here.
What we could not do ourselves
- Network Watcher IP Flow Verify against the actual LB health-probe source — Azure rejects 168.63.129.16 as a "restricted/virtualized address," so we can't directly simulate/verify the probe path via that tool.
- Diagnostic logs still not flowing — a diagnostic setting was added on raar-dev-afd (FrontDoorAccessLog/FrontDoorHealthProbeLog/FrontDoorWebApplicationFirewallLog → Log Analytics, logAnalyticsDestinationType: Dedicated). 30+ minutes later, none of the three resource-specific tables have even been created in the workspace. Is this expected, or is something blocking first-time table provisioning?
- We have only one external vantage point confirming the timeout (our own network) — corroborated by Front Door's globally-distributed health probes also failing uniformly, which suggests it isn't a local/single-path issue, but we can't independently verify from a second unrelated network ourselves as conclusively as Microsoft's internal tooling could.
Core question
A Standard Public IP (172.171.83.113, zone-redundant, provisioningState: Succeeded) backing a Standard Load Balancer is reachable and returns correct responses from inside its own VNet, but times out for all internet-sourced traffic, including Azure Front Door's own globally-distributed health probes. NSG, backend health, Service/Endpoints, and kube-proxy are all confirmed correct. What would cause a Standard Public IP to stop accepting internet-sourced traffic while remaining reachable intra-VNet, and how can we get visibility into whether this is an edge-route/BGP-advertisement issue on Microsoft's side for this specific IP?