Niepowodzenia wyszukiwania DNS w systemie Debian 12: naprawa błędu systemd-resolved

Jeśli w systemie Debian 12 wyświetla się komunikat „Tymczasowy błąd rozpoznawania nazw”, sprawdź usługę resolvera, /etc/resolv.confłącze oraz serwery DNS oznaczone literą resolvectl— w tej kolejności. Ponowne uruchomienie usługi pomaga tylko po jej zatrzymaniu; zerwane łącze lub niedostępny serwer nadrzędny wymagają innego rozwiązania.

Niniejsze instrukcje dotyczą systemów Debian 12 (Bookworm) skonfigurowanych do korzystania z usługi DNS systemd-resolved. Debian wydzielił ten resolver do osobnego pakietu i nie uczynił go domyślnym, jak wyjaśniono w informacjach o wydaniu Debiana 12. Jeśli Twoja instalacja korzysta z innego menedżera DNS, zachowaj kontrolę nad nim, zamiast narzucać mu te ustawienia.

1. Zidentyfikuj, gdzie rozpoznawanie nazw zawodzi

Zacznij od trasy sieciowej i wyszukania nazwy hosta. Uruchom polecenia lokalnie lub w terminalu, który pozostanie otwarty w przypadku zmian w sieci:

ip -br address
ip route
ping -c 2 1.1.1.1
resolvectl status
resolvectl query debian.org
getent ahosts debian.org

Domyślna trasa i działające połączenie numeryczno-IP sugerują, że komputer może połączyć się z siecią bez DNS. Nieudany ping sam w sobie nie dowodzi awarii trasy: sieci mogą blokować odpowiedzi echa ICMP. Jeśli interfejsowi brakuje adresu lub trasy, należy najpierw naprawić połączenie sieciowe.

resolvectl statusPokazuje serwery DNS i domeny przypisane globalnie lub do poszczególnych interfejsów. resolvectl queryTestuje resolver systemd; getent ahoststestuje ścieżkę wyszukiwania nazw hostów powszechnie używaną przez aplikacje Linux. Rozróżnienie pomaga w wyizolowaniu błędu.

ObserwacjaNastępne sprawdzenie
Brak adresu lub domyślnej trasyPrzed uruchomieniem usługi DNS należy naprawić interfejs, bramę lub konfigurację DHCP.
resolvectlnie można połączyć się z usługąSprawdź, czy systemd-resolvedjest zainstalowany i uruchomiony.
resolvectl querydziała, getentnie działaPrzeprowadź inspekcję /etc/resolv.confi sprawdź konfigurację hostów NSS.
Oba wyszukiwania kończą się niepowodzeniem, a trasa jest aktywnaSprawdź adresy DNS, routing DNS i dostęp do zapory sieciowej.
Terminal Debiana z poleceniami ip route, resolvectl status i getent hosts do sprawdzania łączności DNS.
Widok terminala grupuje domyślną trasę sieciową, przypisanie serwera DNS i wyszukiwanie nazwy hosta na poziomie aplikacji na potrzeby wstępnej diagnostyki.

2. Upewnij się, że systemd-resolved jest zainstalowany i aktywny

W systemie Debian 12 obecność systemd nie gwarantuje zainstalowania osobnego pakietu resolvera. Przed zmianą jakichkolwiek plików DNS sprawdź pakiet i jednostkę:

dpkg-query -W -f='${Status}\n' systemd-resolved
systemctl status systemd-resolved --no-pager

Jeżeli pakiet jest zainstalowany, ale usługa jest nieaktywna, uruchom ją i włącz na potrzeby przyszłych uruchomień:

sudo systemctl enable --now systemd-resolved
systemctl is-active systemd-resolved

Końcowe polecenie powinno zgłosić błąd active. Jeśli urządzenie ulegnie awarii, sprawdź jego rzeczywiste komunikaty o błędach, zamiast wielokrotnie je restartować:

journalctl -u systemd-resolved -b --no-pager -n 60

Jeśli pakiet jest nieobecny, zainstaluj go sudo apt install systemd-resolveddopiero po uzyskaniu dostępu do repozytorium pakietów. Instalacja pakietu zmienia kontrolę nad programem /etc/resolv.conf, dlatego najpierw sprawdź konfigurację NetworkManager, VPN lub statycznego DNS. Debian dokumentuje tę zmianę pakietu w uwagach dotyczących aktualizacji Bookworm .

Terminal Debiana wyświetlający status systemctl systemd-resolved z wartością Aktywny: aktywny (uruchomiony).
Wyświetlacz stanu usługi pokazuje, gdzie szukać załadowanej jednostki, stanu aktywnego i komunikatów startowych.

3. Napraw łącze do resolvera tylko wtedy, gdy jest nieprawidłowe

