DNS error: co znamená a jak najít skutečnou příčinu
"DNS error" není jeden konkrétní problém; je to nálepka, kterou prohlížeč, router nebo naštvaný kolega použije na jakékoli selhání v kroku vyhledávání jména, a oprava závisí úplně na tom, o kterou z nich jde. Tato stránka je výchozí bod, ne diagnóza: přečtěte si triage kroky níže, spusťte dvě nebo tři kontroly, které se hodí na váš případ, a dovedou vás k návodu, který pokrývá přesně váš příznak.
Co všechno "DNS error" pokrývá
Pod jednou frází se skrývá několik odlišných selhání, která nemají společné nic víc než místo, kde se dějí. Prohlížeč může říct, že název vůbec neexistuje. Může říct, že resolver nikdy neodpověděl. Může se stránka nakonec načíst, jen pomalu, po viditelném zaseknutí. Celá kancelář může ztratit schopnost přeložit jakýkoli název, přestože samotné internetové připojení zůstává funkční. Nebo záznamy vašeho vlastního webu mohou přestat fungovat pro návštěvníky v jednom regionu, zatímco vám samotným připadají naprosto v pořádku. Každá z nich má jinou příčinu a jinou opravu, a žádnou z nich nevyřeší obecná rada "restartujte router a zkuste to znovu", která opraví přesně jednu z pěti.
Zbytek této stránky je krátká sada otázek. Odpovězte na ně v pořadí a dostanete se ke konkrétnímu návodu, který odpovídá tomu, co se děje, místo procházení pěti nesouvisejících seznamů oprav v naději, že jeden z nich pomůže.
Je to jen toto zařízení, nebo všechna?
Zkuste stejné vyhledání na telefonu na mobilních datech, ne na Wi-Fi. Pokud se tam název přeloží a na notebooku selže, problém je lokální: špatné nastavení DNS na tomto jednom počítači, zaseklá cache, VPN držící se resolverů, které už nejsou dostupné, nebo bezpečnostní software, který si DNS zachytává sám. Pokud selže i na telefonu, na úplně jiné síti, přejděte na další otázku, protože chyba není na vašem zařízení, ani na vaší lokální síti.
Je to jen jeden web, nebo je rozbité všechno?
Zkuste přeložit dobře známý název, u kterého jste si jistí, že funguje, třeba velký vyhledávač. Pokud selže i to, váš vlastní resolver je nedostupný nebo neodpovídá, což je problém routeru nebo sítě, ne něco špatně s jedním webem, který jste se snažili otevřít. Pokud se dobře známý název přeloží v pořádku a selže jen web, který jste chtěli, problém sedí u té jedné domény: u jejích záznamů, jejích jmenných serverů, nebo u změny, která se ještě šíří k některým resolverům a k jiným ne.
Funguje vyhledání proti veřejnému resolveru?
Tento jediný test odvádí víc triage práce než cokoli jiného zde, protože jedním příkazem oddělí "moje síť" od "samotná doména":
nslookup example.com 8.8.8.8
dig example.com @1.1.1.1
Nahraďte example.com skutečným názvem, který selhává. Jsou možné tři výsledky, a každý ukazuje jinam:
- Dostanete zpátky normální odpověď. Doména se zvenčí přeloží v pořádku. Rozbitým dílkem je váš výchozí resolver, ať už je jakýkoli nastavený na vašem zařízení nebo routeru. To je DNS server not responding, pokud selhává tiše, nebo problém s cachováním, pokud vyhledání dřív fungovalo a přestalo.
- Dostanete výslovnou odpověď "takový název neexistuje" (NXDOMAIN). Veřejný resolver, který nemá důvod mít cokoli uložené v cache, vám říká, že záznam v tuto chvíli skutečně neexistuje, nebo je někde v řetězci uložená zastaralá negativní odpověď. Přesně tuto zprávu a co zkontrolovat dál popisuje DNS_PROBE_FINISHED_NXDOMAIN.
- Dostanete odpověď, ale trvá to znatelně dlouho, nebo je časování mezi jednotlivými běhy nekonzistentní. Resolver funguje, jen pomalu. Přidejte k dotazu dig
+statsnebo sledujte zpoždění pohledem. To je jak opravit pomalé vyhledávání DNS, jiná příčina s jinou opravou než ty dvě výše.
Co vám na Linuxu řekne resolvectl status
Na počítači s Linuxem používajícím systemd-resolved jeden příkaz ukáže, na co se váš systém skutečně ptá, a tam se překvapivé množství hlášení "DNS je rozbité" ukáže jako chybné hned od začátku:
resolvectl status
Přečtěte si řádek "Current DNS Server" pro rozhraní, které používáte. Pokud uvádí adresu, která není resolverem, jaký byste čekali, například interní server VPN, který už není dostupný, nebo starou adresu routeru ze sítě, kterou jste opustili, ten nesoulad je celý problém, a žádné vyprazdňování cache neopraví špatnou adresu. Pokud uvedený server odpovídá tomu, co byste čekali, a vyhledání pořád selhává, konfigurace resolveru není problém a chyba je dál v řetězci, zpátky u otázek výše.
Nedávno jste změnili DNS záznam?
Pokud jste vy nebo někdo z vašeho týmu v posledním dni nebo dvou upravili záznam, přesunuli hosting nebo přepnuli poskytovatele DNS a chyba je nekonzistentní, funguje pro některé lidi a pro jiné ne, nejde o rozbitý záznam. Je to očekávané chování, dokud staré cachované odpovědi nevyprší vlastním tempem u různých resolverů. Přesně tuto situaci, včetně toho, jak poznat, že se změna skutečně uložila správně, pokrývá jak zkontrolovat šíření DNS. Nehoňte "DNS error" jako chybu, pokud časová osa sedí s nedávnou změnou; dejte tomu nejdřív šanci v rámci okna TTL.
Časté otázky
Který návod potřebuji, když prohlížeč ukáže konkrétní chybový kód?
Hledejte přesně ten kód. DNS_PROBE_FINISHED_NXDOMAIN znamená, že název neexistuje a je pokrytý na vlastní stránce odkazované výše. Obecná zpráva "DNS server not responding" nebo "cannot find server" bez konkrétního kódu odpovídá druhé otázce na této stránce: zkuste přímo veřejný resolver a podívejte se, který ze tří výsledků dostanete.
Spustil jsem kontroly a teď se všechno přeloží v pořádku. Co se stalo?
Většina selhání DNS je přechodná: resolver byl krátce přetížený, položka cache vypršela uprostřed řešení potíží, nebo se výpadek sítě sám vyčistil. Pokud se teď přeloží čistě a zůstane to tak, není co dál opravovat. Pokud se to vrací přerušovaně, sám tento vzorec je stopou, a stojí za to zkontrolovat, jestli koreluje s konkrétní denní dobou, sítí, nebo aplikací.
Je DNS error totéž co web nedostupný?
Ne, a ten rozdíl je důležitý. DNS error znamená, že se název nikdy nepřeložil na adresu, takže se o spojení vůbec nepokusilo. Nedostupný web obvykle znamená, že se název přeložil v pořádku, ale server neodpověděl, odmítl spojení, nebo vrátil chybovou stránku. Test s veřejným resolverem výše vám řekne, ve které situaci jste: adresa se vrátí, nebo ne.
Proč stejná doména funguje mně, ale kolegovi ne?
Skoro vždy je to cachování, ne rozbitý záznam. Různé sítě používají různé resolvery, každý s vlastní uloženou kopií odpovědi a vlastní dobou vypršení. Jeden z vás možná vidí zastaralý cachovaný výsledek, zatímco resolver toho druhého se už obnovil. Před tím, než usoudíte, že je něco skutečně špatně, ověřte aktuální, správný záznam přímo proti vlastním jmenným serverům domény.
Mám prostě přepnout na veřejný DNS resolver a přestat s řešením potíží?
Přepnutí na 1.1.1.1 nebo 8.8.8.8 je rozumná trvalá volba a rychle to vyloučí rozbitý resolver poskytovatele internetu nebo routeru. Je to skutečná oprava, pokud se ukáže, že problémem je právě váš výchozí resolver, ne jen náhradní řešení, ale nepomůže to, pokud se ukáže, že chyba je u vlastních jmenných serverů domény, ne u resolveru, který vám odpovídá.
Kde zkontroluji, jestli se název přeloží jinak v různých zemích?
Resolver ve vaší vlastní síti vám ukáže jen jeden úhel pohledu, a odpovědi DNS se během migrace nebo částečného výpadku podle regionu skutečně liší. Spusťte stejné vyhledání z více lokalit najednou pomocí nástroje pro DNS dotaz, který zkontroluje z několika zemí v jednom průchodu a ukáže, kde se odpověď liší nebo kde vyprší časový limit.