You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
馃悰 Cloudflared tunnels failing to reach origin service that is running on a .local domain on linux聽#1723
Describe the bug
Cloudflared tunnels failing to reach origin service that is running on a .local domain on linux
To Reproduce
Steps to reproduce the behavior:
Create a new tunnel
Add a new route to a service with a hostname that uses a .local tld
Access the tunneled site
Expected behavior
The expected page content to appear
Environment and versions
OS: Linux
Architecture: ARM64, AMD64
Version: 2026.8.2
Logs and errors
2026-08-13T01:12:18Z ERR error="dial tcp: lookup server.local on 1.1.1.1:53: no such host" connIndex=0 destAddr=ssh://server.local:22 event=1 ingressRule=0 originService=ssh://server.local:22
2026-08-13T01:12:18Z ERR Request failed error="dial tcp: lookup server.local on 1.1.1.1:53: no such host" connIndex=0 dest=#### event=0 ip=### type=ws
Additional context
Tested on multiple devices, including amd64 and arm64 linux, received the same error.
However when tested on macos, it works as expected.
Are you using mDNS at all, or is .local just what you decided to use for your internal DNS entries? (fyi .internal is a reserved TLD for this purpose.. but .local has mDNS connotations)
cloudflared is written in Go, and go on linux does its own DNS resolution (not letting OS handle mDNS, for example). On Mac, it uses the OS resolver, which is why it works there.
So seems like your /etc/resolv.conf has 1.1.1.1, so Go is trying to resolve the host using that. .local works OK for me with cloudflared, but my resolv.conf contains a local resolver that can resolve my internal hostnames.
There are ways to force Go into changing that behaviour I think (GODEBUG=netdns=cgo) but not sure how reliable that is.
It depends what it is. Something like the systemd-resolved should be able to handle mDNS and also send stuff to 1.1.1.1 that can't be answered locally if you set it up properly.
Activity
phils commentedon Aug 31, 2026
Are you using mDNS at all, or is .local just what you decided to use for your internal DNS entries? (fyi .internal is a reserved TLD for this purpose.. but .local has mDNS connotations)
cloudflared is written in Go, and go on linux does its own DNS resolution (not letting OS handle mDNS, for example). On Mac, it uses the OS resolver, which is why it works there.
So seems like your /etc/resolv.conf has 1.1.1.1, so Go is trying to resolve the host using that. .local works OK for me with cloudflared, but my resolv.conf contains a local resolver that can resolve my internal hostnames.
There are ways to force Go into changing that behaviour I think (GODEBUG=netdns=cgo) but not sure how reliable that is.
NotTimIsReal commentedon Sep 3, 2026
Yes I am using mdns, does using a local resolver also resolve mdns or would I have to try the GODEBUG thing?
phils commentedon Sep 3, 2026
It depends what it is. Something like the systemd-resolved should be able to handle mDNS and also send stuff to 1.1.1.1 that can't be answered locally if you set it up properly.
NotTimIsReal commentedon Sep 3, 2026
I just setup systemd-resolvd to use dnsstublisteners but now it complains that the server is misbehaving