mirror of
https://github.com/hickory-dns/hickory-dns.git
synced 2026-04-25 11:15:54 +03:00
[GH-ISSUE #1637] [trust-dns-resolver] v19.7 and v20.4 seem to have problems resolving with system config when two nameservers are provided in /etc/resolv.conf #716
Labels
No labels
blocked
breaking-change
bug
bug:critical
bug:tests
cleanup
compliance
compliance
compliance
crate:all
crate:client
crate:native-tls
crate:proto
crate:recursor
crate:resolver
crate:resolver
crate:rustls
crate:server
crate:util
dependencies
docs
duplicate
easy
easy
enhance
enhance
enhance
feature:dns-over-https
feature:dns-over-quic
feature:dns-over-tls
feature:dnsssec
feature:global_lb
feature:mdns
feature:tsig
features:edns
has workaround
ops
perf
platform:WASM
platform:android
platform:fuchsia
platform:linux
platform:macos
platform:windows
pull-request
question
test
tools
tools
trust
unclear
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hickory-dns#716
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @jofas on GitHub (Feb 16, 2022).
Original GitHub issue: https://github.com/hickory-dns/hickory-dns/issues/1637
Hi,
I have a VPN connection to my kubernetes cluster and rely on providing the nameserver of that cluster statically via the
/etc/resolv.conffile. That allows me to connect my local machine to the cluster and I can run my test suite locally, but within the environment my program will later run in.My
/etc/resolv.conflooks like this:I've run the following program, with
trust-dns-resolverv0.19.7,v0.20.4andv0.21.0-alpha.5, trying to get the ip address of a service running in my cluster:Works as expected with
v0.21.0-alpha.5, returning the ip address of that service. Bothv0.19.7(I useactixwhich relies on that version) andv0.20.4throw an error that they are unable to resolve that name. To me it seems to be an issue that twonameserverare provided, when I delete my local dns server, they are able to resolve the service name.What has changed in
v0.21.0-alpha.5compared to the older versions? And would it be possible to implement a hotfix forv0.19(andv0.20)Kind regards,
System:
linuxx86_641.58.1@djc commented on GitHub (Feb 16, 2022):
Since you have a reproducible test case already, maybe you can just use git bisect to find the offending commit?
@bluejekyll commented on GitHub (Feb 17, 2022):
I think this has to do with the trust_nx patches that went in possibly fixing this. Can you check if0.21.0.alpha.5is better?Sorry, just reread your post, I see that you did try this.
Quite a bit. We plan to release 0.21 soonish, can you use the alpha as is for now?
@bluejekyll commented on GitHub (Feb 17, 2022):
also, btw, for future reference, you can use the
resolvecommand out of thetrust-dns-utilcrate for testing the resolver and it's various configs.@jofas commented on GitHub (Feb 17, 2022):
I did as @djc suggested and bisected till I found the fixing commit. Turns out
227105a(in thev0.21.0-alpha.3release) fixes my issue.Correct me if I'm wrong, but to me it seems the commit has fixed an issue where lacking records were not treated as errors, causing the resolver not to retry (in my case causing the resolver to query a different nameserver that has the record present).
Unfortunately, I don't think that just upgrading my dependency is a viable option, because the resolver is deeply buried within the
actixframework and I don't think theactixmaintainers are very interested in updating the version of the resolver.Could I try an see if I'm able to apply the fix from
227105ato thev0.19andv0.20versions? Would you consider releasing the fix asv0.19.8/v0.20.5?@djc commented on GitHub (Feb 17, 2022):
You might be able to patch the dependency using a patch section in the Cargo manifest. (Depends if the actix code depends on APIs that changed.)
I do think it could make sense to backport that particular change, since it fixes a regression. Up to @bluejekyll if he's up for publishing updates to crates.io though.
@jofas commented on GitHub (Feb 17, 2022):
Thanks for the tip. I tried to patch it but there's a version conflict for tokio.
actix-web v3still relies on thetokio v0.2runtime and does not yet supportv1, unfortunately.@bluejekyll commented on GitHub (Feb 17, 2022):
Yes, we can backport if the change isn’t significant. 0.20 seems reasonable. 0.19 tests are almost guaranteed to fail because that branch is pretty outdated. I’d be uncomfortable publishing a new patch on 0.19 at this point. It probably has audit failures as well.
@jofas commented on GitHub (Feb 17, 2022):
Yes, I thought this might be. Applying the changes from
227105atov0.20.4is relatively straight-forward (though I'm unable to get thetest_distrust_nx_responsesintegration test running).v0.19.7looks a lot different (e.g.NameServer.inner_sendreturnsProtoErrorinstead ofResolveErrorandResolveError::from_responseisn't part of the release).I think I'll just write a script that removes my local dns when I establish the VPN. Thanks for the support.