Pokud vim, ve srovnani s bind mu chybi jenom rekurze (a s tim souvisejici veci). Jak uz je v clanku spomenuto, na to je "knot resolver", jenze ten zas neumi byti autoritativni. A soubezne na stejnem stroj bezet "nemuzou", protoze oba potrebuji port 53.
Osobne mi tohle deleni funkci spis vadi, a byl bych radsi kdyby tady byl jen jeden Knot, kterej by ale umel vsechny podstatne veci kolem dns. Vzdyt mit dn-server jako autoritativni (pro sve domeny) a zaroven rekurzivni+cache (pro vse ostatni) je pomerne bezna konfigurace, alespon v pripade "malych" uzivatelu. Knot ale spise cili na isp/backbone, a tam je oddeleni autoritativnich a rekurzivnich resolveru bezne.
Míchání autoritativní a rekurzivní funkce na jednom serveru je velmi silně nedoporučováno a způsobuje to mnohé problémy. Sám už jsem tohle v praxi několikrát řešil, teď zrovna před několika málo dny.
Typický příklad: v datacentru byl server, kam si klienti dávali zóny a ten pro ně zároveň fungoval jako rekurzor. Můj klient ale změnil záznam v nadřazené zóně a začal používat jiné autoritativní servery. V tu chvíli mu přestala chodit pošta od jiných klientů ve stejném datacentru, což byl dost zásadní problém, protože zrovna mezi nimi probíhala běžně čilá komunikace (různé úřady v jednom datacentru).
Ukázalo se, že na vině byl právě místní autoritativní server, který pro vybrané domény nechodil do globálního DNS stromu, ale vyřizoval je sám jako autoritativní server. Tím pádem neměl jak zaregistrovat globální změnu delegace zóny a tvrdošíjně odpovídal vlastními autoritativními záznamy z disku.
To je jen jeden příklad, ale demonstruje ten hlavní problém, kvůli kterému já nikdy nemíchám tyhle dvě funkce. Používám mnoho různých DNS serverů (Knot, NSD, BIND, Unbound…) a jedině BIND umí takhle smíchat funkce dvou různých DNS prvků. Nikdy to nepoužívám, protože je to nebezpečné.
Jistě mohou běžet na stejném stroji, například každý na jiné IP adrese.
Svůj lokální DNS resolver nedoporučuji vystavovat do internetu ("open resolver"), nabízí se tedy použít něco z privátních IPv4 rozsahů. Naopak autoritativní DNS musí být přístupné odevšad a tedy mít veřejnou adresu... se stejnou IP-port kombinací by to i na firewallu nebylo jednoduché odlišit.
Použití dnsmasq jako autoritativního serveru... snad nebylo myšleno opravdu vážně. Jako DNS "proxy" (+DHCP) na minimalistickém SOHO routeru to smysl nejspíš má (a třeba si tam i přihoďte definici několika "autoritativních jmen"), ale to je něco jiného.
Jsem vývojář Knot Resolveru.
Prečo? Ja som práve rád, že existuje Knot Resolver, ktorým som nahradil dnsmasq na svojej vlastnej sieti - čo by malo byť to primitívne nasadenie. Robí to presne tú jednu vec, čo chcem (PS: Aj v Knot Resolver-e sa dajú vytvoriť svoje vlastné interné domény a priradiť im konkrétna IP adresa a ako bonus to zvláda DoH.)
14. 10. 2021, 16:47 editováno autorem komentáře
Nevím přesně na co se ptáte. Proč se interně liší? Prostě je to tak. Každý server dělá něco jiného, a proto se liší jak struktury pro uložení dat (správa a reprezentace zón vs keš), tak i jejich zpracování (autoritativní odpovídání a podepisování vs resolver a validátor). I síťování se liší mezy Knoty (asynchronní vs synchronní). Samozřejmě to lze všechno naházet na jednu hromadu, ale kromě zmíněných nevýhod pro uživatele se takový projekt i hůře spravuje, trpí výkon a zbytečně to celé bobtná. Jinak společné obecné části kódu máme ve sdílených knihovnách. Rekurzor má být co nejjednodušší. Jak píšete, tak pro vaše použití evidentně vystačí jen DNS resolver s možností definice pár výjimek. To nabízí snad všechny implementace.
Jak píšou ostatní, mít autoritativní i rekurzivní server v jediné instanci prakticky vždycky znamená, že to máte špatně – a je jenom otázka času, kdy se ta chyba projeví. Pro správné vyřízení dotazu je totiž potřeba vědět, zda se má server chovat jako rekurzivní nebo jako autoritativní. A z dotazu klienta se to nedá poznat. Takže v téhle konfiguraci by si autoritativní server měl při každém dotazu ověřovat u nadřazeného serveru, zda je ještě stále autoritativní pro danou doménu – a to žádný server nedělá, pokud vím. Pak přesně dochází k těm situacím, co popisoval Petr – někdo se zeptá rekurzivního serveru, ten si myslí, že je na ten dotaz autoritativní a iniciativně odpoví ze své zóny, jenže odpoví špatně, protože skutečná zóna je dávno někde jinde.
Máte pravdu, seznam funkcí jsem mohl zmínit. Tak alespoň https://www.knot-dns.cz/docs/3.1/html/introduction.html#knot-dns-features. Pokud vás zajímá velmi hrubé srovnání, můžete kouknout třeba na https://en.wikipedia.org/wiki/Comparison_of_DNS_server_software Obecné porovnání by ale měl dělat někdo nezávislý např. https://blog.apnic.net/2021/02/25/putting-dnssec-signers-to-the-test-knot-vs-bind/ Ještě mohu nabídnout https://www.knot-dns.cz/benchmark/ a starší https://www.knot-dns.cz/benchmark-old/