Repository navigation
[Spectrum] Document IP Access Rules blocking health checks - #32137
Conversation
Split out from cloudflare#30683 per reviewer request to allow more time to verify the allowlist/health-check mechanism. - Add troubleshooting section for health checks failing when IP Access Rules use an allowlist model - Add caution + note callouts in configuration-options.mdx - Add caution callout in the Load Balancing Spectrum setup guide
AI Review✅ Reviewed Commands
|
…split health checks Per review feedback on cloudflare#30683: - Move the 'Health checks fail when IP Access Rules are enabled' section and related callouts to a separate PR (cloudflare#32137) so this PR isn't blocked while the mechanism is verified. - Clarify that the DNS record conflict is specifically between a manually-created proxied record and a Spectrum application, not between Spectrum applications themselves. Multiple Spectrum applications (including a mix of HTTP/HTTPS and TCP/UDP) can share a hostname because Spectrum manages the DNS record for each. - Align the double-proxy caution in configuration-options.mdx with the troubleshooting page: TCP applications surface a failed origin TLS handshake as 521/522, not error 525, which is HTTP/HTTPS-app specific.
…split health checks Per review feedback on cloudflare#30683: - Move the 'Health checks fail when IP Access Rules are enabled' section and related callouts to a separate PR (cloudflare#32137) so this PR isn't blocked while the mechanism is verified. - Clarify that the DNS record conflict is specifically between a manually-created proxied record and a Spectrum application, not between Spectrum applications themselves. Multiple Spectrum applications (including a mix of HTTP/HTTPS and TCP/UDP) can share a hostname because Spectrum manages the DNS record for each. - Align the double-proxy caution in configuration-options.mdx with the troubleshooting page: TCP applications surface a failed origin TLS handshake as 521/522, not error 525, which is HTTP/HTTPS-app specific.
…split health checks Per review feedback on cloudflare#30683: - Move the 'Health checks fail when IP Access Rules are enabled' section and related callouts to a separate PR (cloudflare#32137) so this PR isn't blocked while the mechanism is verified. - Clarify that the DNS record conflict is specifically between a manually-created proxied record and a Spectrum application, not between Spectrum applications themselves. Multiple Spectrum applications (including a mix of HTTP/HTTPS and TCP/UDP) can share a hostname because Spectrum manages the DNS record for each. - Align the double-proxy caution in configuration-options.mdx with the troubleshooting page: TCP applications surface a failed origin TLS handshake as 521/522, not error 525, which is HTTP/HTTPS-app specific.
* Add Spectrum troubleshooting page and improve docs for top support case drivers
Based on analysis of April 2026 Network SBR cases, add documentation
to address the top 3 case-generating Spectrum issues:
1. IP Access Rules + Health Checks interaction: Customers enable IP
Access Rules on Spectrum apps, then Cloudflare health checks fail
because probe IPs are blocked. Added warnings to configuration-options
and load-balancing/spectrum pages.
2. Same hostname for WAF + Spectrum: Customers attempt to use the same
hostname for HTTP (WAF) and TCP (Spectrum) on different ports. This
is a platform limitation. Added new section to limitations page and
cross-reference on DNS troubleshooting page.
3. Edge TLS / Protocol mismatch: Customers configure HTTP edge ports
expecting HTTPS to origin. Spectrum does not upgrade protocols.
Added warnings to Edge TLS Termination section.
Also:
- Created new /spectrum/reference/troubleshooting/ page with structured
symptom/cause/solution sections for all three issues plus error 525
and common status code patterns
- Added note to /spectrum/reference/logs/ clarifying that Spectrum
status codes are distinct from HTTP status codes
* [Spectrum] Address docs bot style review feedback
Fix style guide violations flagged by cloudflare-docs-bot:
- Use 'turn on' instead of 'enable' for toggles
- Use bullet points for unordered causes, numbered list for sequential steps
- Remove -ing verb from heading ('Understanding common...' -> 'Common...')
- Replace 'the table below' with direct reference
- Replace 'etc.' with 'and similar'
- Monospace DNS record types (A, AAAA, CNAME)
- Add introductory sentence before status code table
- Convert two-item symptom list to prose
- Fix TLS mode guidance to specify Full/Full (Strict) instead of generic 'enabled'
- Fix broken cross-links to removed limitations.mdx anchors
* [Spectrum] Address remaining docs bot review feedback
- Reframe error 525 section around TLS handshake failures with
Spectrum event log code 540, clarify HTTP 525 applies only to
HTTP/HTTPS-type applications
- Update DNS records-with-same-name cross-link to point to the
troubleshooting page (which documents the workaround) instead
of the limitations page (which does not)
- Monospace status code examples (444, 499) in logs.mdx
- Update anchor in configuration-options.mdx to match renamed heading
* [Spectrum] Monospace status code 525 in troubleshooting and config-options
* [Spectrum] Fix incorrect status code 540 reference in TLS handshake section
Replace 540 (client/edge TLS failure) with origin-side error codes
520/521/522 which correctly describe edge-to-origin connection failures.
540 refers to the client-to-edge handshake per the Spectrum logs
reference, not edge-to-origin.
* [Spectrum] Clarify TLS failure symptoms by application type
Separate TCP and HTTP/HTTPS symptoms: Edge TLS Termination applies
to TCP apps (origin errors 521/522), while error 525 applies to
HTTP/HTTPS apps. Avoids conflating transport-level connection codes
with TLS handshake failures.
* [Spectrum] Clarify why TLS failures surface as 521/522 in event logs
Spectrum has no dedicated origin-side TLS handshake status code.
A failed TLS handshake at the origin is reported as an origin
connection failure (521/522). Added explanation and cross-link
to the Event logs reference.
* [Spectrum] Address review feedback: hostname clarification, 525 fix, split health checks
Per review feedback on #30683:
- Move the 'Health checks fail when IP Access Rules are enabled'
section and related callouts to a separate PR (#32137) so this PR
isn't blocked while the mechanism is verified.
- Clarify that the DNS record conflict is specifically between a
manually-created proxied record and a Spectrum application, not
between Spectrum applications themselves. Multiple Spectrum
applications (including a mix of HTTP/HTTPS and TCP/UDP) can share
a hostname because Spectrum manages the DNS record for each.
- Align the double-proxy caution in configuration-options.mdx with
the troubleshooting page: TCP applications surface a failed origin
TLS handshake as 521/522, not error 525, which is HTTP/HTTPS-app
specific.
|
Suggested fixes for IP Access Rules + health checks content The current troubleshooting section says: "consider configuring health checks to use a TCP check type... and manage your access control at the origin level instead." That appears to be technically misleading. IP Access Rules on a Spectrum application evaluate every incoming TCP connection based on source IP, so switching from HTTP to TCP health checks does not bypass the block — the probe's TCP connection is still rejected before the health-check protocol is negotiated.
Health checks fail when IP Access Rules are enabledApplies toThis issue applies when a Spectrum application is the target of a health check:
This issue does not apply when the Spectrum application's origin is a Load Balancer hostname. In that architecture, the Load Balancer monitor probes the origin servers directly, not through the Spectrum application, so IP Access Rules on the Spectrum app do not affect the monitor. Symptoms
CauseWhen you turn on IP Access Rules on a Spectrum application, all incoming connections are evaluated against your rules based on source IP — including connections from Cloudflare's own health check probes. If your rules use an allowlist model (allow specific IPs, block all others), Cloudflare's health check source IPs will be blocked. Switching the health check from HTTP to TCP does not bypass IP Access Rules, because the rules evaluate the incoming connection before the health-check protocol is negotiated. SolutionAdd Cloudflare's IP ranges to your IP Access Rules allowlist. You can find the current list of Cloudflare IP addresses at cloudflare.com/ips. If you need to restrict client access but cannot allowlist Cloudflare IPs on the Spectrum application, move access control to your origin instead of using IP Access Rules on the Spectrum app. If IP Access Rules remain enabled without allowing Cloudflare probe IPs, health checks will continue to fail. This does not apply when the Spectrum application's origin is a Load Balancer hostname. In that architecture, the monitor probes the origin directly and is not affected by IP Access Rules on the Spectrum app. |
|
Hey there, we've marked this pull request as stale because there's no recent activity on it. This label helps us identify PRs that might need updates (or to be closed out by our team if no longer relevant). |
Per review feedback on this PR: - Troubleshooting: add an 'Applies to' section scoping the issue to Spectrum apps targeted by a standalone Health Check or LB monitor (not apps whose origin is an LB hostname), clarify that switching HTTP to TCP health checks does not bypass IP Access Rules, and remove the misleading TCP-check-type alternative. - Load Balancing setup guide: scope the caution callout to Spectrum apps used as LB endpoints and exclude origin-is-LB-hostname setups. - Configuration options: reword the caution so the limitation is not overstated; Custom Rules note unchanged.
Resolve conflict in spectrum/reference/troubleshooting.mdx by keeping both sides: the 'Health checks fail when IP Access Rules are enabled' section from this PR (in its original position after the virtual network origins content, matching the pre-split ordering) followed by the case-driven sections added to production via cloudflare#30683 (DNS record conflict, protocol mismatch, error 525, status codes).
Summary
Split out of #30683 at the reviewer's request — see this comment:
Changes
spectrum/reference/troubleshooting.mdx— New "Health checks fail when IP Access Rules are enabled" section (symptoms/cause/solution) covering the allowlist-model blocking Cloudflare's health check probes.spectrum/reference/configuration-options.mdx— Caution callout under IP Access rules warning about health check impact, plus a note that Custom Rules (WAF) do not apply to TCP/UDP Spectrum applications.load-balancing/additional-options/spectrum.mdx— Matching caution callout in the Monitors step of the Spectrum load balancing setup guide.Content area
Spectrum, Load Balancing