Az Extension Mechanisms for DNS (EDNS) egy specifikáció a tartománynévrendszer (DNS) protokoll számos olyan paraméterének kiterjesztésére, amelyek mérete korlátozott, és amelyeket az Internet Design Community túlságosan korlátozónak ítél a protokoll funkcionalitásának kiterjesztéséhez. A kiterjesztések első sorozatát 1999-ben tette közzé az Internet Engineering Working Group RFC 2671 néven, más néven EDNS0, amelyet 2013-ban frissítettek az RFC 6891-ben, és a betűszót EDNS-re változtatták.
A Domain Name Systemet először az 1980-as évek elején fejlesztették ki. Azóta fokozatosan új funkciókkal bővült, miközben megtartja a kompatibilitást a protokoll korábbi verzióival.
Az alapul szolgáló DNS-protokollban rendelkezésre álló néhány jelzőmező, visszatérési kód és címketípus méretének korlátai miatt bizonyos kívánatos szolgáltatások nem támogatottak. Ezenkívül az UDP DNS-üzenetek 512 bájtra korlátozódtak, nem számítva az IP-protokoll és a szállítási réteg fejléceit [1] . A Transmission Control Protocolt (TCP) használó virtuális szállítási hálózat használata jelentősen megnövelné a többletköltséget. Ez komoly akadálya lett a DNS új szolgáltatásokkal való kiegészítésének. 1999-ben Paul Vixey javasolta a DNS kiterjesztését új zászlókkal és válaszkódokkal, valamint a hosszabb válaszok támogatását egy olyan keretrendszerben, amely visszafelé kompatibilis a korábbi megvalósításokkal.
Mivel nem adható hozzá új jelző a DNS-fejléchez, az EDNS információkat ad a DNS-üzenetekhez pszeudo-erőforrás rekordok ("pszeudo-RR") formájában, amelyek a DNS-üzenet "További adatok" szakaszában találhatók. Vegye figyelembe, hogy ez a szakasz a kérésekben és a válaszokban is megtalálható.
Az EDNS a pszeudo-RR egy típusát képviseli: OPT.
Pseudo-RR-ként az OPT típusú RR-ek soha nem jelennek meg egyetlen zónafájlban sem; csak a DNS-résztvevők által létrehozott üzenetekben léteznek.
A mechanizmus visszafelé kompatibilis, mivel a régebbi DNS-válaszadók figyelmen kívül hagynak minden ismeretlen OPT-típusú RR-t a kérésben, és az újabb DNS-válaszadó soha nem tartalmaz OPT-t a válaszban, ha az nem volt jelen a kérésben. Az OPT jelenléte a kérésben azt jelenti, hogy az újabb kérelmező tudja, mit kell tennie a válaszban szereplő OPT-vel.
Az OPT pszeudorekord legfeljebb 16 jelző számára biztosít helyet, és kibővíti a válaszkód területét. A teljes UDP-csomag mérete és verziószáma (jelenleg 0) az OPT bejegyzésben található. A változó hosszúságú adatmező lehetővé teszi további információk rögzítését a protokoll jövőbeli verzióiban. Az eredeti DNS-protokoll kétféle címkét biztosított, amelyeket a DNS-csomagok első két bitje határoz meg (RFC 1035): 00 (szabványos címke) és 11 (tömörített címke). Az EDNS a 01-es címketípust kiterjesztett címkeként vezeti be. Az első bájt alsó 6 bitje legfeljebb 63 új kiterjesztett címke meghatározására használható.
Példa a Domain Information Groper (dig) segédprogram által megjelenített OPT pszeudorekordra:
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; UDP: 4096
Az "EDNS: verzió: 0" eredmény az EDNS0-nak való teljes megfelelést jelzi [2] . A "flags: do" eredménye azt jelzi, hogy a "DNSSEC OK" be van állítva.
Az EDNS elengedhetetlen a DNS biztonsági bővítmények (DNSSEC) megvalósításához. Az EDNS-t arra is használják, hogy általános információkat küldjenek a feloldóktól a névszerverekhez az ügyfelek földrajzi elhelyezkedéséről, mint EDNS-kliens alhálózat (ECS).
Vannak javaslatok az EDNS használatára annak meghatározására, hogy mekkora kitöltés legyen egy DNS-üzenet körül, és hogy mennyi ideig kell életben tartani a TCP-kapcsolatot.
A gyakorlatban az EDNS bejárási tűzfalak használata nehézkes lehet, mivel egyes tűzfalak 512 bájt maximális DNS-üzenethosszt fogadnak el, és blokkolják a hosszabb DNS-csomagokat.
Az EDNS bevezetése lehetővé tette a DNS-erősítő támadást, egyfajta szolgáltatásmegtagadási támadást, mivel az EDNS nagyon nagy válaszcsomagokat biztosít a viszonylag kis lekérdezési csomagokhoz képest.
Az IETF DNS Extensions (dnsext) munkacsoportja befejezte az RFC 6891-es néven közzétett EDNS0 finomítási munkálatokat.