Linux E X P R E S

Facebook

Knot DNS: První zkušenosti z provozu

knotdns.png

Před nedávnem byl veřejnosti představen nový autoritativní server Knot DNS z dílny správce české národní domény, sdružení CZ.NIC. V tomto článku si řekneme, proč Knot DNS používat, proč vlastně vznikl, co děláme pro jeho bezpečnost, a poohlédneme se za dosavadními zkušenostmi z provozu.


A proč to děláte, to nestačí BIND?

Takhle nějak zní vcelku častá otázka, kterou dostávám od kolegů z branže, kteří se nevěnují přímo DNS nebo souvisejícím technologiím, když jim řeknu, na čem poslední roky pracuji. Odpověď je nasnadě, stačí si otázku převést do téměř jakékoliv jiné oblasti – nestačí nám jeden internetový prohlížeč, jeden operační systém, jeden e-mailový klient, jeden HTTP server? V případě DNS serverů, podobně jako i v případě dalšího podobného infrastrukturního softwaru, je však kromě širších možností pro uživatele či specializace na nějakou vlastnost důležitý i bezpečnostní aspekt. Víc implementací znamená větší robustnost infrastruktury. Když bude mít TLD operátor na svých DNS serverech nasazeny dvě různé implementace a jedna z nich bude kompromitována v důsledku nějaké bezpečnostní díry, vyřadí to z provozu celou polovinu serverů. Když bude používat tři implementace, už přijde jen o třetinu serverů.

Vlastnosti, aneb proč zvolit Knot DNS

Knot DNS vyniká zejména v rychlosti odpovídání při malém množství velkých zón. Je proto vhodný především pro správce TLD domén. To však neznamená, že by pro jiné použití nebyl vhodný. Jelikož podporuje téměř všechny významné funkce, jako EDNS0, DNSSEC, NSEC3, AXFR či IXFR, měl by vyhovovat většině běžných prostředí. Chybějící podpora pro TSIG je už ve fázi testování a bude zařazena do další verze.

Jeho další předností je jednoduchý formát konfiguračního souboru, který se lehce vytváří jak ručně, tak automatizovaně. Významnou vlastností je také rychlost načítání zónového souboru. Knot DNS zónové soubory nejdřív kompiluje do vlastního binárního formátu a při startu nebo při přidání zóny načítá už takto zkompilované zóny. Čas potřebný pro načtení jedné zóny je tak výrazně (přibližně desetkrát) kratší, než kdyby měl parsovat a zpracovat textový zónový soubor.

Pro prostředí s velkým počtem zón, které v průběhu času přibývají a ubývají (typicky registrátoři domén druhého řádu), je důležitou vlastností možnost zóny přidávat a odebírat za běhu, tedy bez nutnosti přerušit poskytování služby. Tato vlastnost, v které se Knot DNS liší od NSD, dalšího rychlého DNS serveru, však způsobuje nižší rychlost odpovídání a pomalejší start v takovémto nastavení, než dosahuje třeba zmíněné NSD. Tomuto nedostatku se ještě budeme věnovat při dalším vývoji a věříme, že se nám ho podaří aspoň zmírnit, ne-li úplně odstranit.

Bezpečnost? Testovat, testovat, testovat...

Základem bezpečnosti je především stabilní software s minimálním množstvím chyb. Při vývoji Knot DNS klademe velký důraz na testování. Kromě nasazení v reálném provozu provádíme také testování v laboratorním prostředí, a to na několika úrovních.

Na nejnižší úrovni máme sadu unit testů pro testování API jednotlivých modulů. Server jako celek pak testujeme vlastním nástrojem, který ověřuje odpovědi na různé typy dotazů, schopnost odeslat či přijmout zónu transferem, nebo reakci serveru na různě poškozené pakety. Tento nástroj je postaven nad samostatnou implementaci DNS protokolu v jazyku Go, rovněž z dílny Laboratoří CZ.NIC. Server podrobujeme také zátěžovým testům a konečně i komplexnímu testování v interakci s jinými servery, hlavně s BINDem, který se dá považovat za jakousi referenční implementaci.

V současné době navíc dokončujeme nástroj, který nám umožní porovnávat odpovědi Knot DNS vůči odpovědím jiných serverů. Ten využijeme jednak k srovnávání s ostatními implementacemi a jednak k analýze regresí mezi jednotlivými verzemi Knot DNS.

Něco málo z praxe a výhled do budoucna

Knot DNS byl ve své beta verzi zveřejněn 3. listopadu 2011 na konferenci RIPE 63 ve Vídni. K našemu vlastnímu testovacímu provozu v rámci CZ.NIC tak přibylo také několik prvních uživatelů. I díky nim jsme již opravili několik více či méně závažných chyb. Některé opravy jsme zveřejnili ve verzi 0.8.1, která vyšla 2. prosince, některé se dostanou až do verze 0.9. Ta vyjde začátkem roku 2012 a měla by kromě jiného obsahovat hlavně podporu pro TSIG. V nejbližší době by také měl být Knot DNS nasazen na některých anycastových strojích pro doménu CZ.

Finální verze by měla spatřit světlo světa někdy v prvním čtvrtletí roku 2012, pravděpodobně během února. Časem jsme však, i na základě zpětné vazby od uživatelů či potenciálních uživatelů, přehodnotili, co bude obsahovat. Namísto plánovaných dynamických updatů budou v této verzi zařazeny menší funkce jako NSID, některé bezpečnostní funkce, podpora pro kořenovou zónu, a hlavně budeme věnovat pozornost důkladnému testování v laboratorním i reálném prostředí.

Testování je fajn, ale...

V syntetických testech není samozřejmě možné vyzkoušet všechny možné případy, nastavení, scénáře. Nic proto nenahradí použití v reálném prostředí. Kromě vystavení serveru různým situacím nám pomáhá zlepšovat také naše testovací nástroje, do kterých přidáváme scénáře i na základě v provozu objevených chyb. Proto neváhejte a vyzkoušejte Knot DNS i na svém serveru a podělte se se svými zkušenostmi v e-mailové konferenci knot-dns-users@lists_nic_cz či nás informujte o nalezené chybě na adrese knot-dns@labs_nic_cz. Zdrojové kódy nebo balíčky pro některé distribuce naleznete na stránkách projektu www.knot-dns.cz.

Diskuze (0) Nahoru