Gdy strona zaczyna kierować na zły adres, po zmianie ustawień sieci dalej widzisz starą wersję serwisu albo logowanie uparcie się sypie, problem bardzo często siedzi nie w samym łączu, tylko w lokalnej pamięci DNS. Właśnie wtedy pomaga prosty flush DNS, czyli odświeżenie cache nazw, które komputer trzyma po to, by szybciej tłumaczyć domeny na adresy IP. Poniżej rozpisuję, kiedy ta operacja ma sens, jak zrobić ją w Windows, macOS i Linuksie oraz jak sprawdzić, czy faktycznie rozwiązała problem.
Najkrótsza droga do odświeżenia DNS
- Najczęściej chodzi o usunięcie lokalnej, błędnej lub przestarzałej odpowiedzi DNS zapisanej przez system.
- W Windows zwykle wystarcza komenda
ipconfig /flushdns. - Na macOS najczęściej używa się
sudo dscacheutil -flushcacheorazsudo killall -HUP mDNSResponder. - W Linuksie polecenie zależy od używanego resolvera, a przy systemd-resolved najczęściej działa
sudo resolvectl flush-caches. - Jeśli problem wraca po odświeżeniu cache, sprawdzam też router, VPN, plik hosts i samą propagację zmian DNS.
Na czym polega odświeżenie pamięci DNS
DNS cache to lokalny magazyn ostatnich odpowiedzi na pytania o domeny. Dzięki niemu komputer nie musi za każdym razem pytać zewnętrznego serwera, gdzie znajduje się dana strona, poczta czy usługa. To przyspiesza działanie sieci, ale ma też wadę: jeśli wpis się zestarzeje, system może przez jakiś czas uparcie zwracać już nieaktualny adres.
W praktyce nie traktuję tego jako „reset internetu”, tylko jako szybki test jednej warstwy problemu. Jeśli po czyszczeniu cache strona nagle zaczyna działać, winny był lokalny resolver. Jeśli nie, trzeba szukać dalej: w DNS serwera, routerze, VPN, certyfikacie albo po prostu w zmianie, która jeszcze nie rozeszła się po sieci.
| System | Podstawowa komenda | Kiedy ma sens |
|---|---|---|
| Windows 10 / 11 | ipconfig /flushdns |
Gdy komputer korzysta z wbudowanego klienta DNS Windows. |
| macOS |
sudo dscacheutil -flushcache i sudo killall -HUP mDNSResponder
|
Gdy Mac trzyma starą odpowiedź w lokalnym cache usług systemowych. |
| Linux z systemd-resolved | sudo resolvectl flush-caches |
Gdy resolverem jest systemd-resolved, co jest dziś bardzo częste. |
To właśnie ten wybór decyduje o tym, czy użyjesz jednej krótkiej komendy, czy trzeba będzie sprawdzić architekturę całej usługi DNS. Dalej rozbijam to już system po systemie.
Jak wykonać to w Windows
W Windows najprościej zacząć od wiersza polecenia uruchomionego z uprawnieniami administratora. Microsoft podaje tę metodę jako standardowy sposób na wyczyszczenie lokalnego cache klienta DNS, więc to pierwszy krok, który ja robię przy dziwnych objawach typu stara strona, błąd nazwy hosta albo przekierowanie na nieaktualny adres IP.
- Otwórz menu Start i wpisz
cmdalboPowerShell. - Uruchom narzędzie jako administrator.
- Wpisz
ipconfig /flushdnsi naciśnij Enter. - Jeśli chcesz sprawdzić, co siedzi w cache przed lub po operacji, użyj
ipconfig /displaydns.
Po wykonaniu komendy zwykle zobaczysz potwierdzenie, że cache resolvera został opróżniony. Jeśli nie pojawia się żaden błąd, sam proces odświeżenia zazwyczaj już się udał. W codziennej diagnostyce lubię też porównać to z nslookup, bo to narzędzie nie korzysta z lokalnej pamięci DNS klienta, tylko pyta serwer bezpośrednio.
Jeżeli pracujesz wygodniej w PowerShellu, istnieje też równoważna komenda Clear-DnsClientCache. Dla efektu praktycznego to nadal ten sam ruch: system ma przestać ufać starej odpowiedzi i pobrać świeżą przy następnym zapytaniu. To wystarcza w większości typowych problemów, a na Macu mechanika wygląda podobnie, tylko polecenia są inne.
Na macOS najlepiej użyć dscacheutil i mDNSResponder
Na Macu temat bywa mylący, bo wiele poradników pokazuje tylko jedną komendę, a w praktyce najczęściej trzeba odświeżyć dwie warstwy: cache usług katalogowych i proces odpowiedzialny za rozwiązywanie nazw. Ja zwykle korzystam z zestawu sudo dscacheutil -flushcache oraz sudo killall -HUP mDNSResponder, bo to bezpieczny i najczęściej skuteczny wariant na współczesnym macOS.
- Otwórz Terminal.
- Wpisz
sudo dscacheutil -flushcachei potwierdź hasłem administratora. - Następnie wpisz
sudo killall -HUP mDNSResponder. - Nie oczekuj rozbudowanego komunikatu zwrotnego. Brak reakcji nie oznacza błędu.
Warto pamiętać, że mDNSResponder utrzymuje cache odpowiedzi DNS, więc samo odświeżenie usług katalogowych nie zawsze wystarczy. Jeśli Mac jest w sieci firmowej, może też pobierać konfigurację z profilu zarządzania, VPN albo serwera DHCP, dlatego operacja lokalna poprawia objaw, ale nie usuwa przyczyny. I właśnie dlatego przy kolejnej sekcji trzeba już spojrzeć na linuksowy odpowiednik tego procesu.
W Linuksie wszystko zależy od lokalnego resolvera
Linux nie ma jednego uniwersalnego polecenia dla każdego środowiska, bo cache DNS może prowadzić systemd-resolved, nscd, dnsmasq albo jeszcze inna warstwa pośrednia. Jeśli system korzysta z systemd-resolved, najprościej użyć sudo resolvectl flush-caches. To polecenie czyści lokalne rekordy, a w praktyce robi to samo, co ręczne wysłanie sygnału do usługi, tylko w sposób bardziej przewidywalny.
- Sprawdź, czy w systemie działa systemd-resolved, na przykład przez
resolvectl statuslubsystemctl status systemd-resolved. - Jeśli usługa jest aktywna, uruchom
sudo resolvectl flush-caches. - Jeśli
resolvectlnie istnieje albo nie zarządza DNS-em, sprawdź, czy cache nie prowadzi inny demon. - W środowiskach z innym resolverem odświeżenie trzeba skierować do tej konkretnej usługi, a nie zgadywać na ślepo.
Tu szczególnie łatwo o fałszywy wniosek: użytkownik widzi, że „DNS nie działa”, ale w rzeczywistości system w ogóle nie używa tego cache, który właśnie wyczyścił. Dlatego na Linuksie zawsze zaczynam od ustalenia, kto jest właścicielem resolvera. Dopiero potem ma sens sprawdzanie, czy zmiana faktycznie dotarła do końca.
Jak sprawdzić, czy problem faktycznie był w cache
Po odświeżeniu pamięci DNS nie zgaduję, tylko testuję wynik. Najprościej porównać odpowiedź przed i po operacji. Jeśli wcześniej domena zwracała stary adres, a po czyszczeniu cache widzisz nowy, sprawa jest zamknięta. Jeśli odpowiedź się nie zmienia, to znak, że problem siedzi wyżej albo niżej w łańcuchu.
| Test | Co pokazuje | Jak to interpretuję |
|---|---|---|
ipconfig /displaydns |
Co lokalnie zapamiętał Windows | Jeśli widzisz starą odpowiedź, cache był realnym tropem. |
nslookup domena.pl |
Odpowiedź od serwera DNS, bez lokalnego cache klienta | Pomaga oddzielić problem cache od błędnej odpowiedzi serwera. |
resolvectl query domena.pl |
Wynik przez resolver systemowy w Linuksie | Pokazuje, jak odpowiada lokalny mechanizm rozwiązywania nazw. |
dig domena.pl |
Surową odpowiedź DNS | Przydatne, gdy chcę zobaczyć TTL i faktyczny rekord. |
Najbardziej praktyczny wniosek jest prosty: jeśli różne narzędzia pokazują różne wyniki, problem nie dotyczy tylko jednego cache. Wtedy trzeba ustalić, czy rozjazd bierze się z routera, VPN, lokalnej konfiguracji sieci czy z samego serwera DNS. To prowadzi już do kolejnej, często pomijanej części układanki.
Kiedy czyszczenie cache nie wystarczy
Są sytuacje, w których odświeżenie lokalnej pamięci nic nie zmienia, bo źródło problemu leży gdzie indziej. Najczęstszy przypadek to propagacja zmian DNS po stronie hostingu lub operatora domeny. Jeśli rekord właśnie został zmieniony, część serwerów może jeszcze trzymać starą wersję do czasu wygaśnięcia TTL, czyli czasu życia rekordu.
- Plik
hostsnadpisuje odpowiedź DNS i komputer w ogóle nie pyta o domenę. - Router lub punkt dostępu ma własny cache i podaje stary rekord wszystkim urządzeniom w sieci.
- VPN lub firmowy profil sieciowy wymusza inne serwery DNS niż te, których się spodziewasz.
- Przeglądarka albo aplikacja trzyma własne dane o połączeniu i problem dotyczy tylko jednego programu.
- Nowy rekord jeszcze się nie rozszedł, więc komputer dostaje poprawną, ale nadal starą odpowiedź z zewnętrznego serwera.
Jeśli problem znika na innym łączu, na przykład po przełączeniu się z Wi-Fi na hotspot z telefonu, to znak, że winna jest lokalna sieć, a nie sama domena. Jeśli znika w jednej przeglądarce, a w drugiej zostaje, szukałbym już po stronie aplikacji, proxy albo jej własnych ustawień. Taka diagnostyka oszczędza czas, bo nie kręcisz się w kółko wokół tej samej komendy.
Co zapamiętać, zanim wrócisz do pracy
Najlepszy nawyk, jaki wyrobiłem sobie przy problemach z DNS, jest prosty: najpierw sprawdzam, kto trzyma cache, a dopiero potem go czyszczę. Dzięki temu nie wykonuję przypadkowych ruchów i szybciej odróżniam zwykłą lokalną usterkę od problemu z serwerem, routerem albo propagacją rekordu.
Jeżeli pracujesz na kilku systemach, dobrze mieć pod ręką trzy polecenia: Windows ipconfig /flushdns, macOS sudo dscacheutil -flushcache razem z sudo killall -HUP mDNSResponder, a na Linuksie z systemd-resolved sudo resolvectl flush-caches. To nie jest magia, tylko szybki, techniczny test, który bardzo często zawęża problem do jednej warstwy sieci.
Gdy po takim odświeżeniu wszystko wraca do normy, masz odpowiedź: komputer miał starą informację i właśnie ją wyrzuciłeś. Gdy nie wraca, lepiej od razu szukać dalej niż powtarzać ten sam ruch w nieskończoność.
