systemd/resolved can't enable mdns permanently
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| systemd (Ubuntu) |
Expired
|
Undecided
|
Unassigned | ||
Bug Description
I currently ran into the problem, that systemd (i.e. its resolved) cannot properly configured to run with mdns.
I'm currently setting up some machines in a network with a poor router which routes and offers DHCP, but does not put the DHCP clients into a DNS domain, so the machines need to use mdns to find each other.
In order to have systemd/resolved use mdns, two steps are necessary:
1. MulticastDNS=yes must be put into /etc/systemd/
2. It must be enabled per interface. On the command line this can be done with
resolvectl mdns eth0 yes
result:
# resolvectl mdns
Global: yes
Link 63 (eth0): yes
and it works.
Problem: It cannot be done automatically in a server/LXD image. Im having this problem inside the LXD 22.04 image.
a) man pages suggest that /etc/systemd/
[Match]
Name=eth0
[Network]
MulticastDNS=yes
would do the job, but it doesn't. It seems to be completely ignored.
The reason seems to be that
networkctl status eth0
shows
so it seems to be overridden by netplan.
b) netplan itself does not seem to support the MulticastDNS settings.
c) On Desktop Machines I found a workaround with NetworkManager, but on server and LXD images, Network Manager does not exist.
So I do not see a way to have this configured permanently (other than writing a systemd unit).
But:
I need to configure the machines / LXD machines using cloud-init, in order to have the installation pull packages from a server to be found with mdns.
I tried to run
resolvectl mdns eth0 yes
as a bootcmd in Cloud-init, but this has no effect, because it is too early.
I tried to run it as a runcmd, and it works but it is too late, because package installation has already failed.
So where in this scrub between systemd and netplan could mdns be enabled in a way, that the automatic installation would work?

You can use a drop-in configuration to achieve this:
$ cat /etc/systemd/ network/ 10-netplan- eth0.network. d/mdns. conf
[Match]
Name=eth0
[Network]
MulticastDNS=yes
This will basically append the MulticastDNS option to the existing netplan-generated network configuration. Does that solve your problem?