A DNS rejtelmei, avagy miért láthatok én mást, mint a többiek?
Tegyük fel, hogy éppen karácsony van és webáruházad látogatottsági rekordokat döntöget, vagy a most élesített blogbejegyzésedet több tízezren szeretnék elolvasni egyszerre. A technika pedig valamiért csődöt mondott és a szolgáltatás nem elérhető. Elég kellemetlen helyzet és nem is mindig biztos, hogy azonnal orvosolható.
Manapság ahhoz vagyunk szokva, hogy a legtöbb dolog azonnal elintézhető. Hirtelen támadt gondolatainkat azonnal érvényre tudjuk juttatni, és ha megváltoztatunk bizonyos dolgokat, azok általában azonnal életbe is lépnek. A DNS működése sajnos nem egészen ilyen és elsőre nehéz lehet megérteni, hogy miért nem. Az alábbiakban segítünk elmagyarázni, hogy mi ennek az oka.
Mi az a DNS?
A DNS (Domain Name System) az emberek által könnyen megjegyezhető domainneveket IP címekké lefordító rendszer. Minden kiszolgáló az Interneten önálló IP címmel rendelkezik.
Például: 87.229.101.201. Az itt található oldalt megnyitva bárki meggyőződhet róla, hogy az adott cím alatt élő szolgáltatás üzemel. Viszont elég furcsán nézne ki, ha az óriásplakátokra ilyen számsorozatokat írnánk, és hazaérve mindenki ezeket próbálná visszaidézni az emlékezetéből, hogy megnyissa az adott cím alatti oldalt. Nem beszélve arról, hogy messze több domainnév létezik a világon, mint ahány IP cím. Erre találták ki megoldásként a domain neveket (pl. inclust.com), amiket a DNS segítségével fordíthatunk le IP címekké. Ez egy elosztott rendszer, aminek tartalma ráadásul minden másodpercben változik, így a világon soha nem létezik egyetlen olyan számítógép sem, ami ismerné a létező összes domain név - IP cím párosítást. A feladatot (név)szerverek milliói, hierarchiába szervezve, együttesen látják el. Egymás között információt cserélnek szükség esetén kérésre vagy meghatározott időközönként automatikusan is.
A helyi névszerver
Minden, az Internetre csatlakoztatott számítógépen be van állítva egy vagy általában több névszerver címe, amelyeket az megkérdezhet, ha egy adott domainhez tartozó kiszolgáló IP címét szeretné megtudni. Ezeknek általában mindenki az internet-szolgáltatója által üzemeltetett névszervereket adja meg, de létezik rá több, publikus megoldás is, ilyen például a Google DNS rendszere.
Ha pl. a böngészőnkkel csatlakozni szeretnénk egy ismeretlen domainnév alatt kiszolgált weboldalra, ahhoz először annak meg kell tudnia a szerver IP címét. Első lépésben az operációs rendszerünk megkérdezi az abban beállított szolgáltatói DNS szerverek valamelyikét. Ha a szolgáltatónk névszervere még nem ismeri az általunk megkérdezett domainhez tartozó címet, nekilát rekurzívan kideríteni azt, hogy aztán továbbadhassa az információt nekünk. Megkérdezi az adott domainről a benne beállított root(gyökér)-névszerverek valamelyikét. Ha az sem ismeri az adott domain nevet (nem fogja, mert nem ez a dolga), akkor is meg tudja mondani, hogy ki a .com domainek kiszolgálója. Ezután, a kapott információ alapján az eredetileg kérdezett névszerver megkérdezi a .com domainek névszerverét a megadott domaint illetően. Ha ő sem ismerné azt, akkor is meg tudja mondani, hogy őbenne melyik kiszolgáló van beállítva felelősnek az adott domaint illetően. Ez a megadott domain autoritatív kiszolgálója. Könnyen látható, hogy a lekérdezések rekurzív folyamata egy információ-átviteli láncot eredményez.
Lehet, hogy már végbement a kérdezz-felelek folyamat és valahol el lett tárolva az akkor kapott választ.
A felelős névszerver
A szolgáltatónk által üzemeltetett névszervereken kívül léteznek speciális névszerverek is, amelyeket autoritatív névszervereknek nevezünk. Ezekből minden domainhez létezik legalább egy darab, de általában több is. Az ide letárolt beállítások adják meg, hogy az adott domain milyen IP címre mutat. Például az inclust.com esetében ez az ns01.inclust.com és az ns02.inclust.com névre hallgat. Ha az inclust.com IP címe valami miatt megváltozna, akkor ezekben a szerverekben kell frissíteni a hozzá tartozó bejegyzéseket. Az átállás esetén azonban időre van szükség ahhoz, hogy az új információ mindenhol elterjedhessen és kérdés esetén a világon mindenki ugyanazt a választ kapja vissza, hiszen a végfelhasználók és a felelős névszerverek között szerepelhetnek olyan kiszolgálók, amikben a korábban letárolt információ még a régi beállítást tartalmazza és emiatt elavult lehet.
Mikor lehet még probléma?
Nem ritka eset, hogy egy kiszolgáló IP címe változik. Akár a rajta futó szolgáltatást költöztették át máshova, akár maga a szerver kapott új címet, az oda mutató DNS rekordokat frissíteni kell. A fent leírtak alapján látható, hogy az új beállítások nem mindig lépnek életbe azonnal, sőt, néha akár 24 óra is eltelhet. Ez az idő az adott rekordhoz tartozó TTL (Time to Live) érték beállításától függ. Ez az érték szabályozza, hogy az adott beállítást mennyi időre jegyezheti meg és tekintheti érvényesnek az a kiszolgáló, amelyik az adott információt megszerezte.
A legnagyobb baj akkor történhet, amikor egy nagy látogatottságú weboldal kiszolgálása áll le a DNS rekordok hirtelen megváltozása miatt. Ilyen eset például regisztrátorváltáskor fordulhat elő. Ha az éppen üzemelő weboldal domainjéhez beállított névszerverek hirtelen megváltoznak és az újakban nem szerepelnek a helyes beállítások, a domainhez tartozó IP címet már az új névszerverektől lekérdező felhasználók nem kapnak választ és így nem képesek eljutni az adott domain alatti tartalmakat kiszolgáló szerverig.
A bejegyzés a Smashing Magazine ötletadó cikke nyomán született.
Ajánlott irodalom: Részletes magyar nyelvű leírás a DNS működéséről