Extension Mechanisms for DNS (EDNS) je specifikace pro rozšíření velikosti několika parametrů protokolu Domain Name System (DNS), které mají omezení velikosti a jsou komunitou Internet Design Community považovány za příliš omezující na rozšíření funkčnosti protokolu. První sada rozšíření byla publikována v roce 1999 Internet Engineering Working Group jako RFC 2671, také známá jako EDNS0, která byla aktualizována v RFC 6891 v roce 2013 a změnila zkratku na EDNS.
Systém doménových jmen byl poprvé vyvinut na počátku 80. let. Od té doby byl postupně rozšiřován o nové funkce při zachování kompatibility s dřívějšími verzemi protokolu.
Omezení velikosti několika polí příznaků, návratových kódů a typů štítků dostupných v základním protokolu DNS bránila podpoře některých žádoucích funkcí. Kromě toho byly UDP DNS zprávy omezeny na 512 bajtů, s výjimkou IP protokolu a hlaviček transportní vrstvy [1] . Použití virtuální transportní sítě využívající Transmission Control Protocol (TCP) by výrazně zvýšilo režii. To se stalo hlavní překážkou přidávání nových funkcí do DNS. V roce 1999 Paul Vixey navrhl rozšíření DNS tak, aby zahrnovalo nové příznaky a kódy odpovědí, stejně jako podporu delších odpovědí v rámci, který byl zpětně kompatibilní s předchozími implementacemi.
Protože do hlavičky DNS nelze přidávat žádné nové příznaky, EDNS přidává do zpráv DNS informace ve formě záznamů pseudozdrojů ("pseudo-RR") obsažených v části "Další data" zprávy DNS. Všimněte si, že tato část existuje v žádostech i odpovědích.
EDNS představuje jeden typ pseudo-RR: OPT.
Jako pseudo-RR se RR typu OPT nikdy neobjeví v žádném souboru zóny; existují pouze ve zprávách vytvořených účastníky DNS.
Mechanismus je zpětně kompatibilní, protože starší DNS respondéry ignorují všechna RR neznámého typu OPT v požadavku a novější DNS respondér nikdy nezahrnuje OPT do odpovědi, pokud v požadavku nebyl přítomen. Přítomnost OPT v požadavku znamená, že novější žadatel ví, co má dělat s OPT v odpovědi.
Pseudozáznam OPT poskytuje prostor až pro 16 příznaků a rozšiřuje prostor pro kód odpovědi. Celková velikost paketu UDP a číslo verze (aktuálně 0) jsou uvedeny v položce OPT. Datové pole proměnné délky umožňuje zaznamenat další informace v budoucích verzích protokolu. Původní protokol DNS poskytoval dva typy štítků, které jsou definovány prvními dvěma bity v paketech DNS (RFC 1035): 00 (standardní štítek) a 11 (komprimovaný štítek). EDNS zavádí štítek typu 01 jako rozšířený štítek. Spodních 6 bitů prvního bajtu lze použít k definování až 63 nových rozšířených návěští.
Příklad pseudozáznamu OPT zobrazeného nástrojem Domain Information Groper (dig):
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; UDP: 4096
Výsledek "EDNS: verze: 0" označuje plnou shodu s EDNS0 [2] . Výsledek "flags: do" znamená, že "DNSSEC OK" je nastaveno.
EDNS je nezbytný pro implementaci rozšíření DNS Security Extensions (DNSSEC). EDNS se také používá k odesílání obecných informací z překladačů jmenným serverům o geografické poloze klientů jako možnost EDNS Client Subnet (ECS).
Existují návrhy pro použití EDNS ke specifikaci toho, jak velká výplň by měla být kolem zprávy DNS, a k určení, jak dlouho by mělo být udržováno připojení TCP.
V praxi může být použití EDNS traversal firewallů obtížné, protože některé firewally přijímají maximální délku DNS zprávy 512 bajtů a blokují delší DNS pakety.
Zavedení EDNS umožnilo útok na zesílení DNS, což je typ odraženého útoku odmítnutí služby, protože EDNS poskytuje velmi velké pakety odpovědí ve srovnání s relativně malými pakety dotazů.
Pracovní skupina IETF DNS Extensions (dnsext) dokončila práci na vylepšení EDNS0, které bylo publikováno jako RFC 6891.