DNS: kuidas domeeninimede süsteem töötab

DNS ehk domeeninimede süsteem (inglise keeles Domain Name System) on internetiteenus, mis teisendab domeeninimed internetis või sisevõrgus kasutatavateks IP-aadressideks ja vajadusel ka vastupidi. Toimides omalaadse „telefoniraamatuna“, on see süsteem tavakasutajale interneti kasutamiseks hädavajalik. Selles artiklis selgitame, kuidas DNS töötab, kuidas domeeninime päring samm-sammult kulgeb ja miks DNS-i turvalisus – sealhulgas DNSSEC – on oluline iga veebisaidi omaniku jaoks.

Miks DNS-i vaja on?

Numbrilised IP-aadressid on tehniliselt sobiv viis võrgus olevate seadmete – arvutite, serverite ja telefonide – ning virtuaalmasinate ja -serverite leidmiseks. Inimestele on aga palju mugavam kasutada loetavaid ja meeldejäävaid domeeninimesid. DNS-i abil leitakse nii veebilehti kui ka muid internetiteenuseid, sealhulgas mänguservereid ja teatud riistvara, näiteks printereid.

Arvutit, mis on seadistatud DNS-teenust osutama, nimetatakse nimeserveriks. Kui esmane nimeserver ei leia oma nimekirjast vastet, saadab see päringu järgmisele serverile ja nii edasi. Iga domeeni nimetatakse ka tsooniks.

Kuidas DNS-päring toimib?

Teoorias käib domeeninime otsiv programm, teek või seade aadressi leidmiseks läbi kõik nimeserverid alates tippnimeserverist kuni madalaimani. Näiteks aadressi et.wikipedia.org otsimisel:

  1. Operatsioonisüsteemil on sisse ehitatud tippnimeserverite nimekiri või küsib ta seda DHCP-protokolli kaudu automaatselt oma internetiteenuse pakkujalt.
  2. Operatsioonisüsteem küsib tippnimeserverilt („.“), kust leida org.-tsooni nimeserver.
  3. Seejärel küsitakse org.-nimeserverilt, kust leida wikipedia.org. nimeserver.
  4. Lõpuks küsitakse wikipedia.org. nimeserverilt et.wikipedia.org IP-aadressi, mis on lõppvastus.

Tegelikkuses võib mõni nimeserver anda juba vahemällu salvestatud lõppvastuse või võib kogu protsess käia läbi internetiteenuse pakkuja DNS-serveri vahemälu. Ka operatsioonisüsteem ja mõni programm võivad domeeninimesid mällu salvestada. Nimeserverite asukoht antakse sageli IP-aadressi asemel nimeserveri enda domeeninimena, näiteks ns1.wikipedia.org.

Tehniline taust

Nimeserveriga suheldakse DNS-protokolli kaudu, mida kirjeldavad dokumendid RFC 1034 ja RFC 1035. Protokoll ei ole inimloetav ja on väga kokkuhoidlik, sest DNS-päringuid tuleb saata ja neile vastata väga suurtes kogustes. Päringud saadetakse tavaliselt üle UDP, mitte TCP – püsivat ühendust ei looda, on ainult päringud ja vastused. See ei ole probleem, sest DNS-päringud ja -vastused on peaaegu alati piisavalt väikesed, et mahtuda ühte IPv4- või IPv6-paketti.

Lühike ajalugu

Ingliskeelse Vikipeedia andmetel lõi Paul Mockapetris domeeninimede süsteemi 1983. aastal USC Information Sciences Institute’is. Internet Engineering Task Force avaldas algsed spetsifikatsioonid RFC 882 ja RFC 883 novembris 1983. Novembris 1987 asendasid need dokumendid RFC 1034 ja RFC 1035, mis on DNS-protokolli aluseks tänini. Enne DNS-i pidas Stanfordi uurimisinstituut (praegune SRI International) tekstifaili HOSTS.TXT, mis seostas ARPANETi arvutite nimed nende numbriliste aadressidega. Võrgu kasvades vajati aga hajutatud ja automaatset lahendust – selleks saigi DNS, kus iga tsooni haldab oma nimeserver ja keegi ei pea kogu nimekirja üksi hoidma.

Turvalisus: DNS-i nõrgad kohad

Algselt ei sisaldanud DNS krüpteerimist ega autentimist – see loodi võimalikult laialdaseks kasutamiseks ja suure päringute hulga jaoks. Seetõttu on krüpteerimata DNS, nagu kõik krüpteerimata võrguliiklus, haavatav vahemeherünnakutele. Isegi internetiteenuse pakkuja või keegi, kellel on sarnane juurdepääs kasutaja ühendusele, võib anda DNS-päringutele valesid vastuseid.

Seetõttu on veebis turvalisust tavaliselt taganud HTTPS, mis põhineb SSL/TLS-il. Brauser usaldab HTTPS-lehte, kui server esitab sertifikaadi, mille on allkirjastanud usaldusnimekirjas olev sertifikaadiasutus ja mille nimi vastab domeeninimele. Ometi võib ründaja juba esimeses etapis anda brauserile vale IP-aadressi. Haavatavad võivad olla ka nimeserverid, teenusepakkujad, veebilehed ja sertifikaadiasutused.

DNSSEC

DNSSEC-i kasutamisel on kõik vastused digitaalselt allkirjastatud. Kuna DNS-vastused on lühikesed ja neid salvestatakse sageli mitmel tasandil vahemällu, on lihtsam saata allkirjastatud vastuseid kui krüpteerida kogu ühendust. Iga DNS-tsooni avalik võti – näiteks .org-tsooni oma, mida haldab .org nimede haldusorganisatsioon – on avalik teave, nii et iga salvestatud vastuse allkirja saab kontrollida. Allkirjade võltsimine on aga väga keeruline, sest selleks on vaja tsoonihalduri salajast privaatvõtit.

Kasulik tööriist

DNS-kirjete kontrollimiseks kasutatakse sageli käsurea tööriista dig (DNS lookup utility), millega saab vaadata, millise vastuse nimeserver konkreetsele päringule annab. See aitab näiteks veebisaidi kolimisel või domeeni seadistamisel veenduda, et kirjed on õiged.

Allikad