DNS

Wikipedia
Loikkaa: valikkoon, hakuun
Internet-protokolla
Network-receive.svg

sovelluskerros
DHCPDHCPv6DNSESMTPFTPHTTPIMAPIRCLDAPMGCPNNTPNTPPOP3RPCRTPRTSPSIPSMTPSNMPSOCKSSSHTelnetTLS/SSLXMPP
Go-up.svg

kuljetuskerros
TCPUDPDCCPSCTPRSVPRIPBGPECN
Internet-web-browser.svg

verkkokerros
IP (IPv4 ja IPv6)ICMPICMPv6IGMPOSPFIPsec

DNS eli Domain Name System on Internetin nimipalvelujärjestelmä, joka muuntaa verkkotunnuksia IP-osoitteiksi.[1] Internetin laitteet kommunikoivat keskenään numeeristen osoitteiden avulla, joiden muistaminen olisi ihmisille toivotonta. Nimipalvelun ansiosta niiden sijasta voidaan käyttää helpommin muistettavia nimiä. Nimipalvelun toinen tärkeä tehtävä on sähköpostin reititys.

Nimipalvelun toteuttavia palvelintyyppejä on kaksi.

  • Nimipalvelukyselyihin vastauksia hakevat koneet eli resolverit.
  • Nimipalvelukyselyihin vastauksia antavat koneet eli auktoritatiiviset nimipalvelimet.

Nimipalvelun historia[muokkaa | muokkaa wikitekstiä]

Tietokoneita on nimetty niiden keksimisestä lähtien, samoin tietoverkkoja. DNS on rakennettu tukemaan IP-verkkoa, ja nimipalvelun kannalta on epäolennaista kuinka nimet toimivat muissa verkoissa.

IP-verkon alkuaikana osoitteille annettiin nimiä ainoastaan hosts-tiedostossa, jonka kopiota jaettiin koneiden välillä.[2] Laitekannan kasvaessa menetelmä ei ollut käytännöllinen, ja vuonna 1983 Jon Postel pyysi Paul Mockapetrisiä ratkaisemaan nimiin liittyvän ongelman. Alkuperäinen nimipalvelun määritelmä löytyy dokumenteistä RFC 882 ja RFC 883. Vuonna 1987 nimipalvelun määritelmiä päivitettiin RFC 1034- ja RFC 1035 -dokumenteissa, jolloin muodostui nykyisen nimipalvelun perusta.

Nimipalvelua kehitetään edelleen[3] Vuosien aikana nimipalveluun on lisätty tietoturvaa tukevia tietotyyppejä, sen dynaamisuutta on paranneltu ja määrityksiä täsmennetty.

Ensimmäinen nimipalvelusovellus oli Paul Mockapetrisin luoma JEEVES. Myöhemmin Berkeleyn opiskelijat Douglas Terry, Mark Painter, David Riggle ja Songnian Zhou kirjoittivat sovelluksen uusiksi, ja antoivat sille nimeksi Berkeley Internet Name Domain eli BIND. Ohjelmistoa ovat myöhemmin ylläpitäneet muun muassa Mike Karels, Phil Almquist ja Paul Vixie. Windows-versio BINDistä tehtiin vuonna 1990.

