DNS (Domain Name System)

botond küldte be 2018. 06. 22., p – 21:26 időpontban

Tartalom

 

Ismertető

A DNS (Domain Name System, azaz tartománynévrendszer) egy hierarchikus decentralizált elnevezési rendszer számítógépekhez, szolgáltatásokhoz vagy más erőforrásokhoz, amelyek az internethez vagy egy magánhálózathoz kapcsolódnak. A rendszer információkat társít a hálózatban részt vevő egységek számára kiosztott tartománynevekhez. Leginkább az ember számára is jól olvasható és megjegyezhető neveket fordítja át a hálózati eszközökhöz rendelt numerikus számokká (IP-címekké), hogy a hálózaton lévő számítógépek beazonosíthassák egymást. Az egész világra kiterjedő, elosztott címtár szolgáltatás révén a Domain Name System az 1985 óta működő internetes funkciók egyik alapvető eleme.

A DNS rendszer átruházza a domain nevek hozzárendelésének és a nevek leképezésének felelősségét az internetes erőforrásokra, azáltal, hogy minden domainhez engedélyezi a mérvadó névszervereket. Ezek a névszerverek felelősek a saját domainjeikért. A hálózati rendszergazdák továbbadhatják ezt a felelősséget, így az al-domaineket más névkiszolgáló kezelheti. Ez a mechanizmus biztosítja az elosztott és hibatűrő működést, valamint elkerülhető az egyetlen nagy központi adatbázis használata.

A tartománynevek internetes erőforrásokhoz rendelése lehetővé teszi hogy a nevek ne függjenek az erőforrások fizikai helyétől, így a weben használt internetcímek, hiperlinkek, stb állandóak maradnak akkor is, ha időközben változás történik a fizikai rendszerben. A DNS rendszer másik célja, hogy a felhasználók könnyebben megjegyezhessék ezeket az internetes címeket, és használhassák őket anélkül, hogy közben tudniuk kellene a háttérben működő számítógépek közti kommunikációról.

 

Története

Korábban az ARPANET-en – a mai internet elődjén – az állomásnevek és a hozzájuk tartozó IP-címek listáját egy HOSTS.TXT nevú szövegfájlban tárolták, melyet központilag kezeltek, és rendszeresen eljuttatták a hálózat összes állomására. Az állomások számának növekedésével ez a statikus állomás-nyilvántartó tábla hamarosan már nem volt ésszerűen fenntartható. A DNS használatát Paul Mockapetris javasolta a statikus állomás-nyilvántartó tábla problémáinak megoldására. A DNS hivatalosan a 882-es és a 883-as RFC-ben került dokumentálásra, melyben két elgondolás jelent meg:

  • Hierarchikus tartománynevek használata, mint például a www.google.hu vagy a www.debian.org
  • Az internet minden részén megtalálható DNS-szerverek használata – egyfajta elosztott felelősség –, mint az állomások adatbázisának kezelési módszere

Az első DNS szervert négy Berkeley-es diák (Douglas Terry, Mark Painter, David Riggle és Songnian Zhou) írta meg 1984-ben Unix rendszerre, melyet BIND-nek (Berkeley Internet Name Domain) neveztek el. A BIND-et az 1990-es évek elején írták át Windows NT rendszerre. Széles körben elterjedt, főleg Unix rendszereken, és a leggyakrabban használt DNS szoftver lett az interneten. Gyakori támadások célpontja lett, így később alapjaitól újraírták, melyben sok biztonsági rést küszöböltek ki. Így a ma is ismert BIND 9-es verziója már erős biztonsággal rendelkezik.

Manapság a DNS egy dokumentált internetes szabvány, melyet frissítettek és bővítettek. A korábbi frissítések az adatok kódolásával foglalkoztak, a későbbiek pedig a DNS biztonságának tökéletesítésével. Ezek és más RFC-k is megtalálhatók az IETF (Internet Engineering Task Force, azaz internetfejlesztői különleges egység) weboldalának RFC-kkel foglalkozó oldalán, a www.ietf.org/rfc.html címen.

Ma már minden, az internethez csatlakozó állomás a DNS-re hagyatkozva fér hozzá a különböző internetes szolgáltatásokhoz és távoli állomásokhoz. Az internetszolgáltatók biztosítják felhasználóik számára azokat a DNS szerverek IP-címeit, amikhez a rendszer hozzáfér, amikor domain neveket kell feloldani IP-címekké.

 

Szerkezete

Hierarchikus tartománynevek

A DNS a tartományok egy hierarchikus fáját használja a névtér – a nevek teljes halmazának – elrendezéséhez. Minden magasabb szintű tartomány fennhatósággal rendelkezik az alacsonyabb szintű altartományai felett. Minden tartomány a névtér egy különálló blokkját jelöli, és a kezelése egyetlen rendszergazdai hatókörbe tartozik.