Standardowy systemd-resolvedstub nasłuchuje w 127.0.0.53. Zalecany plik zgodności to /run/systemd/resolve/stub-resolv.conf, który można połączyć z /etc/resolv.conf. Najpierw sprawdź swój aktualny tryb:

ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
resolvectl status

Link do /run/systemd/resolve/resolv.confjest również obsługiwanym trybem, ale programy korzystające z niego kontaktują się bezpośrednio z nadrzędnym serwerem DNS, a nie z lokalnym szczątkiem. Nie należy nazywać tego linku uszkodzonym tylko dlatego, że się różni. Obsługiwane tryby są wyjaśnione w podręczniku serwisowym systemu Debian systemd-resolved .

Jeśli celowo używasz lokalnego szczątkowego pliku, usługa działa, nasłuchiwacz szczątkowego pliku jest włączony, a istniejący plik /etc/resolv.confjest nieobecny, zawieszony lub wskazuje na przestarzały resolver, przywróć zalecane łącze. Najpierw utwórz kopię zapasową istniejącego pliku lub łącza; pomiń kopiowanie, jeśli plik nie istnieje:

sudo cp -a /etc/resolv.conf /etc/resolv.conf.dns-backup
sudo ln -sfn /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
cat /etc/resolv.conf

Nie uruchamiaj tego zamiennika na hoście, na którym inna usługa celowo zarządza /etc/resolv.conf. Wpis lokalny nameserver 127.0.0.53wymaga również działającego nasłuchiwacza szczątkowego; samo wpisanie tego adresu nie powoduje utworzenia usługi DNS. Na komputerze zdalnym zachowaj drugą metodę dostępu przed edycją ustawień resolvera.

Terminal Debiana pokazujący symboliczny link /etc/resolv.conf prowadzący do pliku stub-resolv.conf rozwiązanego przez systemd.
Sprawdzenie dowiązania symbolicznego pokazuje oczekiwany cel, gdy Debian jest celowo skonfigurowany do używania lokalnego szczątkowego pliku rozdzielonego przez systemd.

4. Napraw nieobecny lub niedostępny serwer DNS

Jeśli resolvectl statusnie ma odpowiedniego serwera DNS upstream lub skonfigurowany serwer jest niedostępny, popraw źródło tego przypisania. Ustawienia dynamicznego DNS mogą pochodzić z DHCP, NetworkManager, systemd-networkd lub VPN. Sprawdź, który interfejs obsługuje trasę domyślną i który serwer DNS należy do tego interfejsu.

Aby przeprowadzić krótki test diagnostyczny w sieci obsługującej publiczny DNS, przypisz znane publiczne resolvery do tego interfejsu. Zastąp je ens33rzeczywistym interfejsem z ip -br address:

sudo resolvectl dns ens33 1.1.1.1 1.0.0.1
resolvectl query debian.org

Te dwa adresy są udokumentowane przez Cloudflare jako publiczne adresy resolvera DNS . resolvectl dnsZmiana dotyczy konfiguracji środowiska uruchomieniowego; menedżer sieci może ją zastąpić po ponownym nawiązaniu połączenia. Jeśli wyszukiwanie teraz działa, należy naprawić stałe źródło DNS zamiast polegać na tym tymczasowym poleceniu.

Za pomocą NetworkManager sprawdź aktywne połączenie nmcli connection show --activei dostosuj jego ustawienia DNS lub zachowanie DHCP. Za pomocą systemd-networkd wpisz odpowiednie DNS=ustawienia do odpowiedniego .networkpliku i przeładuj lub skonfiguruj sieć w bezpiecznym momencie. Zapoznaj się z podręcznikiem Debian systemd.network oraz podręcznikiem konfiguracji Debian NetworkManager . Ponowne połączenie z zarządzanym interfejsem może przerwać sesję SSH.

Preferuj serwery DNS organizacji lub sieci VPN dla nazw wewnętrznych. Nie można zakładać, że publiczne resolvery będą odpowiadać strefom prywatnym; wymuszanie wszystkich zapytań do nich może spowodować przerwanie działania podzielonego DNS lub ujawnienie wewnętrznych nazw hostów. Globalne DNS=wpisy w pliku resolved.confmogą działać równolegle z DNS dla łącza per-link, zamiast automatycznie go zastępować; patrz podręcznik Bookworm solved.conf .

5. Wyczyść pamięć podręczną i sprawdź, czy obie ścieżki wyszukiwania działają

Po poprawieniu usługi, łącza resolvera lub konfiguracji nadrzędnej wyczyść buforowane odpowiedzi i przetestuj ponownie:

sudo resolvectl flush-caches
resolvectl query debian.org
getent ahosts debian.org
resolvectl status

Naprawa jest skuteczna, gdy resolvectl queryzwracane są adresy, getent ahostszwracane są rekordy adresów, a docelowe serwery DNS pozostają widoczne po ponownym połączeniu z siecią. Te dwa polecenia testują różne interfejsy, więc nie należy traktować sukcesu w jednym z nich jako dowodu na naprawienie wszystkich aplikacji. Podręcznik polecenia resolvectl w Debianie opisuje zapytania, status i opróżnianie pamięci podręcznej.