Verkkotunnus nimipalvelussa[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: Verkkotunnus

Verkkotunnuksen osat erotetaan toisistaan pisteellä. Yleensä osat kirjoitetaan järjestyksessä spesifisemmästä laajempaan vasemmalta oikealle, eli juuresta katsottuna oikealta vasemmalle. Ensimmäisen tason domain on juuri, joka on pelkkä piste. Juuresta seuraavan tason tunnuksia nimitetään ylätason verkkotunnuksiksi (Top-Level Domain eli TLD). Kaikki ylätason verkkotunnukset ovat säädeltyjä, ja lähes kaikilla ylätason verkkotunnuksilla on oma, erillinen rekisterinsä.

Ylätason verkkotunnuksia on kahta päätyyppiä, maatunnuksia (Country Coded TLD eli ccTLD) ja yleisluontoisia tunnuksia (Generic TLD eli gTLD). Esimerkiksi Suomessa käytettävä maatunnus on fi. Yleisluontoisia puolestaan ovat .com, .org ja .net.[4] Ylätason verkkotunnuksen haltija, esimerkiksi Ficora, jakelee edelleen hallinnoimansa ylätason tunnuksen aliverkkotunnukset.[5] Ylätason aliverkkojen kaksiosaisia tunnuksia – esimerkiksi wikipedia.org – kutsutaan domaineiksi.

Domainin ylläpitäjä voi edelleen tehdä omalle domainilleen alidomaineja. Tällainen on esimerkiksi dhcp.inet.fi, jonka alla olevat verkkotunnukset ovat samassa laajakaistaverkossa olevien koneiden tunnuksia.

Verkkotunnuksia IP-osoitteisiin puhelinluettelon tavoin liittävän nimipalvelun lisäksi on olemassa käänteisnimipalvelu, jonka avulla saadaan selville IP-osoitetta vastaava verkkotunnus. Käänteisosoitteiden juuri on in-addr.arpa. Osoitteet muistuttavat tavanomaisia domaineja. Merkittävin ero on se, että niihin viitataan eri tietotyypillä kuin tavallisiin nimiin. Käänteisdomainin saa palveluntarjoajalta tai Internet-rekisteristä. Euroopan alueella Internet-rekisteri on RIPE.

Resolverit[muokkaa | muokkaa wikitekstiä]

Mallinne resolverin toiminnasta.

Arkikielessä nimipalvelimilla tarkoitetaan usein ainoastaan resolvereja, jotka määritellään Internetin tietokoneille staattisesti tai DHCP:n avulla. Tavallisesti resolvereita määritellään kaksi tai useampia.

Resolvereiden tärkein tehtävä on etsiä vastauksia nimipalvelukyselyihin. Resolverit tallettavat vastauksia välimuistiin, millä vältetään rekursio silloin, kun jotain nimeä kysytään usein. Tämä parantaa resolvereiden tehokkuutta.[6]

Resolverin rekursio tarkistaa onko kysytty nimi, enemmän merkitsevästä vähemmän merkitsevään, tai sen osa välimuistissa. Mikäli koko nimi on välimuistissa, eikä vanhentunut, se palautetaan ilman rekursiota. Mikäli vain nimen vähemmän merkitsevä osa on välimuistissa, tehdään ulossuuntautuvia kyselyjä, jotta resolveri pystyy kertomaan pyydetyn tiedon. Samalla se myös tallennetaan välimuistiin. Jos välimuisti on tyhjä, resolveri käyttää vihjetiedostoa, jonne juurinimipalvelimet on merkitty, ja ryhtyy sen kautta täyttämään välimuistiaan.

Resolveri ei saa pitää välimuistissaan tietoja kauempaa kuin nimipalveluun on määritelty. Välimuistissapitämisaikaa (Time to Live eli TTL) säätelevät autoritääristen nimipalvelimien (katso alempana) ylläpitäjät. Käytössä olevan resolverin olisi syytä olla verkossa mahdollisimman lähellä ja tehokkaalla koneella,[7] jotta nimipalvelun käyttötuntuma olisi nopea.

Resolverin tulisi vastata ainoastaan sen organisaation kyselyihin jonka käytössä kone on.[8]

Autoritääriset nimipalvelimet[muokkaa | muokkaa wikitekstiä]

Autoritääriset nimipalvelimet vastaavat resolvereiden tekemiin kyselyihin. Domainnimen suhteen vähemmän merkitsevät nimipalvelimet kuten juurinimipalvelimet eivät tiedä lopullista vastausta, mutta tietävät millä nimipalvelimilla enemmän merkitsevä domain sijaitsee. Tämä synnyttää rekursion.

Juuri- ja TLD-nimipalvelimia ylläpidetään ammattimaisesti ja ne on hajautettu Jokulähetys (anycast) -tekniikalla. Nimipalvelusisällön TLD-nimipalvelimet saavat domain rekisteristä. Kolmannen tason domaineille, kuten example.com, auktoritatiiviset nimipalvelimet määrittelee domainin rekisteröijä. Kolmannen tason autoritääriset nimipalvelimet voivat olla enemmän tai vähemmän ammatillisesti ylläpidettyjä.

Jokaisella domainilla tulisi olla vähintään kaksi autoritääristä nimipalvelinosoitetta. Osoitteita voi olla enemmän kuin kaksi, ja niitä voi hajauttaa fyysisesti useisiin paikkoihin Jokulähetyksen tai kuormantasaajan avulla. Yhden autoritäärisistä nimipalvelimista täytyy olla master, joka jakaa muille domainista kopion. Kopioita vastaanottavien koneiden nimi on slave. Domain kopion siirtymistä masterilta slavelle kutsutaan nimellä zone transfer, joka on tavanomaisesti rajoitettu ainoastaan koneille, jotka ovat nimipalvelimen pääsylistalla tai pitävät hallussaan TSIG-avainta.

Autoritääriset nimipalvelimet voivat ottaa päivityksiä vastaan asiakaskoneilta. Tekniikka, jolla päivitykset toteutetaan, on nimeltään dynaaminen DNS (DynDNS). Päivitysten tarkoituksena on asettaa nimi- ja IP-pareja asiakaskoneen pyynnöstä vastaamaan toisiaan.

Autoritäärisille nimipalvelimille voidaan tehdä eri näkymiä (view) eri verkko-osoitteista, tai osoiteavaruuksista, tuleville kyselyille. Näkymien avulla nimipalvelun ylläpitäjä voi joustavasti ohjailla liikennettä. Ellei näkymien käytön kanssa ole varuillaan niillä voi aiheuttaa outoja ongelmia.

Autoritääristen nimipalvelimien on vastattava kaikkialta Internetistä tuleviin kyselyihin.

Tietueet[muokkaa | muokkaa wikitekstiä]

Nimipalvelun sisältötieto kulkee tietueiden välityksellä. Nimipalvelun kannalta domain on tietue siinä missä nimi-ip-pari. Yleisimmin tarvittuja tietueita ovat:

A Tietue, joka osoittaa IP-osoitteen
PTR IP-osoite, joka osoittaa nimen
MX Tietuetta palvelevat sähköpostipalvelimet
NS Domainin nimipalvelimet
SOA Domainin hallintatiedot
TXT Tietueen osoittama vapaateksti

Tietueissa sallittuja merkkejä ovat kirjaimet, numerot ja yhdysviiva. Pienet sekä isot kirjaimet tarkoittavat samaa ja muut merkit eivät ole sallittuja. Poikkeuksen muodostaa NAPTR-tietue, jossa on sallittu alaviiva ja tietuesisällössä säännölliset lausekkeet.[9] Toinen poikkeus on SRV-tietue, jossa on sallittu alaviivan käyttö.[10]

Seuraavat tietueet ovat verrattaen uusia:

AAAA Tietue, joka osoittaa IPv6-osoitteen
DNAME Domainien uudelleen nimeäminen
NAPTR "Puhelinnumerotietue"
SRV Palvelunosoitustietue

Resolveri voi tehdä myös ANY-kyselyn, joka ei ole varsinaisesti tietue. Tehtäessä ANY-kysely vastaus sisältää kaikki tietueet jotka liittyvät nimeen. Vastaavasti autoritäärisille nimipalvelimille voidaan määritellä tähtitietue (wildcard), joka muuntaa domainin määrittelemättömät nimet vastaukseksi joka tähtitietueeseen on määritelty. Kolmas yleisesti tiedossa oleva melkeinselvennä tietue, on SPF (Sender Policy Framework) joka määritellään TXT-tietueen sisällöksi.

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. J. Botha, C. Bothma ja Pieter Geldenhuys: Managing E-Commerce in Business, 2. painos, s. 20. Juta and Company Ltd, 2008. ISBN 9780702173042. (englanniksi)
  2. Internetin historiaa – 1983 CSC – Tieteen tietotekniikan keskus. Viitattu 18.3.2010.
  3. Nimipalveluun liittyvät RFC dokumentit.
  4. ICANN Top-Level Domains
  5. Ficoran verkkotunnuspalvelu.
  6. DNS Performance and the Effectiveness of Caching.
  7. Best Practices in DNS Service-Provision Architecture
  8. Anatomy of Recent DNS Reflector Attacks from the Victim and Reflector Points of View
  9. The Naming Authority Pointer (NAPTR) DNS Resource Record
  10. A DNS RR for specifying the location of services (DNS SRV)