A fa gyökere az úgynevezett gyökértartomány, melyet egyetlen pont (.) jelöl. Ezt követik a legfelső vagy gyökérszintű tartományok. A legfelső szintű tartományok tovább vannak bontva második szintű tartományokra, melyek aztán további altartományokra bonthatók.

A legfelső szintű tartományok viszonylag rögzítettek, és olyan jól ismert tartományok tartoznak közéjük, mint például a COM, a NET, az ORG, az EDU, a GOV, a MIL. A COM, a NET, az ORG tartományt a világ minden részén széles körben használják, míg az EDU, a GOV és a MIL használata inkább az Ecesült Államokban jellemző. A legfelső szintű tartományok akkor jelentek meg, amikor az internet széles körben elterjedt az 1990-es évek elején.

A legfelső szintű tartományok egy másik csoportja országokat jelöl. Ezek a tartománynevek az ISO (International Organization for Standardization, azaz Nemzetközi Szabványügyi Szervezet, melyről az www.iso.org oldalon tudhatunk meg többet) által kiosztott kétbetűs országkódokat használják. Magyarország legfelső szintű országkódos tartománya például a HU. A Magyarországon működő legtöbb szervezet és cég a HU tartományt használja. A google.hu például a Google kereső magyarországi tartománya.

A teljes tartománynév (fully qualified domain name, FQDN) úgy jön létre, hogy az altartományok neveit összekötjük az alacsonyabb szintű tartományoktól a felsőbb szintűek felé haladva, és pontokkal (.) választjuk el őket egymástól. Például az UBUNTU.HU egy teljes tartománynév; csakúgy, mint a HU.OPENSUSE.ORG. Ezek mind jelölhetnek egy konkrét gazdagépet is.

A tartománynevek nem különböztetik meg a kis- és nagybetűket. Igy az UBUNTU.HU és az ubuntu.hu ugyanazt a tartományt jelölik. A szabály azonban az, hogy a tartományneveket csupa kisbetűvel írjuk.

Zónák

DNS-zóna a hierarchia összefüggő, önálló egységként kezelt része, ami egyetlen domainből is állhat, de tartozhat alá több domain és aldomain is, a kezelő által kiosztott adminisztrációs jogoktól függően.

Egy zóna kezelője továbbadhatja 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. A zónákat a zónafájlok írják le.

Zónafájlok

A zónafájl egy szöveges fájl, ami domain nevek és IP-címek és más erőforrások közötti hozzárendeléseket soronként ír le, amiket erőforrásrekordoknak nevezünk. Egy zónafájl lehet DNS-mesterfájl, ami mérvadó (autoritatív) módon leír egy zónát, vagy tartalmazhatja csak egy DNS-gyorsítótár elemeit.

Rekordtípusok

Egy zónában többféle rekord is tárolható. A leggyakoribb típusok közül néhány:

  • "A": IPv4 címke rekord.
    Funkciója: Leggyakrabban a hosztnév és a hozzá tartozó 32 bites IPv4 cím összerendelése.
  • "AAAA": IPv6 címke rekord. 
    Funkciója: Leggyakrabban a hosztnév és a hozzá tartozó 128 bites IPv6 cím összerendelése.
  • "CNAME": Kanonikus névrekord.
    Funkciója: A tulajdonos kanonikus vagy elsődleges neve. Egy névről egy másikra mutat (alias): a DNS-lekérdezés az új név lekérdezésével fog folytatódni.
  • "MX": mail exchange record.
    Funkciója: A tartománynévhez rendelt levéltovábbító ügynökök (Mail Transfer Agent, MTA) listája
  • "NS": name server record (névkiszolgáló-rekord).
    Funkciója: Kijelöli egy DNS-zóna számára használható autoritatív névkiszolgálókat.
  • "SOA": start of authority record.
    Funkciója: Irányadó információk a DNS-zónáról; az elsődleges névkiszolgáló, a tartomány rendszergazdájának e-mail-címe, a tartomány sorozatszáma, a zóna frissítési időközei.
  • "TXT": Text record (szöveges rekord)
    Funkciója: Eredetileg tetszőleges, emberi fogyasztásra szánt szöveg tárolására szolgált. Az 1990-es évek elejétől egyre többször tároltak benne gépi adatokat az RFC 1464 szerint.

 

SOA rekord

