Home
» Hoe
»
DNS-zoekfouten in Debian 12: Herstel systemd-resolved
DNS-zoekfouten in Debian 12: Herstel systemd-resolved
Als Debian 12 de melding "Tijdelijke fout bij naamresolutie" weergeeft, controleer dan de resolver-service, de /etc/resolv.conflink en de DNS-servers die worden vermeld door resolvectl— in die volgorde. Het herstarten van een service helpt alleen als de service is gestopt; een kapotte link of een onbereikbare upstream-server vereist een andere oplossing.
Deze instructies zijn van toepassing op Debian 12 (Bookworm)-systemen die geconfigureerd zijn om te gebruiken systemd-resolved. Debian heeft die resolver in een apart pakket geplaatst en er niet de standaard van gemaakt, zoals uitgelegd in de release-opmerkingen van Debian 12. Als uw installatie een andere DNS-manager gebruikt, laat die manager dan de controle behouden in plaats van deze instellingen eraan op te leggen.
1. Identificeer waar de naamresolutie mislukt
Begin met het instellen van de netwerkroute en het opzoeken van de hostnaam. Voer de commando's lokaal uit of in een terminal die open blijft, ook als de netwerkverbinding verandert:
ip -br address
ip route
ping -c 2 1.1.1.1
resolvectl status
resolvectl query debian.org
getent ahosts debian.org
Een standaardroute en een werkende numerieke IP-verbinding suggereren dat de machine het netwerk kan bereiken zonder DNS. Een mislukte ping bewijst op zichzelf niet dat de route verbroken is: netwerken kunnen ICMP-echo-antwoorden blokkeren. Als de interface geen adres of route heeft, corrigeer dan eerst de netwerkverbinding.
resolvectl statusToont de DNS-servers en domeinen die globaal of aan individuele interfaces zijn toegewezen. resolvectl queryTest de systemd-resolver; getent ahoststest het pad voor het opzoeken van hostnamen dat doorgaans door Linux-applicaties wordt gebruikt. Dit onderscheid helpt bij het lokaliseren van de fout.
Observatie
Volgende controle
Geen adres of standaardroute
Stel eerst de interface-, gateway- of DHCP-configuratie in voordat u de DNS-instellingen aanpast.
resolvectlkan geen verbinding maken met de service.
Controleer of systemd-resolvedhet geïnstalleerd en actief is.
Beide zoekopdrachten mislukken, terwijl de route wel werkt.
Controleer de upstream DNS-adressen, DNS-routering en firewalltoegang.
Een terminalweergave groepeert de standaard netwerkroute, de DNS-servertoewijzing en een hostnaamopzoeking op applicatieniveau voor een eerste diagnose.
2. Zorg ervoor dat systemd-resolved is geïnstalleerd en actief is.
Op Debian 12 garandeert de aanwezigheid van systemd niet dat het aparte resolverpakket is geïnstalleerd. Controleer het pakket en de unit voordat u DNS-bestanden wijzigt:
dpkg-query -W -f='${Status}\n' systemd-resolved
systemctl status systemd-resolved --no-pager
Als het pakket is geïnstalleerd maar de service inactief is, start deze dan en schakel hem in voor toekomstige opstartmomenten:
Het laatste commando moet een melding geven active. Als het apparaat faalt, controleer dan de daadwerkelijke foutmeldingen in plaats van het herhaaldelijk opnieuw op te starten:
Als het pakket ontbreekt, installeer het dan sudo apt install systemd-resolvedpas nadat je toegang hebt tot de pakketrepository. Door het te installeren, wordt de controle over gewijzigd /etc/resolv.conf, dus controleer eerst alle NetworkManager-, VPN- of statische DNS-instellingen. Debian beschrijft deze pakketwijziging in de Bookworm-upgradenotities .
De servicestatusweergave laat zien waar u de geladen eenheid, de actieve status en de opstartberichten kunt vinden.
3. Herstel de resolver-link alleen als deze onjuist is.
De standaard systemd-resolvedstub luistert op 127.0.0.53. Het aanbevolen compatibiliteitsbestand is /run/systemd/resolve/stub-resolv.conf, dat kan worden gekoppeld vanuit /etc/resolv.conf. Controleer eerst uw huidige modus:
ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
resolvectl status
Een link naar /run/systemd/resolve/resolv.confis ook een ondersteunde modus, maar programma's die deze gebruiken, nemen rechtstreeks contact op met de upstream DNS in plaats van met de lokale stub. Beschouw die link niet als defect alleen omdat deze verschilt. De handleiding van de Debian systemd-resolved service legt de ondersteunde modi uit.
Als u bewust de lokale stub gebruikt, de service actief is, de stub-listener is ingeschakeld en de bestaande link /etc/resolv.confontbreekt, niet meer werkt of naar een verouderde resolver verwijst, herstel dan de aanbevolen link. Maak eerst een back-up van een bestaand bestand of een bestaande link; sla het kopiëren over als er geen bestand bestaat:
Voer deze vervanging niet uit op een host waar een andere service de DNS-service opzettelijk beheert /etc/resolv.conf. Een lokale nameserver 127.0.0.53vermelding vereist ook een werkende stub-listener; het enkel invoeren van dat adres creëert geen DNS-service. Zorg op een externe machine voor een tweede toegangsmethode voordat u de resolver-instellingen wijzigt.
De controle van de symbolische link toont het verwachte doel wanneer Debian opzettelijk is geconfigureerd om de lokale, door systemd opgeloste stub te gebruiken.
4. Corrigeer een ontbrekende of onbereikbare upstream DNS-server
Als resolvectl statuser geen geschikte upstream DNS-server wordt weergegeven, of als een geconfigureerde server onbereikbaar is, corrigeer dan de bron van die toewijzing. Dynamische DNS-instellingen kunnen afkomstig zijn van DHCP, NetworkManager, systemd-networkd of een VPN. Controleer welke interface de standaardroute transporteert en welke DNS-server bij die interface hoort.
Voor een korte diagnostische test op een netwerk dat openbare DNS toestaat, wijst u bekende openbare resolvers toe aan die interface. Vervang dit ens33door de daadwerkelijke interface uit ip -br address:
sudo resolvectl dns ens33 1.1.1.1 1.0.0.1
resolvectl query debian.org
Die twee adressen staan bij Cloudflare geregistreerd als openbare DNS-resolveradressen . De resolvectl dnswijziging betreft een runtime-configuratie; een netwerkbeheerder kan deze aanpassen wanneer de verbinding opnieuw tot stand komt. Als de lookup nu werkt, kunt u de permanente DNS-bron corrigeren in plaats van op deze tijdelijke opdracht te vertrouwen.
Met NetworkManager kunt u de actieve verbinding inspecteren nmcli connection show --activeen de DNS-instellingen of het DHCP-gedrag van die verbinding aanpassen. Met systemd-networkd kunt u de gewenste DNS=instellingen in het bijbehorende .networkbestand plaatsen en het netwerk op een veilig moment herladen of opnieuw configureren. Zie de Debian systemd.network-handleiding en de Debian NetworkManager-configuratiehandleiding . Het opnieuw verbinden van een beheerde interface kan een SSH-sessie onderbreken.
Gebruik bij voorkeur de DNS-servers van de organisatie of VPN voor interne namen. Openbare resolvers kunnen niet automatisch antwoorden op privézones; het forceren van alle query's naar openbare resolvers kan split DNS verstoren of interne hostnamen openbaar maken. Globale DNS=vermeldingen in het configuratiebestand resolved.confkunnen naast per-link DNS werken in plaats van deze automatisch te vervangen; zie de handleiding van Bookworm resolved.conf .
5. Leeg de cache en controleer of beide opzoekpaden werken.
Nadat u de service, de resolverlink of de upstream-configuratie hebt gecorrigeerd, wist u de in de cache opgeslagen antwoorden en voert u de test opnieuw uit:
De reparatie is succesvol wanneer resolvectl queryde adressen en getent ahostsadresrecords correct worden geretourneerd en de beoogde DNS-servers zichtbaar blijven nadat de netwerkverbinding is hersteld. De twee commando's testen verschillende interfaces, dus beschouw succes bij één ervan niet als bewijs dat alle applicaties zijn gerepareerd. De Debian resolvectl-handleiding beschrijft de query, status en cacheflush.
De laatste terminalweergave toont de twee controles die beide adresrecords zouden moeten retourneren nadat de DNS-configuratie is hersteld.
Als resolvectl queryhet wel lukt, maar getenthet nog steeds niet lukt, controleer dan grep "^hosts:" /etc/nsswitch.confof een geschikte dnsof geïnstalleerde resolveNSS-module zich in het opzoekpad bevindt. Als beide pogingen blijven mislukken, controleer dan het resolverlogboek en eventuele firewallbeperkingen op DNS-verkeer, en test vervolgens met het daadwerkelijke DNS-adres van het bedrijf, de router of de provider. Een enkele succesvolle opzoeking is niet voldoende: herhaal de controles na het opnieuw verbinden en na het opnieuw opstarten om te verifiëren of het probleem permanent is opgelost.