Ny rekursiv DNS-tjener vha anycast

DNS er en helt basal byggekloss i IT-verdenen og er som kjent en global distribuert database over domenenavn og IP-adresser. Man kan skille mellom to typer DNS-tjenere. En autorativ tjener har ansvaret for et gitt subsett av navnerommet. Alle som ønsker å vite noe om et gitt domene må spørre en av de autorative DNS-tjenerne for dette domenet. UiTs autorative navnetjenere er benoni.uit.no og lozen.uit.no i tillegg til en maskin hos UNINETT. Disse er tilgjengelige for heile verden.

Navnerommet er bygd opp hierarkisk og for å finne den autorative navnetjeneren for et gitt underdomene må man traversere seg gjennom en rekke navnetjenere fra rot-navnetjenerne og nedover. For at enkeltklienter og enkeltprogrammer skal slippe å gjøre dette selv finnes  rekursive navnetjenere. IP-adressen til den rekursive navnetjeneren legges inn hos klienten (dersom man ikke får denne satt vha DHCP, legges den inn i /etc/resolv.conf (*nix) eller under nettverksinnstillinger (Windows og annet)).  Når den rekursive navnetjeneren blir spurt om et domene kan den enten gi svaret direkte fra cache eller den henter inn svaret fra andre navnetjenere. Tidsstempel på de ulike innslagene i databasen avgjør hvor lenge de kan oppbevares i cachen.

Siden DNS-svar blir lagret i cachen til den rekursive navnetjeneren må man av sikkerhetsmessige grunner beskytte disse navnetjenerne ekstra. Rekursive og autorative tjenere bør holdes adskilt og den rekursive tjeneren må ikke være åpent tilgjengelig for hvem som helst. — Dersom noen med ondt i sinne har tilgang til vår rekursive navnetjener kan de sende avgårde spesialspørringer som gjør at navnetjeneren vår fyller cachen med skadelige data.

Navneoppslag må gå kjapt. En klient kan være konfigurert med fleire DNS-tjenere slik at når den ikke får svar fra nummer en vil den forsøke å spørre nummer to. Den vil imidlertid vente på svar fra nummer en i ca 20 sekunder før den spør nummer to – for hvert eneste navneoppslag! Dette gjør at dersom den primære rekursive navnetjeneren  er nede så vil det oppleves som om Internett er nede. (Windows forsøker å unngå dette ved å ha sin egen interne cache over tidligere navneoppslag. Dette har både fordeler og ulemper).

De siste ni årene har adressen til vår rekursive navnetjener vært implementert vha et sinnrikt system av script som har tatt seg av å detektere om adressen er utilgjengelig og ev. flytte adressen og DNS-tjeneren til en annen maskin. Dermed oppleves navnetjeneren som om den har nærmere 100% oppetid selv om maskinene den kjører på og selve DNS-programvaren blir oppdatert stadig vekk. Nå er tida imidlertid inne til å løse dette på en meir elegant måte.

Anycast

Anycast

Svaret er anycast. Der unicast beskriver trafikk mellom to spesifikke maskiner og broadcast beskriver trafikk fra en maskin til mange mottakere, er anycast en beskrivelse av trafikk mellom en spesiell maskin og en av ei gruppe maskiner. Ei gruppe maskiner settes opp til at  alle kan svare på forespørsler om en spesiell adresse. Når en klient forsøker å kontakte denne adressen tar ruterne seg av å sette klienten i kontakt med en av disse, gjerne den som er rutingmessig nærmest. Dette er en teknikk som er brukt av fleire av rot-navnetjenerne i mange år. Enkelte av rot-navnetjenerne er fysisk spredt over heile jordkloden selv om vi bare kjenner dem som en enkelt IP-adresse. For å finne ut hvilken instans av en DNS-tjener som vi når via anycast kan vi bruke spørringa (på *nix) “dig hostname.bind txt ch +short @f.root-servers.net”. I vårt tilfelle vil svaret være “ams1X.f.root-servers.org” som er fysisk plassert i Amsterdam.

UiTs nye rekursive navnetjener vil fortsatt befinne seg i Tromsø, men den ene instansen vil kjøre i Teorifagsbygget, mens den andre er i MH-bygget. Adressen rutes via OSPF. Ved nedetid på en av tjenerne vil trafikken automatisk rutes kun til den andre tjeneren og så godt som ingen nedetid vil detekteres av klientene.

Malurten i begeret er at vi nå må bytte IP-adresse på vår rekursive navnetjener. Anycast fungerer som sagt ved at ruterne tar seg av å sette klienten i kontakt med en tjener. Vår gamle 129.242.5.253 befinner seg på et /24-nett sammen med en mengde andre tjenere. Maskiner på samme IP-nett spør ikke rutere om hvordan de skal få tak i hverandre, men benytter seg av ARP og mekanismer på lag 2 i OSI-modellen. Dersom vi implementerte anycast på den gamle adressen ville vi da stå med nærmere 100 sentrale servere som ikke ville få tak i rekursiv navnetjener uten at vi begynte å rote i arp-tabeller både her og der.

Derfor vil vi stolt presentere vår nye rekursive DNS-tjener, 129.242.9.253 alias dns-cache.uit.no. Navntjeneren er ikke tilgjengelig utenfor UiT (dvs campus Breivika og våre utskutte enheter i Bodø, Karasjok og Svalbard) og anbefales brukt som DNS-resolver for alt utstyr. Vi lover å ikke bytte adressen de første ni årene i allefall…

Leave a Reply

Your email address will not be published. Required fields are marked *