A rekordok közül - fontossága miatt - külön érdemes kiemelni a SOA rekordot. A SOA rekordot többféleképpen is szokták hívni, például Source Of Authority, Start Of Authority vagy Service Of Authority. Mindhárom elnevezéssel találkozhatunk, ha rákeresünk a neten, de lényege ugyanaz: a domain név forrását jelző rekord, ami egy a domain működésének alapvető beállításait tartalmazó rekord. Ez a rekord tartalmazza például az alábbiakat:

  • Elsődleges névszerver
  • Admin kontakt email cím (pontokká alakított) például: admin.linuxportal.eu.
  • Frissítési idő. A másodlagos névszerver ennyi időnként próbálja meg lemásolni a zónát.
  • Újra próbálkozás ideje. A másodlagos DNS ennyi időnkén próbálkozik újra, ha nem sikerül lemásolni a zónát.
  • Lejárat. A másodlagos DNS ennyi idő után törli a zónát, ha nem sikerült lekérdezni.
  • Szériaszám: Ez minden változtatáskor növekedik, így a másodlagos névszerverek ez alapján tudják, hogy frissiteniük kell a zónáikat.
  • Minimum TTL. Negatív cache idő. Ha egy domaint nem sikerül feloldani, akkor ennyi ideig jegyzi meg a DNS resolver a negatív választ.
  • Zóna transzfer. Ez az a mechanizmus, amivel a másodlagos névszervereknek továbbítja a zóna az adatokat másolat céljából. Erre a TCP protokollt használja.

Ezek a paraméterek határozzák meg a domain neveket.

 

Domain név átirányításának módjai

Domain nevet kétféleképpen lehet átirányítani egy webszerverre: rekordokkal vagy névszerverekkel.

Domain átirányítás rekordokkal

Ha rekordokkal irányítjuk át a domain nevet, az azt jelenti, hogy a DNS zóna kezelése, és egyben a SOA rekord is a regisztrátornál marad, így az ő felületükön kell kezelni a rekordokat. Ilyenkor beállíthatunk például egy "A" rekordot, ami a szerverünk IP-címére mutat, és ekkor elérhetővé válik a weboldal. Vagy létrehozhatunk egy "MX" rekordot és azt is ráirányíthatjuk a szerverünkre, amennyiben az rendelkezik levelező szerverrel. De például a levelezést hagyhatjuk is a regisztrárornál, és akkor ők kezelik nekünk a levelezést. A legtöbb helyen ez a szolgáltatás már ingyenesen is elérhető.

Előnyök:

  • Nem igényel bonyolult infrastruktúrát a kiszolgálói oldalon. Így például elég egy egyszerű LAMP szerver üzemeltetése is egy weboldal elérhetővé tételéhez.
  • Beállítása egyszerű

Hátrányok:

  • Korlátozott DNS kezelési lehetőség, ezáltal sok olyan szolgáltatás elérhetetlen, vagy csak korlátozottan elérhető, ahol automatikus DNS kezelésen alapuló webhely hitelesítési eljárásra van szükség. Ilyenkor a DNS rekordok kézi módosítása szükséges a hitelesítés lebonyolításához.
  • Szolgáltatások nem egy helyen vannak. Így például a levelezést, stb más felületeken lehet kezelni, nem a saját rendszerünk részeként.
  • Minden rekord művelet végrehajtásához a regisztrátor felülületét kell igénybe venni.

Domain átirányítás névszerverekkel

Az átirányítás másik módja, amikor a regisztrátornál névszervereket adunk meg. Ilyenkor a névszerverek által hivatkozott célállomáson lennie kell DNS kiszolgálásnak, valamint a domainhez tartozó SOA rekordnak is, ami ugyanúgy leírja a domain név paramétereit, mintha a regisztrátornál lenne. Ilyenkor az egész DNS kezelés a célállomásra kerül át.

Előnyök:

  • Korlátlan DNS kezelési lehetőség. Ennek köszönhetően például a Let's Encrypt SSL kiállító hatóság is könnyedén le tudja ellenőrizni domain nevünk tulajdonjogát az ACME kliens segítségével.
  • A szolgáltatások egy helyen összpontosulnak, így egy helyről tudjuk kezelni a levelezést, DNS kezelést, aldomaineket, stb.
  • A DNS műveletekhez nem kell igénybe venni a regisztrátor kezelőfelületét, mert a SOA rekord által már a névszerverek által hivatkozott célállomás a domain kezelője.
  • Vannak webes kezelőpanelek, amik leveszik a rendszergazdák válláról a DNS kiszolgáló kézi bekonfigurálásának terhét. Ilyen például az ISPConfig is.

Hátrányok:

  • Bonyolultabb infrastruktúrát igényel, így például egy egyszerű LAMP szerver nem alkalmas ennek a kezelésére.
  • Kézi bekonfigurálása bonyolult