Vyjádření k problémům s DNS z víkendu 12-13.10.
Nejraději bychom vyjádření zkrátili do jedné věty: „Chyba Matrixu”, ale víme, že to byste nebyli rádi.
V průběhu minulého týdne se začaly objevovat dotazy od našich zákazníků, proč Public DNS od Google (8.8.8.8) na některé domény vrací občasně odpověď SERVFAIL namísto správné odpovědi. Provedli jsme důkladnou analýzu nastalé situace, přes službu Google (dns.google.com) jsme získali bližší informace, že na straně Google dochází k problémům s validací DNSSEC. Vzhledem k tomu, že z naší strany nebyla od září provedena žádná změna, která by mohla takový stav způsobovat, byli jsme nuceni analyzovat problém mnohem důkladněji.
Veškeré dostupné DNSSEC testy (dns-viz, verisignlabs, cz-nic tester) vycházely zcela bezchybně a všechny námi podepsané domény byly podepsány řádně a korektně. Ze zoufalství jsme začali testovat i některé domény konkurenčních registrátorů používající stejný DNSSEC algoritmus a zjistili, že se chyba projevuje i u nich, byť v menší míře (nemají podepsané všechny domény v nameserverech apod.). Vycházeli jsme tedy z předpokladu, že jsme nalezli společný jmenovatel nastalého problému. Abychom problém otestovali, vygenerovali jsme na doméně gransy.cz stejné záznamy pro ns-ns5 jako má gransy.com a podepsali doménu novým algoritmem ECDSA Curve P-384 with SHA-384. Tyto nově vzniklé nameservery jsme vložili do domény flags.cz kterou jsme taktéž podepsali stejným algoritmem. Po cca hodině jsme vyzkoušeli různé testy a zjistili, že obě domény se validují u Google naprosto perfektně a bez problému (na stejných serverech jako jsou gransy.com atd). Z toho jsme tedy usoudili, že je problém opravdu na straně Google a založili u nich problém ticket s detailním popisem problému. Na ten bohužel nebylo ze strany Google do dnes reagováno.
Protože jsme očekávali, že se Google nebude moc namáhat s reakční dobou, rozhodli jsme se přegenerovat klíče s novým algoritmem i pro domény gransy.com / anycastdns.cz a souběžně jsme provedli analýzu jejich funkčnosti, abychom mohli problémy eliminovat v našem DNS software. Našli jsme jedno nestandardní chování, ze kterého jsme vyvodili, že může daný problém způsobovat (pořád jen týkající se Google DNS) a zatímco jsme řešili změnu klíčů, vývojáři upravili náš DNS software tak aby se toto chovaní eliminovalo.
A zde nastali dva nečekané problémy.
1) V rámci snahy o rychlejší řešení jsme doménu gransy.com přehodili z mixu našeho anycastu a samotných NS přímo na naše DNS ns-ns5.gransy.com. Počet dotazů na doménu gransy.com je však tak obrovský, že začalo docházet k zahlcování jednotlivých nameserverů. Nastala tedy situace, kdy jsme kromě řešení samotného problému museli provést některé optimalizace, než jsme nakonec přepnuli doménu zpět na náš Anycast. Bohužel tento krok byl ve výsledku fatální, neboť jsme si neuvědomili jednu zásadní věc: Pokud chcete využívat DNS v rámci domény, musíte nastavit tzv. Glue IP záznamy (Delegace DNS) které registr pak vygeneruje ve své zóně jako A záznamy. Tím se zajistí, že překlad pro doménu samotnou bude v pořádku, neboť IP adresy nameserverů jsou uloženy výše. Jenže registr toto udělá POUZE v situaci, kdy se nastavují nameservery dané domény přímo na ní samotné, a i když má od nás nastavené Glue IP (Delegované DNS) ale nejsou nastaveny na vlastních doménách, v takovém případě je do zóny nevygeneruje. A to se stalo nám. Doména anycastdns.cz používala nameservery gransy.com, která používala nameservery anycastdns.cz, čímž se překlad zacyklil, a protože nebyla splněna podmínka pro vygenerování adres v registru, tak se nebylo kam dotázat. Tento stav bohužel způsobil, že se v některých lokalitách postupně namesevery gransy.com pomalu odmlčely a problém SERVFAIL se začal dotýkat většího provozu (díky různým cache ne však úplného provozu, navíc se šířil postupně, nikoli najednou). Situaci jsme velice rychle zjistili a opravili tím, že doménu anycastdns.cz jsme předelegovali na doménu gransy.cz, která má řádně delegované Glue IP v registru.
2) Úprava našeho DNS software vyřešila okamžitě problém na Google DNS a ty začaly odpovídat jak mají, již bez SERVFAIL problému. Nicméně daná úprava způsobila problémy u ostatních resolvujicích DNS - Cloudflare/CZ.NIC. Zajímavé je, že oba používají Knot resolver z dílny CZ.NICu, který při testování chování tento problém nevykazoval.
Nakonec jsme úpravu SW revertovali zpět a vyčkali jen na finální propagaci domén gransy.com / anycastdns.cz s novými podpisy.
A proč „Chyba v Matrixu” ? Protože po revertování změn se chyba u Google již neobjevila, a to ani u konkurenčních domén kde jsme ji předtím zaznamenali. Zároveň v průběhu dne bylo problému po internetu výrazně více – i sám CloudFlare hlásil problémy s jejích službou a dají se dohledat z víkendu i jiné hlášení zahraničních uživatelů různých ISP/registrátorů/TLD.
Tedy ve výsledku vlastně vůbec nevíme, co bylo původcem celého problému, a při snaze o jeho řešení jsme nechtěně způsobili problém většího rozsahu.
Nicméně je na celé věci jedno pozitivum, díky tomuto problému jsme přešli na nové mnohem bezpečnější šifrování DNSSEC klíčů, kterým budeme postupně podepisovat zákaznické domény.
Za způsobené komplikace v neděli 13.10. se všem dotčeným zákazníkům velice omlouváme.
Gransy s.r.o.
Společnost GRANSY spravuje domén . Statistika domén >>