# Domeeninimede süsteem

**Domeeninimede süsteem** (ingl *Domain Name System* ehk **DNS**) on internetiteenus, mis teisendab domeeninimed internetis või sisevõrgus kasutatavateks IP-aadressideks ja vajadusel ka vastupidi. Toimides omalaadse "telefoniraamatuna", on see süsteem tavatarbijatele interneti kasutamiseks hädavajalik. Arvutit, mis on konfigureeritud täitma DNS teenust, nimetatakse nimeserveriks. Näiteks domeenile www.wikipedia.org vastab IP-aadress [91.198.174.2]. Kui esmane nimeserver ei leia enda nimekirjast vastet, saadab see päringu teisele serverile jne.

## Seletus

Domeeninimede süsteem on vajalik nii internetis kui ka intranettides inimeste poolt loetavate ja meeldejäävate aadresside loomiseks. Numbrilised IP-aadressid on tehniliselt sobiv viis võrgus olevate seadmete (nt arvutid, serverid ja telefonid) ja virtuaalseadmete (nt virtuaalmasinate- ja serverite) ülesleidmiseks ja koostööks. Tihti on inimloetavad domeeninimed kasulikumad, et üles leida nii veebilehti kui ka muid internetiteenuseid, sh. tehnilisi servereid ja mänguservereid ning isegi teatud riistvara, nagu printereid, kuigi selle jaoks on olemas ka muid meetodeid (nt teabekajastus üle kogu võrgu).

Domeeninime ülesotsiv programm, teek või riistvara käib teoorias läbi antud aadressi leidmiseks kõik nimeserverid alates tippnimeserverist kuni madalamani aadressi sees, kui võimalik. Igat sellist domeeni nimetatakse ka tsooniks ja kahel sõnal on ka sarnane sõnastikuline tähendus.

Näiteks, et üles otsida et.wikipedia.org:

1. Operatsioonisüsteemil on sisse ehitatud DNS tippnimeserverite nimekiri (nt alternatiivne DNS nagu Google Public DNS) või ta küsib seda automaatselt oma internetiteenusepakkujalt (nt Telia, Elisa, Tele2, STV) DHCP protokolli päringuga
2. OS küsib tippnimeserverilt . (punkt), kust leida org. (org punkt) nimeserverit, tippnimeserver annab vastuse
3. OS küsib org. nimeserverilt, kust leida wikipedia.org. nimeserver.
4. OS küsib wikipedia.org. nimeserverilt, mis on et.wikipedia.org. IP-aadress
5. wikipedia.org. annab lõppvastuse, enam pole vaja edasi otsida

Tegelikkuses on võimalik, et mõni nimeserver suudab juba anda mälusse talletatud lõppvastuse, või et kogu protsess käib läbi internetiteenusepakkuja DNS-serveri vahemälu. Niisiis võib netipakkuja anda tippnimeserveri otsingul iseenda IP-aadressi, siis .org. nimeserveri jaoks sama IP-aadressi jne, kuni mõni aadress vajab uuendamist või mõni teenusepakkuja klient pole sellel aadressil veel käinud. Samuti võib OS ise mällu talletada domeeninimesid, seda võib vabatahtlikult teha isegi mõni programm.

Iga DNS-päring võib anda informatsiooni nii antud domeeni kohta, kui ka nimeserverite kohta, kui on vaja teha edasisi päringuid. Näiteks aadressile wikipedia.org vastab IP-aadress, millel asub veebileht. Nimeserverite asukohtasid antakse huvitaval moel: IP-aadressi asemel antakse hoopis nimeserveri enda domeeninimi, näiteks ns1.wikipedia.org (nimeserver 1), mille IP-aadressi saaks küsida nimeserverilt, mis asub aadressil wikipedia.org.

## Tehniline info

DNS-i serveri, ehk nimeserveriga suheldakse üle DNS-protokolli, mis seletati IEEE dokumentides RFC-1034 ja RFC-1035. Protokoll ei ole inimloetav ning on loodud olema väga kokkuhoidlik, kuna DNS päringuid on vaja saata ning neile vastata väga suurtes hulkades. DNS päringuid saadetakse tavaliselt üle UDP, mitte üle TCP, mille tõttu DNS-serveritega ei looda ühendusstruktuuri (ainult päringud ja vastused) ning vastused ühelt ja samalt DNS-serverilt võivad kaduma minna või tulla vales järjekorras, isegi sama päringu kohta. See pole probleem, kuna DNS päringud-vastused on pea alati piisavalt väikesed, et mahtuda ühte ainsasse IPv4 või IPv6 (ja seega vaid ühte UDP) pakki ning nad polegi loodud UDP-pakkidest kokkupanemiseks. Siiski, suuremate päringute puhul on tihti saadaval ka TCP-l põhinev DNS, olenevalt nimeserverist.

Iga DNS päring ja vastus koosneb väljadest, vastuse puhul on mõned väljad järgnevad (väljade nimed on kokkuleppelised ning need ei ilmu protokolli ülekande enda sisus):

