Zmieniasz wpis DNS, restartujesz usługę, testujesz połączenie, a komputer z systemem Linux nadal rozwiązuje stary problem. W takim przypadku restart całego serwera rzadko jest właściwym rozwiązaniem. Lokalną pamięć podręczną DNS można często wyczyścić bez wyłączania komputera.
Ważne jest, aby wiedzieć kto przechowuje skrytkęW zależności od dystrybucji możesz się natknąć na rozwiązany przez systemdNetworkManager z wtyczką DNS, nscd, A dnsmasq lokalny lub po prostu brak aktywnej lokalnej pamięci podręcznej DNS.
Proponuję prostą metodę: zidentyfikuj resolver, wyczyść odpowiednią pamięć podręczną, a następnie sprawdź, czy nie pomyliłeś pamięci podręcznej lokalnej, publicznego serwera DNS i pamięci podręcznej aplikacji.

Zacznij od zidentyfikowania użytego resolvera
Przed uruchomieniem losowych poleceń sprawdź, jak Twój komputer rozwiązuje nazwy. Pierwsze sprawdzenie wykonuje się za pomocą /etc/resolv.conf :
ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
kot /etc/resolv.conf
Jeżeli plik wskazuje na ścieżkę systemową, np. /run/systemd/resolve/stub-resolv.confMasz dużą szansę na wykorzystanie rozwiązany przez systemdPotwierdź za pomocą:
systemctl jest aktywny systemd-rozwiązany
stan rozwiązania
Na niektórych komputerach NetworkManager zarządza również DNS. Sprawdź jego status:
systemctl is-active NetworkManager
ogólny status nmcli
Jeśli administrujesz starszym serwerem, sprawdź również, czy nscd Lub dnsmasq zakręty:
systemctl is-active nscd
systemctl jest aktywny dnsmasq
Ten krok pozwala uniknąć częstego błędu: czyszczenia pamięci podręcznej rozwiązany przez systemd dopóki maszyna nie korzysta z tej usługi, możesz być pewien, że Linux ignoruje twoje polecenie.
Wyczyść pamięć podręczną rozwiązaną przez systemd za pomocą resolvectl
W najnowszych dystrybucjach najczystszym poleceniem jest zazwyczaj rozwiązaćZacznij od przejrzenia statystyk rozwiązania:
rozwiąż statystyki
Następnie możesz wyczyścić lokalną pamięć podręczną DNS:
sudo resolvectl flush-cache
Dokumentacja rozwiązać wyraźnie na to wskazuje pamięci podręczne typu Flush To czyści rekordy DNS przechowywane lokalnie przez usługę. Nie jest to restart sieci, a właśnie o to chodzi w tym poleceniu.
Aby przeprowadzić poprawną weryfikację, możesz zresetować liczniki, uruchomić rozwiązanie, a następnie przejrzeć statystyki:
sudo resolvectl reset-statistics
resolvectl query www.linuxencaja.net
rozwiąż statystyki
Jeśli rozwiązać nie istnieje, spróbuj starej nazwy w niektórych dystrybucjach:
systemd-resolve --statistics
sudo systemd-resolve --flush-caches
Nadal wolę rozwiązać kiedy będzie dostępny. To jest aktualne zamówienie na około rozwiązany przez systemd.
Jeśli NetworkManager zarządza DNS
Na komputerze z systemem Linux lub serwerze z programem NetworkManager pamięć podręczna może być powiązana z używaną wtyczką DNS. Jeśli zmodyfikowałeś konfigurację DNS zarządzaną przez NetworkManager, najpierw zażądaj przeładowania DNS:
sudo nmcli general reload dns-full
Odniesienie nmcli opisać dns-pełny takie jak ponowne uruchomienie wtyczki DNS. Jest to przydatne na przykład wtedy, gdy NetworkManager korzysta z wtyczki dnsmasq z plikami pod /etc/NetworkManager/dnsmasq.d/.
Następnie sprawdź, czy rozdzielczość rzeczywiście przechodzi przez oczekiwane serwery:
Pokaż urządzenie nmcli | grep -E 'DNS|DOMAIN'
stan rozwiązania
Unikaj bezmyślnego ponownego uruchamiania NetworkManager na komputerze zdalnym. systemctl restart NetworkManager Może to przerwać połączenie sieciowe. Jeśli łączysz się przez SSH, utwórz zapasową konsolę lub załóż otwartą sesję. Zasada jest taka sama jak w przypadku usługi systemowej: sprawdź przed podjęciem działania, zwłaszcza na serwerze.
Jeśli przed wprowadzeniem jakichkolwiek zmian w sieci konieczne jest sprawdzenie aktywnych usług, zapoznaj się z artykułem systemctl i lista usług Linux Ten krok został zakończony pomyślnie.
Wyczyść nscd lub dnsmasq, jeśli to one je ukrywają.
nscd Nie jest używany wyłącznie do DNS. Może buforować kilka baz danych NSS, w tym zastępy niebieskieJeśli usługa jest aktywna, można jedynie unieważnić pamięć podręczną hosta:
sudo nscd -i hosts
Strona nscd(8) Ta opcja unieważnienia jest udokumentowana. W razie wątpliwości co do statusu usługi:
systemctl status nscd --no-pager
journalctl -u nscd -b --no-pager
Dla dnsmasqSprawa zależy od konfiguracji. Na serwerze, który uruchamia prawdziwą usługę dnsmasqPonowne uruchomienie usługi powoduje wyczyszczenie jej pamięci podręcznej:
sudo systemctl restart dnsmasq
systemctl status dnsmasq --no-pager
Jeśli dnsmasq jest używany tylko jako wtyczka przez NetworkManager, zamiast tego użyj innej metody nmcli general reload dns-fullPonowne uruchomienie niewłaściwej usługi może niczego nie zmienić lub może spowodować jedynie stratę czasu na niewłaściwym piętrze.
Sprawdź, czy problem rzeczywiście leży w pamięci podręcznej lokalnej.
Po wyczyszczeniu pamięci podręcznej należy przetestować rozdzielczość po stronie systemu:
getent hostuje www.linuxencaja.net
resolvectl query www.linuxencaja.net
Jeśli masz kopać Lub wiertarkaPorównaj również z publicznym resolverem. W systemie Debian lub Ubuntu, kopać zwykle pochodzi z opakowania dnsutils :
wykop www.linuxencaja.net
wykop @1.1.1.1 www.linuxencaja.net
Jeśli publiczny resolver nadal zwraca stary adres IP, przyczyną prawdopodobnie nie jest Twój komputer z systemem Linux. Nadal może to być spowodowane przez DNS TTL, pamięć podręczną dostawcy usług internetowych lub niepełną propagację. Wyczyszczenie lokalnej pamięci podręcznej nie powoduje, że cały internet zapomni starą odpowiedź.
Weź również pod uwagę aplikacje. Przeglądarka, serwer proxy, środowisko wykonawcze lub kontener mogą utrzymywać własną pamięć podręczną lub rozdzielczość. Jeśli kędzior Jeżeli powłoka działa, ale przeglądarka nadal zawodzi, problem nie musi już leżeć na poziomie rozwiązany przez systemd.
Jeśli rozpoznawanie nazw DNS nadal występuje, przeczytaj logi.
Jeśli rozdzielczość nadal jest niespójna, sprawdź logi usługi, z której faktycznie korzystasz. rozwiązany przez systemd :
journalctl -u systemd-resolved -b --no-pager
Dla NetworkManager:
journalctl -u NetworkManager -b --no-pager
Sprawdź również ogólny stan sieci. Zła trasa, niedostępny serwer DNS lub zbyt rygorystyczna zapora sieciowa mogą sprawiać wrażenie zablokowanej pamięci podręcznej:
trasa IP
resolvectl dns
domena Rectl
ss -lntup
Jeśli chcesz sprawdzić, co naprawdę słucha urządzenie, możesz uzupełnić je przewodnikiem na temat otwieranie portów w systemie Linux za pomocą ss i netstatW przypadku problemu po zmianie adresu zapoznaj się z artykułem na temat statyczny adres IP w Debianie może również pomóc w prawidłowej odbudowie fundamentów sieci.
Moja czysta sekwencja przed ponownym uruchomieniem czegokolwiek
Na typowym komputerze z systemem Linux zwykle postępuję w następujący sposób:
- Czytać
/etc/resolv.confi zidentyfikuj osobę rozwiązującą; - sprawdzać
rozwiązany przez systemdMenedżer sieci,nscdLubdnsmasq; - wyczyść tylko odpowiednią pamięć podręczną;
- przetestuj z
zdobyć gospodarzy,rozwiąż zapytanieLubkopać; - przed ponownym uruchomieniem usługi sieciowej należy przeczytać logi;
- Ponowne uruchomienie NetworkManager’a lub całego komputera jest rozwiązaniem ostatecznym.
Jeśli znajdujesz się na serwerze zdalnym, zachowaj jeszcze większą ostrożność. Wyczyszczenie lokalnej pamięci podręcznej DNS to prosta operacja. Ponowne uruchomienie usługi sieciowej jest znacznie bardziej skomplikowane. Utrzymuj otwartą sesję i sprawdzaj logi za pomocą… dziennikctlNastępnie sprawdź rozdzielczość z poziomu powłoki, zanim cokolwiek zrobisz.