Skip to content

xapi/nm: Send non-empty dns to networkd when using IPv6 autoconf #6586

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

psafont
Copy link
Member

@psafont psafont commented Jul 11, 2025

Because Autoconf is not DHCP, networkd uses the dns value to write to
resolv.conf. This is done on ocaml/networkd/bin/network_server.ml line 745
This allows to have non-empty resolv.conf when using IPv6 autoconf.

This mismatch was caused byt technical debt that cause this check to be duplicated, the second removes it so
xapi decides the instances where these values are written and networkd follows that decision.

I've tested new isntallations using IPv4 and couldn't see any regression, two users have tested the patch and now the DNS entries don't get overriden when using IPv6 in Autoconf mode: xcp-ng/xcp#641 (comment)

I'd like Rob to review this approach in any case

psafont added 2 commits July 11, 2025 11:28
Because Autoconf is not DHCP, networkd uses the dns value to write to
resolv.conf. This is done on ocaml/networkd/bin/network_server.ml line 745

This allows to have non-empty resolv.conf when using IPv6 autoconf.

Signed-off-by: Pau Ruiz Safont <[email protected]>
Previously both xapi and networkd had to inspect the IP configuration to decide
whether the DNS values should be persistend into /etc/resolv.conf. This
actually lead to a mismatch in them. Instead use an option value for DNS that
simply means that if there's a value, it must be persisted.

Now xapi decides the instances where these values are written.

Signed-off-by: Pau Ruiz Safont <[email protected]>
@psafont psafont requested a review from robhoes July 11, 2025 11:12
psafont added a commit to psafont/xapi that referenced this pull request Jul 11, 2025
psafont added a commit to psafont/xapi that referenced this pull request Jul 11, 2025
psafont added a commit to psafont/xapi that referenced this pull request Jul 11, 2025
@psafont psafont marked this pull request as ready for review July 21, 2025 08:40
@minglumlu
Copy link
Member

From the discussion, especially xcp-ng/xcp#641 (comment)
I understand we still need to handle a case of SLAAC + RDNSS. The networkd will need to capture the DNS server addresses from the Router Advertisements messages and write them into /etc/resolv.conf file.

@psafont
Copy link
Member Author

psafont commented Jul 30, 2025

I understand we still need to handle a case of SLAAC + RDNSS. The networkd will need to capture the DNS server addresses from the Router Advertisements messages and write them into /etc/resolv.conf file.

Yes, this patch fixes the case where DNS is configured using IPv4 mechanisms, but not written to /etc/resolv.conf because IPv6 is configured in Autoconf mode.

I'm working on a design to make configuration of IP and DNS independent from each other under IPv6 mode, but that will take longer to get done. In any case RDNSS needs to be implemented independently

@minglumlu
Copy link
Member

I'd like Rob to review this approach in any case

Rob is in vacation. He will be back in 2 weeks.

but not written to /etc/resolv.conf because IPv6 is configured in Autoconf mode

Without these DNS server addresses, would the applications not be able to find DNS server to resolve their DNS name? XS doesn't have resolved running in dom0? Or I'm missing something. Anyway this could be resolved in your design.

@psafont
Copy link
Member Author

psafont commented Aug 1, 2025

Without these DNS server addresses, would the applications not be able to find DNS server to resolve their DNS name? XS doesn't have resolved running in dom0? Or I'm missing something. Anyway this could be resolved in your design.

The glibc function gethostbynameuses the resolv.conf file to know what IP to send the DNS requests to. So having the empty file means that some processes are unsable to send DNS requests if the file is empty.

This is an independent matter from the new design, the new design is meant to configure the IP addresses (yes, plural) of each PIF independently from its DNS configuration.

@0lini
Copy link

0lini commented Aug 1, 2025

An example for something that doesn't work when DNS is empty, is yum update.

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.

4 participants