After setting up Tailscale Funnel to publicly expose self-hosted services (Home Assistant, Nextcloud), certain devices couldn't access the Funnel URLs (https://homelab.taile97128.ts.net and https://homelab.taile97128.ts.net:8443), while others worked fine.
- Laptop (macOS, Tailscale running): ✅ Works
- Laptop (macOS, Tailscale off): ❌ Cannot load
- iPhone (NextDNS enabled): ❌ Cannot load (Safari, any browser)
- iPhone (NextDNS disabled): ✅ Works
- Wife's iPhone (NextDNS enabled): ❌ Cannot load
- NextDNS logs showed no blocked queries for
*.ts.net— the domain resolved successfully - DNS resolution via
dns.googleon the phone returned the correct Funnel IPs (208.111.34.11,208.111.35.209) digandnslookupfrom other machines all resolved correctly- iCloud Private Relay was suspected but wasn't the cause
A NextDNS DNS Rewrite rule was configured:
*.taile97128.ts.net → 100.101.93.128
This rewrote the public Funnel IPs to a Tailscale-internal IP (100.x.x.x range).
- When Tailscale VPN is connected, the device can route to
100.101.93.128→ works - When Tailscale VPN is off (or not installed),
100.101.93.128is unreachable → connection hangs silently
This rewrite was likely set up before Funnel existed, to route ts.net domains directly to the Tailscale node. But once Funnel was enabled, it broke public access for any device going through NextDNS without an active Tailscale connection.
- No "blocked" log entries — DNS rewrites aren't logged as blocks in NextDNS
- DNS resolved successfully — the rewrite returns an IP (just the wrong one for non-Tailscale devices)
- Worked on some devices — any device with Tailscale running could reach the internal IP
- External DNS tests passed —
dig @8.8.8.8anddig @45.90.28.0bypass the per-config rewrite rules
Delete the DNS rewrite rule in NextDNS dashboard:
NextDNS → Settings → Rewrites → Remove *.taile97128.ts.net → 100.101.93.128
Without the rewrite, *.taile97128.ts.net resolves to the real Tailscale Funnel IPs, which are publicly accessible from any device.
- DNS rewrites are invisible failures — they don't show up as blocks, and the domain "resolves" successfully (just to the wrong IP)
- Tailscale Funnel and DNS rewrites to internal IPs are incompatible — Funnel is designed for public access; rewriting to
100.xdefeats its purpose - Test from a device without Tailscale when debugging Funnel issues
- Check NextDNS Rewrites tab, not just the Logs/Security/Privacy tabs, when troubleshooting resolution issues