| Välja nimi | Seletus |
| --- | --- |
| A | IPv4 aadress, mis vastab antud domeeninimele. |
| AAAA | IPv6 aadress, mis vastab antud domeeninimele (DNS serverid pakuvad alati välja mõlemad variandid, kui kumbki on saadaval, hoolimata sellest, kas DNS serverile tehti päring üle IPv4 või IPv6). |
| NS | Domeeninimi nimeserveritele selle domeeni alamdomeenide pärimiseks. Kuna see on kõigest domeeninimi, pole IPv4 või IPv6 sel puhul tähtsad, kuigi nimeserveri kättesaadavus pole garanteeritud. |
| CNAME | Ümbersuunamine teisele domeenile. See on täielik domeeninimi ehk "alias", millele vastav IP-aadress otsitakse samuti üles ning kasutatakse justkui selle domeeninime iseenda oma. |
| TXT | Muu väli spetsiifilise info ülekandmiseks, mis mujale (näiteks HTTP päistesse) ei sobi |

## Turvalisus ja DNSSEC

Originaalselt DNS ei sisaldanud mingisugust krüptimist ega autentimist, vaid oli loodud olema võimalikult laialtkasutatav ja kohanduv suure päringute hulgaga. Seetõttu on krüptimata DNS, nagu kõik muu krüptimata võrgusuhtlus eriti haavatav vahemeherünnakutele. Isegi internetiteenusepakkuja või keegi sarnase ligipääsuga kasutaja internetiühendusele võib DNS-päringutele anda valesid või muudetud vastuseid. Tavaliselt on see tähendanud seda, et turvalisust ja kindlust peaks pakkuma HTTPS, mis on olnud peamine veebikasutuse krüptimise meetod. HTTPS põhineb SSL/TLS-il, mida kasutatakse ka muudes protokollides. Selline ühendus tavaliselt toimub niimoodi:

1. Brauser pärib DNS-ilt veebilehe IP-aadressi
2. Brauser pärib IP-aadressilt turvamata HTTP-vastuse pordil 80
3. Veebileht käsib brauseril liikuda https:// aadressile
4. Brauser liigub https:// aadressile. See annab brauserile märku pärida veebiserverilt HTTPS-vastus pordil 443
5. Brauser usaldab seda HTTPS-lehte, kuna HTTPS ühendusel andis server üle sertifikaadi, mille juurserdile on alla kirjutanud OS-i või brauseri usaldusnimekirjas olev sertifikaadiautoriteet ning sertifikaadi "Common Name" vastab domeeninimele

Siin on mitu probleemi. Näiteks punktil 1. võib vahemeherünnaku läbi anda brauserile vale IP-aadressi või punktil 2. võib vahemeherünnaku võtta üle ühendus veebiserveriga. Samuti võib sellel puhul võtta üle isegi HTTPS-vastuse, kui ründajal on olemas domeeninimele vastava Common Name-iga sertifikaat ja privaatvõti, näiteks kui naiivne sertifikaadiautoriteet on välja andnud serdi "wildcard" CN-iga \*, mis kattub kõigi domeeninimedega – või muu sellisega.

Siiski on tähtis teada, et haavatavad on ka muud võrgu osad, näiteks nimeserverid, internetiteenusepakkuja, veebileht või ka sertifikaadiautoriteedid ja nende serdimüügis osalevad filiaalid, või isegi operatsioonisüsteemi või brauseri pakkuja või kättesaadavus- ja uuenduskanalid usaldusnimekirjade suhtes.

### DNSSEC

Kui kasutatakse DNSSEC-i, on kõik vastused digitaalselt allkirjastatud. Meetod erineb HTTPS-ist, kus luuakse ühendus üle asümmeetrilise krüptimise (nt RSA), vaid selleks, et üle saata allkirjastatud sümmeetrilise krüptimise võti (nt AES-i võti), kuna RSA-ga krüptida kogu HTTPS ühendus (kõik päringud ja vastused, nt veebilehed ja andmed) võtab kauem aega ning üleminek sümmeetrilisele võtmele on asümmeetrilise krüptimise matemaatilise keerukuse tõttu märgatavalt efektiivsem ja kiirem. Kuna DNS vastused on lühikesed ja tihti vahemälusse talletatavad mitmel tasandil sh. ühendusepakkuja, on lihtsam vastuseid saata üle allkirjastatud vormil, kus allkiri on krüpteeritud privaatvõtmega ning dekrüpteeritav avaliku võtmega. Siin jäetakse sümmeetriline osa, nt AES, täiesti vahele.

Niimoodi on talletus võimalik, kuna mingi antud DNS-tsooni avalik võti (nt .org. domeeninimetsooni avalik võti, mida haldab .org nimede haldusorganisatsioon) on avalik teave ning iga talletatud vastuse allkirja on võimalik kinnitada, samas kui on väga keeruline ja ekstreemselt aeganõudev vastuste allkirju võltsida, kuna selle krüptimiseks RSA-algoritmi põhjal on vaja privaatvõtit, mida tsoonihaldur hoiab saladuses.

## Vaata ka

* dig - *DNS lookup utility*

## Välislingid

* Interneti domeeninimede süsteem *Kuutõrvaja* viki
* Domeeninime .eu registreerimispoliitika *EURid* (eestikeelne koduleht)