system-resolved
En av de mest spännande (?) nya funktionerna i Linux-världen de senaste åren är Systemd, Lennart Poetterings nya svit av systemkomponenter som ersätter diverse olika system för init-hantering, nätverk, loggning osv så vidare.
Tanken är bra men enkelheten i de tidigare systemen ersattes av en helt annan nivå av komplexitet, och transparansen försvann ut ur fönstret. Så när man dyker på problem med systemd-komponenter så är det lite mer komplicerat att lösa än att kika i systemloggen och ändra i en konfigurationsfil.
Det senaste jag brottades med var systemd-resolvd som en tid efter en uppgradering av Ubuntu från 16.04 till 22.04 slutade svara på DNS-uppslag. Filen /etc/resolv.conf var inte tom men pekade mot den lokala systemd-resolved-tjänsten och efter en del grävande kunde jag konstatera att den i sin tur inte hade någon intern lista på DNS-servrar, trots att dessa fanns konfigurerade i nätverkskonfigurationen.
> resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
DNS Domain: DOMAINS
Link 2 (ens160)
...
> cat /run/systemd/resolve/resolv.conf
# This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
search DOMAINS
Inga DNS-servrar fanns tillgängliga för systemd-resolved att fråga.
Så efter ytterligare lite grävande hittade jag att det gick att manuellt konfigurera DNS-servrar genom att skapa en lokal konfigfil och konfigurera servrarna i den.
> sudo mkdir -p etc/systemd/resolved.conf.d
> sudo nano /etc/systemd/resolved.conf.d/dns_servers.conf
[Resolve]
DNS=<server-ip-1> <server-ip-2> <server-ip-3>
Domains=~.
Därefter räckte det med en omstart av systemd-resolved för att applicera förändringarna.
> sudo systemctl restart systemd-resolved
Därefter körde jag om de första kommandona, och fick ett helt annat svar.
> resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
Current DNS Server: <server-ip-1>
DNS Servers: <server-ip-1> <server-ip-2> <server-ip-3>
DNS Domain: ~.
Link 2 (ens160)
...
> cat /run/systemd/resolve/resolv.conf
# This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver <server-ip-1>
nameserver <server-ip-2>
nameserver <server-ip-3>
search DOMAINS
En sista koll med nslookup verifierade att allt återigen fungerade.
Pust och frust.