Terminal Debiana pokazujący polecenie resolvectl query debian.org i polecenie getent ahosts debian.org zwracające rekordy adresów, a następnie polecenie flush-caches.
Końcowy widok terminala pokazuje dwa sprawdzenia, które powinny zwrócić rekordy adresów po naprawieniu konfiguracji DNS.

Jeśli resolvectl querypróba się powiedzie, ale getentnadal nie powiedzie, sprawdź grep "^hosts:" /etc/nsswitch.confi potwierdź, czy na ścieżce wyszukiwania znajduje się odpowiedni dnslub zainstalowany resolvemoduł NSS. Jeśli oba nadal się nie udają, sprawdź dziennik resolvera i wszelkie ograniczenia zapory sieciowej dotyczące ruchu DNS, a następnie przetestuj, używając rzeczywistego adresu DNS firmy, routera lub dostawcy. Samo pomyślne wyszukiwanie nie wystarczy: powtórz sprawdzanie po ponownym połączeniu i ponownym uruchomieniu, aby zweryfikować trwałe rozwiązanie.

Zostaw komentarz

Ustaw publiczny adres URL NextCloud, aby mógł się do siebie dodzwonić

Napraw ostrzeżenie Nextcloud o brakującym adresie wychodzącym, ustawiając jego kanoniczny adres URL i sprawdzając routing DNS, HTTPS i odwrotnego serwera proxy na samym serwerze.

Konfigurowanie buforowania Nextcloud Redis w systemie Ubuntu 24.04

Konfigurowanie buforowania Nextcloud Redis w systemie Ubuntu 24.04

Skonfiguruj APCu i Redis przez lokalne gniazdo Unix na potrzeby buforowania i blokowania plików w usłudze Nextcloud, wraz z instrukcjami dla bieżących i starszych wersji usługi Nextcloud.

Uruchom automatycznie Nextcloud Cron za pomocą timera Systemd

Sprawdź tryb cron Nextcloud, napraw usługę systemd i timer oraz zweryfikuj, czy zadania w tle są uruchamiane po uruchomieniu i co pięć minut.

Usuń ostrzeżenie o blokowaniu plików w NextCloud za pomocą Redis

Włącz niezawodne blokowanie plików Nextcloud, wybierz odpowiedni serwer Redis lub Valkey i sprawdź, czy ostrzeżenie zostanie usunięte bez ryzyka równoczesnych zmian w plikach.

Co jest potrzebne, aby uzyskać ocenę bezpieczeństwa Nextcloud A+

Co jest potrzebne, aby uzyskać ocenę bezpieczeństwa Nextcloud A+

Napraw typowe błędy skanowania Nextcloud dzięki bieżącym aktualizacjom, protokołom HTTPS i HSTS, precyzyjnemu zaufaniu do odwrotnego serwera proxy i sprawdzeniu względem serwera publicznego.

Włącz szyfrowanie po stronie serwera Nextcloud z mierzalnym wpływem

Skonfiguruj Nextcloud SSE dla pamięci masowej, która tego wymaga, chroń klucze szyfrujące i zmierz wpływ transferu i procesora przed zaszyfrowaniem istniejących plików.

Dodaj wyszukiwanie pełnotekstowe Elasticsearch do NextCloud

Połącz wyszukiwarkę plików Nextcloud z Elasticsearch, zindeksuj zawartość dokumentów i wybierz konfigurację odpowiadającą Twoim potrzebom w zakresie serwera i bezpieczeństwa.

Ustaw niezawodną politykę wygasania dla usuniętych plików w usłudze NextCloud

Ustaw niezawodną politykę wygasania dla usuniętych plików w usłudze NextCloud

Skonfiguruj Nextcloud tak, aby usuwał usunięte pliki po upływie określonego czasu przechowywania, niezawodnie planował zadania w tle i unikał poleceń, które usuwają śmieci każdego użytkownika.

Ostrzeżenie o braku indeksów bazy danych NextCloud

Ostrzeżenie o braku indeksów bazy danych NextCloud

Wykonaj bezpieczną naprawę OCC w Nextcloud, przejrzyj zmiany w bazie danych i sprawdź, dlaczego ostrzeżenie może nadal się pojawiać.

Zwiększ limit przesyłania danych do sieci w NextCloud powyżej 2 GB

Zwiększ limit przesyłania danych do sieci w NextCloud powyżej 2 GB

Zezwól na przesyłanie większych plików przez przeglądarkę Nextcloud, dostosowując ustawienia PHP, Nginx lub Apache, tymczasowego miejsca przechowywania i limitu czasu — i sprawdź, który limit blokuje plik.