Skip to content

Conversation

@jmwample
Copy link
Contributor

@jmwample jmwample commented Nov 20, 2025

In the VPN client there are settings specifically intended to control how the library interacts with the IPv6 network stack. This is because some platforms do weird things and actually throw errors if IPv6 is used, so preventing the client from attempting IPv6 can be important in some cases.

This is a challenge with the custom DNS resolver as the hickory-resolver crate that we use provides no controls to indicate that an outgoing lookup should use only IPv4 nameservers or only IPv6 (or both).

Also there is an issue of randomness even when IPv6 doesn’t cause explicit problems where the resolver selecting nameservers to do a resolution could select IPv6 nameservers (because they are configured) even when the IPv6 network will be unreachable - i.e. the networking stack supports IPv6 but the device isn’t connection with an IPv6 address.

Solution

  • Add controls to allow a configuration change that prevents hickory from using IPv6 nameservers.

  • When IPv6 is disabled, Hickory must not use IPv6 resolvers.

See NET-713


This change is Reviewable

@jmwample
Copy link
Contributor Author

Hmmm. Some of the DNS related tests seem either flakey or like they are interleaving in a way that is doing bad things to the shared resolver.

@vercel
Copy link

vercel bot commented Nov 21, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
nym-explorer-v2 Ready Ready Preview Comment Nov 22, 2025 5:20pm
2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
docs-nextra Ignored Ignored Preview Nov 22, 2025 5:20pm
nym-node-status Ignored Ignored Preview Nov 22, 2025 5:20pm

@jmwample
Copy link
Contributor Author

jmwample commented Nov 21, 2025

After changing the default to use IPv4 Only nameservers the errors in the tests run as part of the github actions have gone away. However, I do not fully understand the errors so I can't say for sure that this fixed the issue and that we didn't just get lucky this time.

It seems like when the resolver chooses IPv6 in the tests in the gh action runner it times out instead of returning a network unreachable error. Which then causes other things to time out. which breaks the things I am actually trying to test.

If this is the case though, how did we not run into this issue before?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants