Extension Mechanisms for DNS (EDNS) är en specifikation för att utöka storleken på flera parametrar i DNS-protokollet ( Domain Name System ) som har storleksbegränsningar och som anses av Internet Design Community vara för restriktiva för att utöka funktionaliteten hos protokollet. Den första uppsättningen tillägg publicerades 1999 av Internet Engineering Working Group som RFC 2671, även känd som EDNS0, som uppdaterades i RFC 6891 2013 och ändrade akronymen till EDNS.
Domännamnssystemet utvecklades först i början av 1980-talet. Sedan dess har det gradvis utökats med nya funktioner samtidigt som kompatibiliteten med tidigare versioner av protokollet bibehålls.
Begränsningar i storleken på de få flaggfälten, returkoderna och etiketttyperna som finns tillgängliga i det underliggande DNS-protokollet hindrade vissa önskvärda funktioner från att stödjas. Dessutom begränsades UDP DNS-meddelanden till 512 byte, exklusive IP-protokoll och transportlagerhuvuden [ 1] . Att använda ett virtuellt transportnätverk som använder Transmission Control Protocol (TCP) skulle öka omkostnaderna avsevärt. Detta har blivit ett stort hinder för att lägga till nya funktioner till DNS. 1999 föreslog Paul Vixey att utöka DNS till att omfatta nya flaggor och svarskoder, samt stöd för längre svar i ett ramverk som var bakåtkompatibelt med tidigare implementeringar.
Eftersom inga nya flaggor kan läggas till i DNS-huvudet, lägger EDNS till information till DNS-meddelanden i form av pseudo-resursposter ("pseudo-RR") som ingår i avsnittet "Ytterligare data" i DNS-meddelandet. Observera att det här avsnittet finns i både förfrågningar och svar.
EDNS representerar en typ av pseudo-RR: OPT.
Som pseudo-RR:er förekommer aldrig OPT-typ RR i någon zonfil; de finns bara i meddelanden som produceras av DNS-deltagare.
Mekanismen är bakåtkompatibel eftersom äldre DNS-svar ignorerar eventuella RR:er av okänd OPT-typ i en begäran, och en nyare DNS-svarare inkluderar aldrig en OPT i ett svar om det inte fanns med i begäran. Närvaron av en OPT i en begäran innebär att den nyare förfrågaren vet vad den ska göra med OPT i svaret.
OPT-pseudo-posten ger utrymme för upp till 16 flaggor och utökar utrymmet för svarskoden. Den totala UDP-paketstorleken och versionsnumret (för närvarande 0) finns i OPT-posten. Datafältet med variabel längd tillåter att ytterligare information registreras i framtida versioner av protokollet. Det ursprungliga DNS-protokollet gav två typer av etiketter, som definieras av de två första bitarna i DNS-paket (RFC 1035): 00 (standardetikett) och 11 (komprimerad etikett). EDNS introducerar etikett typ 01 som en utökad etikett. De lägre 6 bitarna av den första byten kan användas för att definiera upp till 63 nya utökade etiketter.
Ett exempel på en OPT-pseudo-post som visas av verktyget Domain Information Groper (dig):
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; UDP: 4096
Resultatet "EDNS: version: 0" indikerar full överensstämmelse med EDNS0 [2] . Resultatet av "flags: do" indikerar att "DNSSEC OK" är inställt.
EDNS är viktigt för att implementera DNS Security Extensions (DNSSEC). EDNS används också för att skicka generisk information från resolvers till namnservrar om klienternas geografiska placering som ett EDNS Client Subnet (ECS)-alternativ.
Det finns förslag på hur man använder EDNS för att ange hur mycket utfyllnad som ska finnas runt ett DNS-meddelande och för att ange hur länge en TCP-anslutning ska hållas vid liv.
I praktiken kan EDNS-traversalbrandväggar vara svåra att använda eftersom vissa brandväggar accepterar en maximal DNS-meddelandelängd på 512 byte och blockerar längre DNS-paket.
Införandet av EDNS möjliggjorde DNS-förstärkningsattack, en typ av reflekterad denial of service-attack, eftersom EDNS ger mycket stora svarspaket jämfört med relativt små frågepaket.
IETF DNS Extensions (dnsext) arbetsgruppen har slutfört arbetet med EDNS0-förfiningen, som har publicerats som RFC 6891.