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:
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 ja . 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):
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:
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.