-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
systemd-resolved: failure to resolve duckduckgo.com when using 1.1.1.3 #31484
Comments
I should add that I also tested the latest commits in the main branch and the 254-stable branch and they also exhibited the same behavior. |
Additionally, changing |
Eh, CNAME at the zone apex? Isn't that illegal? Seems like a Cloudflare bug. |
Just porting my thoughs from #31699 into here. When we encounter an apex-wide CNAME while fetching the DNSKEY or DS record, we should discard them as invalid and treat the domain as a domain that has DNSSEC disabled instead of trying to verify the nonexistent signatures. |
I think you may have misunderstood what is happening here. When we are validating, every name must either be signed with a full chain of trust, or have a valid insecure delegation somewhere in its ancestry. CNAME at the zone apex is neither, as it isn't even a well-formed zone. Even non-validating recursive resolvers would be justified in rejecting such answers. However when we are not validating we aren't likely to notice this kind of error, and will return whatever the upstream recursive resolver is able to give us. dnssec=allow-downgrade is supposed give up validating if the upstream resolver doesn't appear capable of handling dnssec data, but it will still reject invalid signatures and misconfigured domains like these. In both cases this is expected behavior. You should report these errors to the domain operator, they are unmistakably incorrect. This won't be fixed in sd-resolved in the same way that sd-resolved won't hallucinate the correct answer for you were the domain operator to accidentally configure the wrong address. |
Hm, so it seems like cloudflare is bending the rules here to make validation possible:
There are worse hacks in sd-resolved in the name of compatibility I guess, so maybe we could support this idk. |
systemd version the issue has been seen with
254.8
Used distribution
Gentoo stable
Linux kernel version used
6.6.13-gentoo-dist
CPU architectures issue was seen on
x86_64
Component
systemd-resolved
Expected behaviour you didn't see
resolvectl query duckduckgo.com
successfully resolves to40.114.177.246
(safe.duckduckgo.com
)Unexpected behaviour you saw
resolvectl query duckduckgo.com
gives the errorduckduckgo.com: resolve call failed: DNSSEC validation failed: no-signature
Steps to reproduce the problem
My system uses systemd-resolved as its DNS resolver. It points to an OpenWRT router running dnsmasq as its DNS server. dnsmasq on the router is then configured to use
1.1.1.3
(Cloudflare's "1.1.1.1 for Families") as its upstream DNS server.1.1.1.3
returns a CNAME record forduckduckgo.com
pointing tosafe.duckduckgo.com
. After upgrading to systemd 254.8, my system stopped being able to resolveduckduckgo.com
. Using git bisect, I found that commit 0292727 (backported from 3b4cc14) was the first commit that exhibited the problem.Manually running
systemd-resolved
produces the following in the output when runningresolvectl query duckduckgo.com
:Also, despite
1.1.1.3
returning a similar CNAME record forwww.duckduckgo.com
, that name resolves correctly whileduckduckgo.com
does not.Additional program output to the terminal or log subsystem illustrating the issue
The text was updated successfully, but these errors were encountered: