Moduuli 1 · 1.4
DNS-kyselyn matka
Moduuli 1: Mikä on DNS? · Lukuaika: 8 minuuttia
Oppimistavoite: Tämän oppitunnin jälkeen osaat selittää vaihe vaiheelta, miten resolveri löytää vastauksen, ja missä kohdissa matkan varrella vastauksia muistetaan.
Keskeiset käsitteet: resolveri (rekursiivinen), rootpalvelin, TLD-palvelin, autoritatiivinen nimipalvelin, verwijzing (delegointi), välimuisti
Kaksi DNS-palvelintyyppiä
Oppitunnilla 1.1 näit, että DNS on jaettu osiin: kukaan ei tiedä kaikkea. Miten selaimesi silti saa selville osoitteen www.example.com? Tätä varten kaksi palvelintyyppiä toimii yhdessä:
- Autoritatiiviset nimipalvelimet (englanniksi authoritative) tietävät vastauksen oman osa-alueensa osalta. Domainin
example.comnimipalvelimet tietävät domaininexample.comtietueet. Ne eivät etsi mitään muiden puolesta. - Resolverit (kutsutaan myös rekursiivisiksi resolvereiksi) etsivät vastauksen sinun puolestasi. Ne kysyvät eteenpäin, kunnes saavat vastauksen. Internetpalveluntarjoajallasi on resolveri, ja on myös julkisia resolvereita, kuten Quad9:n, Cloudflaren tai Googlen.
Tietokoneesi itse ei juuri etsi mitään. Sillä on pieni stub-resolveri, joka välittää kyselyn verkkosi resolverille ja saa vastauksen takaisin.
Matka, vaihe vaiheelta
Oletetaan, että resolveri ei ole vielä muistanut mitään ja kysyt domainin www.example.com A-tietuetta.
- Tietokoneesi kysyy resolverilta: "Mikä on www.example.com:in A-tietue?"
- Resolveri kysyy rootpalvelimelta. Jokaiseen resolveriin on sisäänrakennettu lista rootpalvelimien osoitteista. Rootpalvelin ei tiedä mitään domainista
example.com, mutta tietää kuka hallinnoi tunnusta.com. Se vastaa verwijzingillä: "Sinun täytyy kääntyä .com-tunnuksen nimipalvelimien puoleen: a.gtld-servers.net, b.gtld-servers.net, ja niin edelleen." - Resolveri kysyy .com-tunnuksen nimipalvelimelta. Sekään ei tiedä domainin
www.example.comIP-osoitetta, mutta tietää mitkä nimipalvelimet domainillaexample.comon. Taas uusi verwijzing: "Kysy ns1.hosting.example:lta tai ns2.hosting.example:lta." - Resolveri kysyy example.com:in nimipalvelimelta. Se on autoritatiivinen tälle domainille ja antaa vastauksen: "www.example.com:in A-tietue on 192.0.2.10."
- Resolveri antaa vastauksen tietokoneellesi. Selaimesi muodostaa yhteyden osoitteeseen 192.0.2.10.
Ylemmän tason verwijzingiä alemman tason nimipalvelimiin kutsutaan delegoinniksi. Root delegoi tunnuksen .com Verisignille, .com delegoi domainin example.com nimipalvelimille, jotka haltija on ilmoittanut. Suomalaisen .fi-verkkotunnuksen kohdalla se toimii aivan samalla tavalla, paitsi että root ohjaa tällöin tunnuksen .fi nimipalvelimille. Hollantilaisen .nl-verkkotunnuksen kohdalla root ohjaa vastaavasti tunnuksen .nl nimipalvelimille (SIDN, esimerkiksi ns1.dns.nl). Näet tämän itse tämän oppitunnin lopussa olevassa tehtävässä. Siksi on niin tärkeää, että nimipalvelimet täsmäävät rekisterinpitäjän tiedoissa (oppitunti 2.1).
Välimuisti: ei joka kerta koko matkaa
Jos jokainen resolveri aloittaisi joka kyselyllä uudestaan rootista, root saisi käsittämättömän määrän kyselyitä. Näin ei tapahdu, koska resolveri muistaa vastaukset jonkin aikaa. Tätä muistia kutsutaan välimuistiksi.
Kuinka kauan vastaus saadaan muistaa, kerrotaan itse vastauksessa: TTL (time to live), sekunteina. TTL-arvo 3600 tarkoittaa: tätä vastausta saa muistaa tunnin ajan. Myös verwijzingit muistetaan. Resolverin, joka juuri sai tietää mitkä nimipalvelimet tunnuksella .com on, ei tarvitse kysyä sitä seuraavalla kerralla uudestaan rootilta.
Jos joku toinen saman palveluntarjoajan asiakas kysyy minuutin kuluttua domainia www.example.com, resolveri vastaa heti välimuististaan. Ei matkaa, ei odotusaikaa.
Välimuisteja on useissa paikoissa:
- palveluntarjoajasi resolverissa tai käyttämässäsi julkisessa resolverissa;
- käyttöjärjestelmässäsi (Windows, macOS, puhelimesi);
- selaimessasi;
- joskus reitittimessäsi.
Tämä on nopeaa ja tehokasta, mutta siitä seuraa jotain, mihin törmäät myöhemmin usein: kun muutat tietuetta, välimuistit jatkavat vanhan vastauksen antamista, kunnes niiden TTL on kulunut umpeen. Siksi yksi näkee muutoksen jo ja toinen ei vielä. Moduuli 6 käsittelee tätä laajasti.
Rootpalvelimet
Rootpalvelimilla on 13 nimeä: a.root-servers.net aina m.root-servers.net:iin asti. Niitä hallinnoi kaksitoista eri organisaatiota. Jokaisen nimen takana on maailmanlaajuisesti paljon palvelimia, sadoissa paikoissa, jotka jakavat saman osoitteen (tätä kutsutaan anycastiksi). Resolverisi päätyy automaattisesti lähimpään. Myös TLD-nimipalvelimet, kuten tunnusten .com ja .nl nimipalvelimet, toimivat tällä tavalla. Siksi DNS on nopea ja jatkaa toimintaansa, vaikka jokin palvelin jossain lakkaisi toimimasta.
Mistä voi mennä pieleen
Kun tunnet matkan, osaat sijoittaa ongelmat paremmin:
- Delegointi ei täsmää. Rekisterinpitäjällä on nimipalvelimet, jotka eivät (enää) tunne domainia. Resolveri ei pääse eteenpäin vaiheessa 4. Vastaus on virhe tai vastausta ei tule lainkaan.
- Autoritatiivisella palvelimella on eri vastaus kuin odotit. Olet silloin muuttanut tietuetta eri paikassa kuin missä nimipalvelimet sijaitsevat (oppitunti 2.1).
- Välimuistissa on vielä vanha vastaus. Silloin mikään ei ole rikki. Sinun täytyy odottaa, kunnes TTL on kulunut umpeen, tai tyhjentää oma välimuistisi.
- DNSSEC ei täsmää. Validoiva resolveri tarkistaa allekirjoitukset matkan varrella. Jos ketju ei täsmää, se kieltäytyy vastauksesta (oppitunti 8.1).
Työkalulla dig +trace voit tehdä matkan itse uudestaan, rootista autoritatiiviseen palvelimeen asti. Opit tämän oppitunnilla 8.2. Myös verkossa toimivat työkalut osaavat saman.
Yhteenveto
- Autoritatiiviset nimipalvelimet tietävät vastauksen oman domaininsa osalta; resolverit etsivät vastauksen sinun puolestasi.
- Resolveri aloittaa rootista, saa verwijzingin TLD:hen, sitten domainin nimipalvelimiin, ja saa siellä vastauksen.
- Tällaista verwijzingiä kutsutaan delegoinniksi.
- Vastaukset muistetaan välimuisteissa niin kauan kuin TTL sanoo; siksi muutokset eivät näy kaikkialla heti.
- Rootpalvelimilla on 13 nimeä, mutta anycastin ansiosta niiden takana on maailmanlaajuisesti paljon palvelimia.
Tietovisa
Tehtävä
Tehtävä Z1.4: Matkan seuraaminen. Seuraa domainin www.sidn.nl matkaa komennolla dig +trace www.sidn.nl tai verkkotyökalulla, joka näyttää jäljityksen. Täytä: (1) yksi tunnuksen nl. nimipalvelin, jonka kohtaat matkalla, (2) yksi domainin sidn.nl autoritatiivinen nimipalvelin.
Lue lisää
Nämä artikkelit kuvaavat tilannetta WebOkéssa. Muilla palveluntarjoajilla se toimii samankaltaisesti.
