A Domain Name System (DNS), azaz a tartománynévrendszer egy hierarchikus, nagymértékben elosztott elnevezési rendszer számítógépek, szolgáltatások, illetve az internetre vagy egy magánhálózatra kötött bármilyen erőforrás számára. A részt vevő entitások számára kiosztott tartománynevekhez (doménekhez) különböző információkat társít. Legfontosabb funkciójaként az emberek számára értelmes tartományneveket a hálózati eszközök számára érthető numerikus azonosítókká „fordítja le”, „oldja fel”, melyek segítségével ezeket az eszközöket meg lehet találni, meg lehet címezni a hálózaton.
Gyakran használt analógia a tartománynévrendszer magyarázatához, hogy az internet egyfajta telefonkönyve, amiből ki lehet keresni az emberek számára értelmezhető számítógép-állomásnevekhez tartozó IP-címeket. Például a www.example.com tartománynévhez a 192.0.32.10 (IPv4) és a 2620:0:2d0:200::10 (IPv6) címek tartoznak.
A DNS lehetővé teszi internetes erőforrások csoportjaihoz nevek hozzárendelését olyan módon, hogy az ne függjön az erőforrások fizikai helyétől. Így a világhálós (WWW) hiperlinkek, internetes kapcsolattartási adatok konzisztensek és állandóak maradhatnak akkor is, ha az internet útválasztási rendszerében változás történik, vagy a részt vevő mobileszközt használ. Az internetes tartománynevek további célja az egyszerűsítés, egy doménnevet (pl. www.example.com) sokkal könnyebb megjegyezni, mint egy IP-címet, mint 208.77.188.166 (IPv4) vagy 2001:db8:1f70::999:de8:7648:6e8 (IPv6). A felhasználók így megjegyezhetik a számukra jelentést hordozó web- (URL) és e-mail-címeket, anélkül, hogy tudnák, a számítógép valójában hogyan éri el ezeket.
A DNS-ben a doménnevek kiosztásának és az IP-címek hozzárendelésének a felelősségét delegálják; minden tartományhoz mérvadó névkiszolgáló (autoritatív névszerver) tartozik. A mérvadó névkiszolgálók felelősek a saját doménjeikért. Ezt a felelősséget tovább delegálhatják, így az al-doménekért más névkiszolgáló felelhet. Ez a mechanizmus áll a DNS elosztott és hibatűrő működése mögött, és ezért nem szükséges egyetlen központi címtárat fenntartani és állandóan frissíteni.
A tartománynévrendszerben egyéb információkat is tárolnak, például egy adott internetes tartomány számára e-mailt fogadó levelezőkiszolgálók listáját. Az egész világot behálózó, elosztott, kulcsszó-alapú átirányítási szolgáltatásként a Domain Name System az internet funkcionalitásának alapvető fontosságú eleme.
RFID tagek, UPC-k, IP-telefonszámok és még sok más egyéb tárolására is használható a DNS adatbázisa.
A Domain Name System specifikálja az adatbázis technikai képességeit, emellett leírja az internetprotokollcsalád részét képező DNS protokollt, részletesen meghatározza a DNS-ben használt adatstruktúrákat és kommunikációt.
Áttekintés Az internet működéséhez két fő névteret tartanak fönt: a tartománynév-hierarchiátRFC 1034, Domain Names – Concepts and Facilities, P. Mockapetris, The Internet Society (November 1987) és az IP-címteret.RFC 781, Internet Protocol – DARPA Internet Program Protocol Specification, Information Sciences Institute, J. Postel (Ed.), The Internet Society (September 1981) A Domain Name System a tartománynév-hierarchiát üzemelteti és fordítási szolgáltatást nyújt a tartománynevek és az IP-címterek között. Az internetes névkiszolgálók és hálózati protokollok segítségével valósul meg a Domain Name System.RFC 1035, Domain Names – Implementation and Specification, P. Mockapetris, The Internet Society (November 1987) A DNS-névkiszolgáló olyan kiszolgáló, ami egy tartománynévhez tartozó DNS-erőforrásrekordokat tárol, például cím- (A), névkiszolgáló- (NS) vagy levelezőkiszolgáló- (MX) rekordokat (lásd: DNS-rekordtípusok listája); a kiszolgáló funkciója a tárolás mellett, hogy a felé indított lekérdezésekre válaszokat küldjön vissza.
Történet Már az ARPANET idejében megjelent annak gyakorlata, hogy egy állomás numerikus hálózati címét egyszerűbb, könnyebben megjegyezhető szöveges névvel váltsák fel. A DNS 1982-es kifejlesztése előtt a hálózaton lévő számítógépeknek egy az SRI-nél (stanfordi kutatóintézet) lévő számítógépről kellett lehúzniuk egy HOSTS.TXT nevű fájlt.RFC 3467, Role of the Domain Name System (DNS), J.C. Klensin, J. Klensin (February 2003) Ez a HOSTS.TXT fájl tartalmazta a nevek és numerikus címek közötti összerendeléseket. A legtöbb modern operációs rendszerben most is létezik hosts fájl, általában gyári állapotában egy a 127.0.0.1 címet a „localhost”-hoz rendelő sort tartalmaz. Több operációs rendszerben konfigurálható, hogy a névfeloldás milyen sorrendben vegye figyelembe a lehetséges forrásokat, köztük a hosts fájl tartalmát.
A hálózat gyors növekedése miatt hosszú távon lehetetlen volt egyetlen, központilag, kézzel frissített HOSTS.TXT-fájlt fenntartani; szükségessé vált egy jobban skálázható, a szükséges információkat automatikusan beszerezni képes rendszer üzembe állítása.
Jon Postel kérésére Paul Mockapetris 1983-ban kifejlesztette a Domain Name System specifikációit és protokolljait, és meg is írta az első implementációt. Az eredeti specifikációkat az Internet Engineering Task Force az RFC 882-ben és az RFC 883-ban publikálta, amiket 1987 novemberében az RFC 1034 és az RFC 1035 váltott fel. Azóta számos további RFC-t adtak ki az alap DNS-protokollok kiegészítésére.
1984-ben négy berkeleyes diák – Douglas Terry, Mark Painter, David Riggle és Songnian Zhou – írta az első Unix-implementációt, a Berkeley Internet Name Domain (BIND) szervert.Douglas Brian Terry, Mark Painter, David W. Riggle and Songnian Zhou, The Berkeley Internet Name Domain Server, Proceedings USENIX Summer Conference, Salt Lake City, Utah, June 1984, pages 23–31. 1985-ben, a DEC-nél dolgozó Kevin Dunlap nagy mértékben újraírta a DNS-implementációt. Azóta a BIND-ot Mike Karels, Phil Almquist és Paul Vixie tartotta karban. A BIND-ot az 1990-es évek elején ültették át Windows NT platformra. A BIND széles körben elterjedt, főleg UNIX rendszereken, és az interneten a leggyakrabban használt DNS-szoftver. Elterjedtsége miatt a támadások célpontja, a BIND 4-ben és a BIND 8-ban egy időben olyan sok biztonsági rést találtak, hogy a használatát ellenjavallták.P. Hudson, A. Hudson, B. Ball, H. Duff: Red Hat Fedora 4 Unleashed, page 723. Sams Publishing, 2005 Azóta számos új DNS-szerverszoftver tudott elterjedni. A BIND 9-es verzióját az alapoktól újraírták, így már a többi DNS-szerverhez mérhető a biztonságossága.
Szerkezete Tartománynévtér A DNS-névtér leírásával az RFC 1034 (Doménnevek – alapelvek és képességek) és az RFC 1035 (Doménnevek – implementáció és specifikáció) foglalkozik.
A DNS fordított fastruktúrájú hierarchiáját egymásba ágyazott tartományok (domének) alkotják, melyek szintjeit ponttal választják el egymástól, fontosságuk pedig jobbról balra haladva egyre csökkenő, pl. sub-b.sub-a.example.com. A fa minden leveléhez vagy csomópontjához nulla vagy több, a hozzá tartozó tartomány információit tároló erőforrásrekord tartozik. A fa adminisztratív egységekre, zónákra van osztva, a gyökérzónától kezdődően. Egy-egy DNS-zóna a fa összefüggő, önálló egységként kezelt része, állhat egyetlen doménből vagy tartozhat alá számos domén és aldomén, a kezelő által kiosztott adminisztrációs jogoktól függően.
Egy zóna kezelője (földrajzi, topológiai vagy strukturális okokból) tovább delegálhatja a hozzá tartozó zóna egy része fölötti adminisztrációs jogát más feleknek. Ilyenkor a delegálással lényegében korlátozásmentes autonómiát ad át az allokált névtér fölött, a régi zóna adminisztrátorai, névkiszolgálói már nem mérvadóak az új zónára nézve.
Tartománynév-szintaxis A tartománynevek szintaxisával kapcsolatos szabályokat az RFC 1035, az RFC 1123 és az RFC 2181 írja le. A tartománynév egy vagy több címke (label) láncolatából áll, melyeket pontok választanak el egymástól, pl. example.com. – a gyökérzónára utaló, leghátsó pont általában elhagyható, de hivatalosan az is része a teljes doménnévnek.
A jobbszélső címke a legfelső szintű tartományt jelzi; például a www.example.com a com legfelső szintű tartományhoz tartozik. A tartományi hierarchia jobbról balra ereszkedik lefelé; két egymás melletti címke közül a bal oldali a tőle jobbra eső címke egy aldoménjét határozza meg. Az előbbi példában az example a com domén aldoménje, a www pedig az example.com-é. Ez a hierarchia legfeljebb 127 szintű lehet. Egy-egy címke legfeljebb 63 oktet hosszúságú lehet, a teljes tartománynév a pontokkal együtt nem haladhatja meg a 253 oktetet.RFC 2181, Clarifications to the DNS Specification, R. Elz, R. Bush (July 1997) Ez a korlát a DNS belső, bináris reprezentációjában 255 oktet. A gyakorlatban egyes DNS-szoftvereknek további korlátaik lehetnek. A DNS protokoll önmagában nem szab korlátot a DNS-név címkéiben szereplő karaktereknek, elméletileg tetszőleges bináris karakterlánc előfordulhat benne. Az internet DNS-gyökérzóna tartományneveiben és a legtöbb aldomén nevében azonban egy preferált formátum és karakterkészlet használatos. A címkékben az ASCII karakterkészlet egy részhalmaza engedélyezett, ami az angol ábécé kis- és nagybetűiből, 0-9-ig a számokból és a kötőjelből áll. A tartománynevek kiértékelése kisbetű-nagybetű érzéketlen módon történik. Network Working Group of the IETF, January 2006, RFC 4343: Domain Name System (DNS) Case Insensitivity Clarification A címkék nem kezdődhetnek vagy végződhetnek kötőjellel, és nem állhatnak csupa számból (bár létezik az interneten olyan tartománynév, ami nem tartja be ezt a szabályt).RFC 3696, Application Techniques for Checking and Transformation of Names, J.C. Klensin, J. Klensin Az állomásnév (hosztnév, hostname) olyan tartománynév, amihez legalább egy IP-cím hozzá van rendelve. Például a www.example.com és az example.com tartománynevek egyben állomásnevek is, míg a com tartománynév nem az.
Egy teljesen minősített tartománynév (Fully Qualified Domain Name (FQDN)) például a „www.wikipedia.com.” (az utolsó pont is a tartománynévhez tartozik).
Nemzetközi tartománynevek
A DNS történelmi okokból korlátozott karakterkészlete nem tette lehetővé, hogy az angoltól különböző nyelvek és írásrendszerek betűi szerepeljenek a tartománynevekben. Az IDNA (magyarul „Alkalmazásokban használt nemzetközi tartománynevek”) nevű rendszerRFC 3490, IDN in Applications, Faltstrom, Hoffman, Costello, Internet Engineering Task Force (2003) segítségével az ASCII kódtáblán kívül eső karakterekkel (akár a magyar ábécé ékezetes karaktereivel, cirill betűkkel vagy arab írással) írt tartományneveket a Punycode átírás segítségével végső soron ASCII karakterláncokként tárolják a DNS-ben. Az ICANN 2009-ben hagyta jóvá a nemzetközi tartományneveket az országkód szerinti legfelső szintű tartományok esetében. Azóta több TLD regisztrátora alkalmazza az IDNA-t.
Névkiszolgálók
A tartománynévrendszer kliens-szerver modellt alkalmazó elosztott adatbázisra épül. Az adatbázis csomópontjait a tartományhoz irányuló kérdésekre válaszoló névkiszolgálók alkotják. Léteznek autoritatív és nem autoritatív (mérvadó/nem mérvadó) névkiszolgálók. Minden tartományhoz tartozik legalább egy mérvadó DNS-kiszolgáló, ami felelősként információt nyújt a tartományáról, illetve az alárendelt tartományok névkiszolgálóiról. A hierarchia csúcsán a gyökér-névkiszolgálók állnak, melyekhez a legfelső szintű tartományok feloldásakor kell fordulni.
Mérvadó névkiszolgálók Az a névkiszolgáló tekinthető mérvadónak („autoritatívnak”) egy zónára nézve, ami olyan válaszokat ad vissza, amit az eredeti, „mérvadó” forrás (a tartomány adminisztrátora kézzel, vagy valamilyen dinamikus DNS-kezelő módszer segítségével) konfigurált, emiatt „biztonságosnak” tekinthetők – szemben a másod- vagy harmadkézből, egy más DNS-kiszolgáló lekérdezésével kapott válaszokkal.
A kizárólagosan mérvadó (authoritative-only) névkiszolgáló csak azokat a lekérdezéseket válaszolja meg, amire nézve mérvadó, tehát amit az adminisztrátor bekonfigurált.