Domeeninimede hajusandmebaas
Sisukord
Domeeninimede süsteemi korraldamine
Arvutitega seostatud nimede kasutamiseks on vaja kahte poolt
* andmebaasi, kus on kirjas domeeninimedega seotud info, näiteks IP-number * kliente, kes oskavad selle andmebaasiga suhelda
Kõige primitiivsemal juhul saab kirjeldada domeeninimedega seotud andmed staatiliselt iga kliendi masina failisüsteemis ja vajadusel nime lahendamiseks kasutatakse seda faili. Sellist asjakorraldust interneti algusaegadel ka kasutati ja see toimis, kuid üldiselt tänapäevaseks kasutuseks see ei sobi:
* Domeeninimesid on palju, need tekstifailid muutuksid suureks ja seal otsimine nõuaks palju ressurssi. * Domeeninimede süsteemis tehtud andmete muudatuste sisseviimine oleks tülikas.
Siiski, kuna arvuti käivitumisel ei pruugi veel nimeserver kättesaadav olla, kuid mõned programmid soovivad lahendada nende jaoks olulisi nimesid, siis ka praegu kireldatakse vähesed nimed failid /etc/hosts. Tavaliselt localhost. ja masina enda nimi.
Nimetatud puudusi leevendaks võrgust kättesaadava andmebaasi kasutamine, kus sisalduvad andmed kõikide domeeninimede kohta. Praktiliselt ongi tänapäeva nimesüsteem realiseeritud võrgus töötava andmebaasina, kuid selliselt, et kõiki andmeid ei püüta hoida mitte ühes arvutis töötavas andmebaasis, vaid andmebaasi sisu on jagatud paljude arvutite vahel. Selliselt töötavat andmebaasi nimetatakse hajusaks andmebaasiks ning kui andmebaas tegeleb konkreetselt domeeninimedega, siis nimetatakse vastavat programmi, vahel ka kogu arvutit, domeeninimede serveriks ehk lühidalt nimeserveriks.
Skeemil on kujutatud kliente, servereid ja hajusat domeeninimesüsteemi realiseerivaid nimeservereid
192.168.2.2 gauss.matemaatika.raamatukogu.kool. ___ | | |___| klient 1 nimeserver KOOLJAS ___ nimeserver JUURU | | ___ |___| | | nimeserver AEDJAS |___| ___ | | veebiserver ftp server klient 2 |___| ___ ___ ___ | | | | | | |___| |___| |___| sekretar.juhtkond.kool. tiik.aed. redis.peenar.aed. 192.168.2.5 192.168.1.3 192.168.1.4
Eeldusel, et arvutid on võrku ühendatud ning ruuting toimib, ei tohiks olla suuri probleeme klientide omavahelisel või serveritega suhtlemisel. Saab kasutada lihtsalt vastavaid IP-aadresse.
Selleks, et kliendid saaksid pöörduda teineteise ja serverite poole, kasutades nende domeeninimesed, tuleb klientarvuti konfiguratsioonis ära näidata teda nõus teenindama hakkava nimeserveri IP-aadress.
Kokkuvõttes, kui kasutaja sisestab näiteks oma brauseri aadressireale nime sekretar.juhtkond.kool., läbitakse järgmised sammud:
1. kliendi arvuti võtab ühendust konfiguratsioonis näidatud nimeserveriga ja küsib nimele sekretar.juhtkond.kool. vastavat IP-aadressi 2. nimeserver teeb teiste nimeserverite abiga kindlaks küsitud nimele vastava IP-aadressi ja saadab selle kliendile 3. klient kasutab serveriga andmevahetuse loomiseks serveri IP-aadressi.
Nimeserverite tööjaotus
Domeeninimede süsteemi korraldamisel tuleb oskuslikult kasutada võimalust nimeserverite vahel koormust jagada. Olemasolevat tarkvara saab tööle seada ka selliselt, et kõikide klientide arvutites on neid teenindavaks nimeserveriks märgitud üks ja seesama nimeserver JUURU, mille andmebaasis on kirjeldatud kõik domeeninimed. Samuti võib tööle seada iga domeeninime jaoks oma nimeserveri, ilmselt pole kumbki äärmus efektiivne.
Õigem oleks selline asjakorraldus, kus igas nimeserveris on andmed teatud osa kohta nimeruumist. Nii näiteks teab koolimaja arvutitega seotud nimedest, so domeenist kool. nimeserver KOOLJAS ja aiaga seotud arvutite nimedest, so domeenist aed. nimeserver AEDJAS. Öeldakse, et esimese taseme ehk tipptaseme domeenid kool. ja .aed. jaoks on vastavalt nimeserverid KOOLJAS ja AEDJAS esimese taseme ehk tipptaseme nimeserverid. Tipptaseme nimeserveris kirjeldatakse ära teise taseme domeeninimed.
Kogu nimesüsteemi seob tervikuks kokku erilises staatuses nimeserver JUURU. Kuigi ta ei tea otseselt ise midagi domeenides kool. ega aed. sisalduvatest domeeninimedest, teab ta millise nimeserveri käest mis tipptaseme domeeni kuuluvaid nimesid küsida! Selliseid nimeservereid, kus on kirjeldatud esimese taseme domeenid nimetatakse juurnimeserveriks. Tavaliselt on juurnimeserverites vaid kirjas, millisele tipptaseme nimeserverile on pandud vastutus mõne esimese taseme domeeni eest.
Seesugune vastutuse edasiandmine ehk domeenide delegeerimine võib jätkuda ka madama taseme domeenidega. Näiteks võiks tipptaseme domeeni kool. nimeserveris KOOLJAS omakorda näidata, millisele teise taseme nimeserverile on delegeeritud vastutus teise taseme domeeni raamatukogu.kool. eest. Ja tolles teise taseme nimeserveris kirjeldatakse kolmanda taseme domeeninimesid.
Tänapäeval on internetis tegelikult kasutusel kümmekond tipptaseme domeene teenindavat nimeserverit, mis sisaldavad praktiliselt ühesuguseid andmeid esimese taseme domeenide kohta. St millistele tipptaseme nimeserveritele on millised esimese taseme domeenid delegeeritud.
Domeenide delegeerimine omab lisaks nimeserverite koormuse jaotamisele veel kasutajate jaoks olulist hüve. Kuna domeenis kool. tegutsev koolimaja rahvas omab ise nimeserverit KOOLJAS, siis saavad nad seal kirjeldada domeeni kool. kuuluvad teise taseme ja allapoole jäävad domeeninimed ja delegatsioonid oma parema äranägemise järgi ning tehtud sissekanded ja muudatused on teada kogu internetis.
Oluline on tähele panna, et üsna loomulik on kui domeeni nimeserver kuulub samasse domeeni, mida ta kirjeldab, aga mitte tingimata. Näites nimeserverite nimedena kasutatud JUURU, KOOLJAS ja AEDJAS rõhutavad, et ei ole tähtis millisesse domeeni nad ise kuuluvad.
Üks ja sama nimeserver võib sisaldada andmeid, sh delegatsioone paljude, ka erineva tasemega domeenide kohta.
Nimeserverid ise ei asu üksteise suhtes hierarhiliselt, küll aga tehtud domeenide delegatsioonid.
Tsoonid
Vajaduse tsooni mõiste järele tingib domeeninimede delegeerimine erinevate nimeserverite vahel.
Kui nimeserverile on delegeeritud domeen, siis võivad kõik sellesse domeeni kuuluvad domeeninimed olla kirjeldatud selles nimeserveris. Aga kõnealune nimeserver võib osa talle delegeeritud domeeni alamdomeene ka ise edasi delegeerida, erijuhul ka iseendale. Tsooni moodustavad kõik need domeeni kuuluvad domeeninimed, mis ei kuulu omakorda edasi delegeeritud domeenidesse. Kui nimeserver talle delegeeritud domeeni alamdomeene edasi ei delegeeri, siis langevad domeeni ja tsooni kuuluvad domeeninimed kokku.
Kui nimeserver vastutab mingi talle delegeeritud domeeni osa, so tsooni eest, siis öeldakse, et ta on antud tsooni jaoks pädev. Üks ja sama nimeserver võib olla mitmete tsoonide jaoks pädev.
Tavaliselt hoiab nimeserver tsooni kohta käivaid andmeid tekstifailidena ja neid faile nimetatakse tsoonifailideks.
Nimeserverite tüübid
Kuna nimeserveri teenus on äärmiselt oluline interneti toimimiseks, siis on kombeks domeeni delegeerimisel näidata ära vähemalt kaks erinevat nimeserverit. Need nimeserverid peavad kirjeldama oma pädevusse antud nimesid ühesuguselt ja soovitavalt olema teineteisest interneti ja toite suhtes kaugel. Kui ühe serveriga otseselt või kaudselt (tervel korrusel on elektririke, või katkeb internetiühendus asutusega) midagi juhtub, siis teine server jätkab klientide jaoks nimede lahendamist.
Kuna käsitsi on ebamugav nimeservereid sünkroonis hoida, siis on mõeldud välja tehnika, mis teeb seda automaatselt. Nimelt, tsooni primaarne nimeserver saab tsooni kohta käivad andmed tekstifailist, kuid tsooni sekundaarne nimeserver kopeerib neid endale primaarse nimeserveri käest üle võrgu.
Kliendi joaks, kes tahab nimele vastavat IP-aadressi teada, on nad mõlemad samahead nind ühtviisi pädevad kõnealuse tsooni suhtes.
Seda, milline arvuti on primaarne nimeserver, määratakse tsoonifailis SOA (Start of Authority) kirjega. Seal määratakse ka kui tihti primaarne ja sekundaarne nimeserver omavahel suhtlevad. SOA kirje sisaldab järgmisi tsooni jaoks olulisi andmeid:
* domeeni nimi * domeeni primaarse nimeserveri nimi * domeeni eest vastutava kontaktisiku e-postiaadress * seerianumber - näitab kas tsoonis on vahepeal tehtud muudatusi; seda tuleb muudatuste kehtestumiseks iga kord suurendada * värskendusperiood (refresh) - määrab kui tihti sekundaarne nimeserver kopeerib andmed primaarselt * korduskatseperiood (retry) - kui korraline andmete kopeerimine ei õnnestunud, siis näidatud ajavahemiku järel uuesti proovida * parim möödas (expire) - kui sekundaarselt nimeserverilt ei õnnestunud andmeid uuendada, siis näidatud ajavahemiku möödudes viimasest värskendusest ei pea sekundaarne end kõnesoleva tsooni suhtes pädevaks * eluaeg (TTL - Time to Live) - aeg kui kaua vastava tsooni domeeninimed interneti vaheladudes säilitatakse
Domeeninimede andmebaasi struktuur
Domeeninimede andmebaasis on muu abistava info hulgas kõige olulisemad kaks andmevälja: domeeninimi ning vastav IP-aadress. Kusjuures nimele võib vastata ka mitu IP-aadressi, samuti vastupidi. Seda võiks kujutada tabelina
domeeninimi IP-aadress tac.ee. 193.40.13.130 ilm.tac.ee. 193.40.13.146 tlk.tac.ee. 193.40.13.129
Kliendid võiksid seda andmebaasi ilma pikema mõtlemiseta kasutama hakata: leida domeeninimele vastav IP-aadress või IP-aadressile vastav domeeninimi.
Vastavalt nimetatakse neid domeeninimede päri- ja pöördteisendusteks. Tavaliselt mõeldakse domeeninime teisendusest kõneldes päriteisendust, mis tähendab domeeninimele vastava IP-aadressi leidmist. Pöördteisendust nimetatakse ka reversteisenduseks, mis tähendab IP-aadressile vastava domeeninime leidmist.
Siinjuures tuleb praktiliselt arvestada kahte asjaolu:
* Nagu teada, muutub andmebaasist päringute tegemine oluliselt kiiremaks, kui andmebaas on otsingu tingumuses oleva välja järgi indekseeritud. Samas on andmebaasi indekseerimine 'kallis' tegevus, muidu võiks andmebaasid olla kõikide väljade järgi indekseeritud. * Oleks hea kui algoritmiliselt oleksid päri-ja pöördteisendused ühesugused.
Seepärast mõeldi välja kavalus ja lepiti kokku hakata kasutama pöördteisenduste jaoks sarnaselt domeeninimede nimepuule ainult selleks otstarbeks reserveeritud in-addr.arpa. domeeni nimepuud.
See nimepuu asetub domeeninimede ruumis juurele domeeninime in-addr.arpa. alla. in-addr.arpa. domeeni nimesid moodustatakse kindla reegli alusel, vastava IP-aadress kirjutatakse tagurpidi in-addr.arpa. ette. Näiteks IP-aadressile 193.40.13.130 vastab in-addr.arpa. nimepuus domeeninimi 130.13.40.193.in-addr.arpa.
Võttes seda arvesse tuleks kujutada domeeninimede andmebaasi sellise tabelina:
domeeninimi A PTR tac.ee. 193.40.13.130 N/A ilm.tac.ee. 193.40.13.146 N/A tlk.tac.ee. 193.40.13.129 N/A 130.13.40.193.in-addr.arpa. N/A tac.ee. 146.13.40.193.in-addr.arpa. N/A ilm.tac.ee. 129.13.40.193.in-addr.arpa. N/A tlk.tac.ee.
kus
* domeeninimi * A - domeeninimele vastav IP-aadress * PTR - in-addr.arpa. domeenis IP -aadressist moodustatud in-addr.arpa. domeeninimele vastav IP-aadress
Niisiis, nimeserverites kirjeldatud in-addr.arpa. domeeni domeeninimed, mida kasutatakse IP-aadressile vastava 'päris' domeeninime leidmiseks, kirjeldada sarnaselt 'päris' domeeninimedele.
Tavaliselt kasutavad andmebaasid indekseerimisel kahendpuid. Näiteks domeeninimele ilm.tac.ee vastava aadressi leidmiseks alustatakse kõnealuse nime paremast äärest ning hakatakse liikuma vasakule, kuni indeksist leitakse õige nimi. Seejärel saab andmebaasist järele vaadata, millisele kirjele see indeks viitab. Sarnaselt, otsides IP-aadressile 193.40.13.129 vastavat domeeninime, moodustatakse esmalt sellele aadressile vastav in-addr.arpa. domeeni domeeninimi, so 129.13.40.193.in-addr.arpa. ning hakatakse taas seda andmebaasi samast indeksist otsima.
Korrektselt hooldatud domeenis on kirjeldatud kooskõlaliselt nii päri-kui pöördteisendused.