Potíže se serverem DNS mohou být za tím, když se s vámi internet „baví neochotně“: když musíte čekat, než se webové stránky začnou načítat… když v nich kusy chybějí a musíte stránku načíst znovu. Nebo když se některý web „odmítá najít“, třebaže jste přesvědčeni o tom, že adresu jste zadali správně.
Servery DNS (Domain Name System) překládají lidmi zapamatovatelné adresy, jako www.chip.cz, na adresy číselné, kterými se řídí počítače — například 213.189.47.92. Internet je postaven tak, že směrovače v něm nemají tušení, kde hledat www.chip.cz — vědí však, kudy na adresu 213.189.47.92. Jestliže svému prohlížeči zadáte, že chcete na chip.cz, musí váš operační systém nejprve zjistit, kde to je.
Na to se musí dotázat serveru DNS; leda tehdy nemusí, dokud si to od posledního dotazu pamatuje — dokud to má v „cachi“ v RAM. Jenže v ní máloco vydrží dlouho. Mnohé adresy mají nastaveno, že v cachi mají vydržet jen minuty; hodiny jsou spíše výjimkou. A jestliže počítač vypnete nebo restartujete, cache je pryč. Z toho vidíte, že bez dobrého spojení se serverem DNS si internetu moc neužijete.
Pak tedy server DNS musí být rychlý a spolehlivý. Když bude odpovídat pomalu, bude vás zdržovat.
Vašemu počítači sděluje číselné adresy DNS serverů běžně místní síť, ke které se připojujete, anebo váš domácí router (který je výchoze vezme od poskytovatele), popřípadě — připojujete‑li se modemem bez routeru — přímo váš poskytovatel. Běžně se sdělují adresy dvou DNS serverů v rámci protokolu DHCP (v rámci dynamického připojování k síti).
Váš poskytovatel připojení zpravidla provozuje vlastní DNS servery. Jenže s nimi nemusíte být spokojeni. Většinou slouží uspokojivě, a jelikož k vám jsou zpravidla (z hlediska sítě) nejblíže, mohou být pro vás i nejrychlejší, ale nemusí. Mohou se ve špičce zpomalovat, mohou mít dokonce výpadek. Na dotaz na adresu málo známého webu mohou odpovídat, že neexistuje (přestože existuje), nebo jim může odpověď trvat dlouho. Anebo mohou být zranitelné vůči útoku…
Okamžitě nejnepříjemnější je úplný výpadek DNS. V tu chvíli se totiž nedostanete nikam, ačkoli jste jinak naprosto připojeni. Dostali byste se všude — kdybyste znali adresy číselné. Možná se ještě chvíli bude načítat několik nedávno navštívených webů, po těch několik minut, co jejich IP adresy vydrží v cachi…
Proti výpadku DNS u poskytovatele se však lze snadno pojistit. Zadejte si více DNS serverů náhradních, a to serverů poskytovaných někým jiným. V nouzi si vybavte dvě adresy: 8.8.8.8 a 8.8.4.4 — to jsou veřejné DNS servery Googlu. Nejspíše pro vás nebudou nejrychlejší a není důvodu běžně jim dávat přednost, ale v okamžiku, kdy nemůžete nikam, mohou být tato dvě čísla záchranou — pokud jste připojeni na úrovni IP. Nemají zakázaný ping, takže jejich dostupnost můžete snadno prověřit i „propingnutím“. (Z příkazového řádku: ping 8.8.8.8)
Náhradní DNS servery se ve Windows zadávají ve vlastnostech každého jednotlivého připojení k internetu (síťového adapteru), ve vlastnostech protokolu TCP/IP. Nejprve najdete místo na dva servery, ale v pokročilém nastavení je možno vložit jich mnohem více, a také jim měnit pořadí, ve kterém se na ně mají Windows obracet.
Anebo můžete vložit jiné DNS servery přímo do domácího routeru. Pak si je z něj vezmou všechna k němu připojená internetová zařízení (v rámci DHCP).
Windows se bohužel obracejí stále na týž DNS server — na první uvedený. Jenom když ten opakovaně neodpoví, zkusí Windows další server v pořadí. Není to moc chytré… Když server odpoví, že adresu nezná, nezkusí se Windows zeptat ještě jiného serveru. A nezkoušejí, zda je jiný rychlejší… Náhradního serveru využijí jen v případě naprostého výpadku prvního. Přesto je lepší mít nastaveny ještě jiné servery než jen ty dva od poskytovatele. Co kdyby vypadly oba?
Které zadat jako náhradu? Výše zmíněnými servery Googlu nic nezkazíte; chcete‑li, můžete k nim přidat servery OpenDNS: 208.67.222.222 a 208.67.220.220. (Ty už si z hlavy asi nezapamatujete.) Na běžné užití jsou žel také spíše pomalejší — jsou od nás prostě příliš daleko. Jinak mají tu výhodu (někdo to považuje za nevýhodu), že zeptáte‑li se na neexistující web, nevrátí chybu, nýbrž vrátí výsledky z vlastního vyhledávače. Jak to vypadá, to si prohlédněte na příkladech omylu „alza.com“, anebo pokusu navštívit neexistující „ipad.apple.com“.
Namísto běžné chybové hlášky si však i některé prohlížeče mohou poradit po svém… Vyhledání podobného nabídne jak Google Chrome, tak Opera. Firefox zobrazí jen chybu… OpenDNS to tak dělá už dlouho, a pro jakýkoli prohlížeč. OpenDNS někdy dokáže zobrazit vysvětlení i v případě jiných chyb, například když web existovat má, ale vypadl ze záznamů DNS…
OpenDNS má i jiné výhody — třeba přímé napojení na PhishTank, tedy by vás nenechala projít na již známý podvodný web — jenže je pro nás pomalejší…
Jak najít servery rychlé
DNS Benchmark od Steva Gibsona je malý nástroj se spoustou funkcí, ale lze jej užít i způsobem docela přímočarým.
DNS Benchmark je jeden spustitelný soubor, který se neinstaluje. Spustit jej můžete, kde chcete. Jen si ve složce, z níž je spuštěn, vytvoří soubor DNSBench.ini, jestliže dáte nejprve vyhledat nejbližší DNS. DNSBench.ini je prostý text, v němž je na každém řádku číselná adresa, a po několika mezerách jmenná adresa serveru DNS (například: 194.228.2.61 dns1.o2isp.cz). Výkon zde uvedených serverů program na vyžádání změří. Soubor můžete upravit i sami. Program jej vždy načte při spuštění, jestliže jej nalezne.
Není‑li soubor přítomen, DNS Benchmark má v sobě seznam asi padesáti obecných veřejných DNS, jenže ty nejsou pro užití z Česka vhodné (jsou daleko). K nim přidá kterékoli DNS již nastavené v systému. Seznam je běžně vypsán na kartě Nameservers. Při každém svém spuštění ověří program okamžitou dostupnost serverů (a další jejich vlastnosti). I toho můžete využít. Je to rychlejší než ručně zadávat „ping“, a prověří to i servery, které na ping neodpovídají. Ostatně to zjišťuje, zda servery skutečně zodpovídají dotazy na DNS, nikoli jen to, že jsou.
Při prvním spuštění nabídne DNS Benchmark na kartě Nameservers vytvoření seznamu serverů blízkých. Můžete to přeskočit klepnutím na „Cancel List Creation“, ale bez blízkých serverů vám DNS Benchmark nebude moci plně pomoci — nedokáže bez toho nabídnout vhodnou náhradu za DNS stávající.
Vytvoření seznamu trvá „kolem 37 minut“, jelikož se padesát nejbližších serverů vybírá z databáze obsahující více než čtyři tisíce známých veřejných DNS. Seznam dáte vytvořit stiskem tlačítka „Build Custom List“. Kdybyste se nejprve rozhodli tento krok přeskočit, kdykoli později jej najdete v nabídce programu, dostupné skrze ikonu programu v levém horním rohu okna.
Zbývá změřit výkon serverů v seznamu a některé si vybrat. Měření, které trvá jen několik minut, pustíte tlačítkem „Run Benchmark“ (anebo kliknutím na logo vpravo nahoře).
Program řadí servery podle výkonu průběžně a běh měření lze i přerušit, ale výsledky budou statisticky spolehlivější, když necháte měření doběhnout. Poté se na kartě Conclusions objeví slovní vyhodnocení (v angličtině). Ale v podstatě jde o to, abyste měli v systému nastaveno alespoň několik různých DNS serverů, všechny z nich spolehlivé, a ten soustavně nejrychlejší jako první.
Doplňujeme: Závěry DNS Benchmark nemusí odpovídat vašemu skutečnému užití DNS.
Karta Conclusions vše předkládá podle statistického vyhodnocení právě proběhlého měření, ale nakonec se musíte rozhodnout sami. Mimo jiné proto, že výsledky opakovaných měření se přece jen liší. Mohou se měnit i v průběhu dne. Na první místo proto dejte ten server, který se na čelních místech drží soustavně.
Program měří servery proti seznamu padesáti celosvětově nejnavštěvovanějších domén. Je možné místo toho změřit výkon na doménách převážně českých. Sníží se tím výrazně časy dotazů necachovaných, ale celkové pořadí serverů to v zásadě neovlivní. Můžete si vytvořit soubor, řekněme, CZ.ini, do kterého opíšete padesát Čechy nejnavštěvovanějších domén podle Alexy…
Proti takovému seznamu domén můžete DNS změřit tak, že program spustíte z příkazového řádku s parametrem: DNSBench /domains CZ.ini
DNS Benchmark má mnoho dalších drobných funkcí, všechny popsány podrobněji, než je zdrávo.
Vybrané servery můžete prověřit ještě na to, zda nejsou zranitelné vůči útoku zvanému „Cache Poisoning“ („otrávení cache“). Nejdříve si možná prověřte, zda váš router takový test vydrží, jelikož některé routery se mohou zhroutit (zaseknout, restartovat, …). Úplně na konci dlouhé, popisné stránky je tlačítko „Initiate Router Crash Test“. Jeho stiskem prověříte, zda váš router ve zdraví ustojí určité neobvyklé pakety… Pokud ano, na konci příští stránky bez potíží naskáče řada zelených kuliček. Jestliže router „nepřežije“, patrně jej budete musit vypnout a zase zapnout. Pak se podívat na stránku výrobce, zda pro router není novější, opravený firmware.
Poté se již vrhněte na zkoušku „oblafnutelnosti“ vybraných DNS serverů. Naspodu stránky čeká tlačítko „Initiate Standard DNS Spoofability Test“…
Nečekali byste to, ale ještě několik let po zveřejnění „Cache Poisoning“ jsou v provozu servery, které by takovému útoku prý mohly podlehnout. Jestliže jste některý zranitelný zařadili mezi „své“, zase jej vyřaďte.