A co kdyby se prostě řeklo, že standard nebude 512 bajtů dlouhý UDP packet, do kterého se bude nějak magicky dohackovávat rozšíření, ale že standardem bude už ten rozšířený packet s trochu upravenou strukturou?
Můj smysl pro pořádek v softwéru docela pláče nad současnou situací... Ale zas na druhou stranu... Co si budem povídat... Já to řešit nemusím, a když to baví řešit je, tak ať si to užijou... Stejně ale budu doufat, že když se začne přecházet na technologie jako DNS over HTTPS, tak se nakonec někdo zamyslí, zjistí, že 99% DNS můžeme beztrestně zahodit, a udělá to.
(Neříkám, že v HTTPS není nepořádek. )
Když o tom tvém, a Sinuhetově komentáři uvažuji zpětně, nejspíš se rozcházíme na tom, co znamená udělat nový standard.
Nejsem z těch akademiků, kteří by prohlásili, že DNS je špatně, a od stolu by napsali nějaký úplně nový protokol. Jsem spíš jeden z těch, kteří se podívají, kam se došlo, implementují to čistším způsobem, a zahodí zpětnou kompatibilitu.
No.. Nacpu jeho implementaci do veškerého opensource DNS softwaru co tu teď je, a postarám se aby se to s původním DNS dokázalo vymotat na portu 53.
Pak jen budu čekat, než to nic netušící uživatelé nainstalují na dostatečně velkou část internetu. Mezitím vysvětlím microsoftu, že i oni by se rádi zbavili starého DNS.
No a nakonec prostě vyhodím původní DNS kód.
Za deset let by se mohlo zadařit.
Jedna věc je nové nekompatibilní DNS 2.0 navrhnout, druhá dobře naimplementovat (různé platformy, autoritativní, resolvery, stub-resolvery). A nakonec to nejlepší, přesvědčit ostatní aby na něj přešli – vzpomeňme třeba na IPv6 kde je IMHO větší motivace přejít než by byla u DNS a ta migrace i tak pořád dost drhne.
No jestli 20 let je považováno za nové. Splnit to RFC je snadné – ne-podpora EDNS se signalizuje pomocí návratového kódu FORMERR, a to je respektováno i po tomto únoru. Rozumné servery ale EDNS už dávno podporují.
Přesvědčování zbytku se myslím celkem daří; data pro .cz: https://blog.nic.cz/2019/01/21/temer-vsechny-cz-domeny-jsou-pripraveny-na-unorovou-udrzbu-dns/
Implementace EDNS(0) není nové DNS, dokonce už bych to ani nenazval staré DNS, ale prostě je to integrální součást protokolu.
Cílem je říct, že pokud se rozhodnete naimplementovat si vlastní DNS server (nedělejte to, fakt to nedělejte), tak musí minimálně vracet FORMERR, pokud dostane EDNS(0) paket.
Tak to panejo... Ale pořád... Když si to vezmu z nadhledu, tak v tomhle případě jde o to, že všichni chtějí odstranit hack, který zajišťuje kompatibilitu s těmi, kteří nebyli ochotni implementovat upozornění, že neimplementují rozšíření, které obchází omezení délky paketů (vzniklé v osmdesátých letech) tím, že do skupiny záznamů přidají záznam se speciálním významem.
Vážně. Nedal by se ten bordel z DNS aspoň vykuchat a zahodit?
Citace z článku:
"Protokol DNS vznikl v 80. letech, tedy v době výrazně nižších propustností sítí a především o mnoho řádů nižším výkonem počítačů. Byl proto navržen na protokolu UDP, s pevnými velikostmi jednotlivých parametrů a s mnoha omezeními podřízenými rychlým zpracováním v omezeném prostředí.
Rychle se ale objevily další nápady, jak původní DNS rozšířit, ovšem původní návrh to nijak jednoduše neumožňoval. Jednak byla velikost UDP paketu omezena na 512 bytů, zároveň měly jednotlivé položky v paketu pevně dané místo a velikost a kvůli zpětné kompatibilitě nebylo možné s tím jednoduše hnout.
V roce 1999 (už před 20 lety!) proto vyšel první standard zvaný EDNS, který je ukotven v RFC 2671 a zavedl rozšíření původního protokolu. Protože do hlavičky nelze nic přidávat, byly využity takzvané pseudo-RR záznamy, které se přidávají na konec samotné zprávy. Tam se tedy v EDNS přilepí doplňující informace, které je potřeba přenést. Později byl ještě tento mechanismus doplněn, konkrétně v roce 2013 v RFC 6891."
Aha, děkuji za upozornění. Takže EDNS je obecně způsob, jak do DNS dohackovat rozšíření hlavičky?
Já to beru jako ukázku toho, jaký je v současné implementaci DNS nepořádek. Chápu, že se musí řešit zpětná kompatibilita, ale opravdu se chceme navždy nechat omezovat věcmi vzniklými čtyřiceti lety? Kdybych takovýto kód předal zákazníkovi, tak mě asi zabijou. A je otázka, jestli mě zabije dřív můj šéf nebo zákazník.
Jediny problem je, ze cznic neumi na tento stav korektne reagovat - zejmena ve svem kont resolveru. I proto vznikaji takove prasarny jako to jejich bonzovaci dns violations, atd. Pri tom by stacilo, kdyby se sami ridili svou radou, opravdu neimplementujte ale opravdu ne ale fakt jakoze fakt ne vlastni dns.