Błąd DNS: co oznacza i jak znaleźć prawdziwą przyczynę
"Błąd DNS" to nie jeden konkretny problem; to etykieta, której przeglądarka, router albo sfrustrowany kolega używa na każdą awarię na etapie rozwiązywania nazwy, a naprawa zależy całkowicie od tego, który to przypadek. Ta strona jest punktem startowym, nie diagnozą: przeczytaj poniższe kroki triażu, uruchom te dwa albo trzy sprawdzenia, które pasują, a wskażą Ci poradnik pokrywający dokładnie Twój objaw.
Co kryje się pod "błędem DNS"
Pod jedną tą frazą kryje się kilka odrębnych awarii, które nie mają ze sobą nic wspólnego poza tym, gdzie się zdarzają. Przeglądarka może powiedzieć, że nazwa w ogóle nie istnieje. Może powiedzieć, że resolver nigdy nie odpowiedział. Może wczytać stronę w końcu, tylko wolno, po widocznym zawieszeniu. Całe biuro może stracić możliwość rozwiązywania jakiejkolwiek nazwy, mimo że samo połączenie internetowe wciąż działa. Albo rekordy Twojej własnej strony mogą przestać działać dla odwiedzających w jednym regionie, wyglądając zupełnie normalnie dla Ciebie. Każda z tych sytuacji ma inną przyczynę i inną naprawę, i żadnej z nich nie rozwiązuje ogólna rada "zrestartuj router i spróbuj ponownie", która pasuje dokładnie do jednej z pięciu.
Reszta tej strony to krótki zestaw pytań. Odpowiedz na nie po kolei, a trafisz do konkretnego poradnika pasującego do tego, co się dzieje, zamiast przechodzić przez pięć niepowiązanych list napraw w nadziei, że któraś pomoże.
Czy to tylko to urządzenie, czy każde?
Spróbuj tego samego wyszukania z telefonu na danych komórkowych, nie na Twoim Wi-Fi. Jeśli tam nazwa się rozwiązuje, a na laptopie zawodzi, problem jest lokalny: złe ustawienie DNS na tej jednej maszynie, zablokowana pamięć podręczna, VPN trzymający się resolverów, które już nie są osiągalne, albo oprogramowanie zabezpieczające przechwytujące DNS samodzielnie. Jeśli zawodzi też na telefonie, w zupełnie innej sieci, przejdź do kolejnego pytania, bo usterka nie leży na Twoim urządzeniu ani nawet w Twojej lokalnej sieci.
Czy to tylko jedna strona, czy wszystko jest zepsute?
Spróbuj rozwiązać znaną nazwę, co do której jesteś pewien, że działa, na przykład dużą wyszukiwarkę. Jeśli to też zawodzi, Twój własny resolver jest nieosiągalny albo nie odpowiada, co jest problemem routera albo sieci, nie czymś złym z jedną stroną, którą próbowałeś otworzyć. Jeśli znana nazwa rozwiązuje się bez problemu, a tylko strona, której szukałeś, zawodzi, problem leży po stronie tej jednej domeny: jej rekordów, jej serwerów nazw, albo zmiany wciąż rozprzestrzeniającej się do jednych resolverów, a nie do innych.
Czy zapytanie do publicznego resolvera działa?
Ten pojedynczy test wykonuje więcej pracy triażowej niż cokolwiek innego tutaj, bo w jednym poleceniu oddziela "moją sieć" od "samej domeny":
nslookup example.com 8.8.8.8
dig example.com @1.1.1.1
Zastąp example.com rzeczywistą nazwą, która zawodzi. Możliwe są trzy wyniki, a każdy wskazuje gdzie indziej:
- Dostajesz normalną odpowiedź. Domena rozwiązuje się dobrze z zewnątrz. Twój domyślny resolver, ten, którego skonfigurowane jest do używania Twoje urządzenie albo router, jest zepsutym elementem. To serwer DNS nie odpowiada, jeśli zawodzi po cichu, albo problem z pamięcią podręczną, jeśli zapytanie kiedyś działało i przestało.
- Dostajesz wyraźną odpowiedź "no such name" (NXDOMAIN). Publiczny resolver, który nie ma powodu mieć niczego zapisanego, mówi Ci, że rekord teraz naprawdę nie istnieje, albo że nieaktualna odpowiedź negatywna jest gdzieś w łańcuchu zapisana w pamięci podręcznej. Ten dokładny komunikat i co sprawdzić dalej opisuje DNS_PROBE_FINISHED_NXDOMAIN.
- Dostajesz odpowiedź, ale zajmuje to zauważalnie dużo czasu albo czas jest niespójny między uruchomieniami. Resolver działa, tylko wolno. Dodaj
+statsdo zapytania dig albo obserwuj opóźnienie na oko. To jak naprawić wolne zapytanie DNS, inna przyczyna i inna naprawa niż powyższe dwie.
Co mówi resolvectl status w Linuksie
Na maszynie linuksowej z systemd-resolved jedno polecenie pokazuje, o co Twój system faktycznie pyta, co jest miejscem, w którym zaskakująco często okazuje się, że zgłoszenie "DNS jest zepsute" jest błędne od samego początku:
resolvectl status
Przeczytaj linię "Current DNS Server" dla interfejsu, którego używasz. Jeśli wylicza adres, który nie jest resolverem, jakiego się spodziewasz, na przykład wewnętrzny serwer VPN-u, który nie jest już osiągalny, albo stary adres routera z sieci, którą opuściłeś, ta niezgodność jest całym problemem, i żadne czyszczenie pamięci podręcznej nie naprawi złego adresu. Jeśli wylistowany serwer pasuje do tego, czego oczekujesz, a zapytania wciąż zawodzą, konfiguracja resolvera nie jest problemem, a usterka leży dalej w łańcuchu, wróć do pytań powyżej.
Niedawno zmieniłeś rekord DNS?
Jeśli Ty albo ktoś z Twojego zespołu edytował rekord, przenosił hosting albo zmieniał dostawcę DNS w ciągu ostatniego dnia lub dwóch, a błąd jest niespójny, działający dla jednych, a nie dla innych, to nie jest zepsuty rekord. To spodziewane zachowanie, gdy stare zapisane odpowiedzi wygasają we własnym tempie u różnych resolverów. Ta konkretna sytuacja, w tym jak sprawdzić, czy zmiana faktycznie się zapisała poprawnie, jest opisana w jak sprawdzić propagację DNS. Nie ścigaj "błędu DNS" jako usterki, jeśli oś czasu pokrywa się z niedawną zmianą; daj temu najpierw czas okna TTL.
Najczęściej zadawane pytania
Którego poradnika potrzebuję, jeśli przeglądarka pokazuje konkretny kod błędu?
Poszukaj tego dokładnego kodu. DNS_PROBE_FINISHED_NXDOMAIN oznacza, że nazwa nie istnieje i jest opisany na własnej stronie podlinkowanej wyżej. Ogólny komunikat "DNS server not responding" albo "cannot find server" bez konkretnego kodu pasuje do drugiego pytania na tej stronie: spróbuj zapytać publiczny resolver bezpośrednio i zobacz, który z trzech wyników dostajesz.
Przeszedłem przez sprawdzenia i teraz wszystko się rozwiązuje. Co się stało?
Większość awarii DNS jest przejściowa: resolver był chwilowo przeciążony, wpis w pamięci podręcznej wygasł w trakcie rozwiązywania problemu, albo chwilowy problem sieciowy sam się wyczyścił. Jeśli teraz rozwiązuje się poprawnie i tak zostaje, nie ma już nic do naprawienia. Jeśli wraca sporadycznie, ten wzorzec jest sam w sobie wskazówką i warto sprawdzić, czy koreluje z konkretną porą dnia, siecią albo aplikacją.
Czy błąd DNS to to samo co strona niedziałająca?
Nie, i ta różnica ma znaczenie. Błąd DNS oznacza, że nazwa nigdy się nie rozwiązała do adresu, więc żadne połączenie nigdy nie zostało nawet podjęte. Strona niedziałająca zwykle oznacza, że nazwa rozwiązała się poprawnie, ale serwer nie odpowiedział, odmówił połączenia albo zwrócił stronę błędu. Powyższy test z publicznym resolverem mówi, w której sytuacji jesteś: adres wraca, albo nie.
Dlaczego ta sama domena działa u mnie, a nie u kolegi?
To niemal zawsze cache'owanie, nie zepsuty rekord. Różne sieci używają różnych resolverów, każdy trzymający własną zapisaną kopię odpowiedzi z własnym czasem wygaśnięcia. Jedno z Was może widzieć nieaktualny zapisany wynik, podczas gdy resolver drugiej osoby już się odświeżył. Potwierdź aktualny, poprawny rekord wobec własnych serwerów nazw domeny, zanim uznasz, że coś jest naprawdę nie tak.
Czy powinienem po prostu przełączyć się na publiczny resolver DNS i przestać rozwiązywać problem?
Przełączenie się na 1.1.1.1 albo 8.8.8.8 to rozsądny stały wybór i faktycznie szybko wyklucza zepsuty resolver dostawcy internetu albo routera. To prawdziwa naprawa, gdy Twój domyślny resolver okazuje się problemem, nie tylko obejście, ale nie pomoże, jeśli usterka leży po stronie własnych serwerów nazw domeny, a nie resolvera, który Ci odpowiada.
Gdzie sprawdzić, czy nazwa rozwiązuje się inaczej w różnych krajach?
Resolver w Twojej własnej sieci pokazuje Ci tylko jeden punkt widzenia, a odpowiedzi DNS naprawdę różnią się według regionu podczas migracji albo częściowej awarii. Uruchom to samo wyszukanie z wielu lokalizacji naraz narzędziem do zapytań DNS, które sprawdza z kilku krajów w jednym przebiegu i pokazuje, gdzie odpowiedź się różni albo przekracza limit czasu.