Blog: Anycast DNS – robust skalerbart

Der er sket en lille ting i Danmark. Der er kommet en ny censurfridns server – hos min gode ven Thomas der bestyrer censurfridns.dk navneservere sammen med en mindre gruppe, inkl undertegnede.

NOTE: Dette indlæg kan ses som en reklame, og er det til dels. Dog er det også vigtigt at brugere af en DNS service får opdateret indstillingerne, for at undgå problemer med lange svartider på DNS og der forsvinder en navneserver om MEGET kort tid. Jeg håber I tillader det, og samtidig giver det mig lejlighed til at gentage lidt information om anycast DNS. Censurfridns for dem som ikke kender det er et gratis alternativ til OpenDNS, GoogleDNS osv. uden censur.

Anycast DNS betyder kort fortalt at man smider en DNS forespørgsel ud på internet i form af en UDP pakke (glem lige DNS over TCP for nu). Denne pakke sendes så til destinationsadressen, så langt så godt. Til dette kan man bruge kommandoen host som anbefales kraftigt fremfor nslookup. Nslookup bruger ikke samme metode som dit resolverbibliotek, og derfor kan du ikke være sikker på de kommer til samme resultat, brug nu bare host. Til Peter og Thomas, ja ja brug I bare dig – I har så høj opløsning at I kan klare en hel side med information for et enkelt opslag. :-)

Nå men host kommandoen bruges på kommandolinien således:

og hvis jeg ønsker at slå op på en bestemt navneserver sætter man blot den på som argument:

Men hvad nu hvis den navneserver som ligger bagved adressen ikke kan håndtere alle opslagene? Så må man vel ud og købe et større miljø med loadbalancere og clustersoftware? eller nej. Internet har nemlig begrebet Anycast implementeret. Dette trick tillader at man annoncerer samme adresserum flere steder – samtidigt:

On the Internet, anycast is usually implemented by using Border Gateway Protocol to simultaneously announce the same destination IP address range from many different places on the Internet. This results in packets addressed to destination addresses in this range being routed to the “nearest” point on the net announcing the given destination IP address.

Så hvis man bruger BGP, annoncerer et adresserum – som best practice for tiden er minimum en /24 og lægger en DNS server på en adresse i dette adresserum – så kan man sprede opslagene gevaldigt. Faktisk er det præcist hvad man har gjort med rodzonen, de 13 IP-adresser som man kender som a.root-servers.net til m.root-servers.net. er annonceret fra mange steder på internet. Det kan man læse en hel masse om på hjemmesiden http://www.root-servers.org/

Anycast DNS i praksis for brugeren

I praksis betyder det at man kommer til den DNS server som er tættest på, fordi BGP foretrækker en kort AS-path, så en server i Finland tdc01.ring.nlnog.net får en L-root instans gennem Bahnhof i Sverige, men en tilsvarende apnic01.ring.nlnog.net i Japan går til Australien efter samme IP. Disse noder er en del af RING NLNOG som er perfekt til den slags undersøgelser.

Så langt så godt! Denne funktion tillader altså at IP-adressen 199.7.83.42 findes flere steder, annonceret med BGP og det giver redundans og robusthed. Hvis eksempelvis servere(n) hos Bahnhof går ned, forsvinder BGP annonceringen, og en anden route til dette adresserum bliver den active route. Fedt nok Internet. Faktisk betyder det at en rod navneserver idag ofte kan klares med langt færre resourcer, eksempelvis en enkelt server.

Anycast hos CensurfriDNS / UncensoredDNS

Det som nu er sket hos CensurfriDNS er at ns2.censurfridns.dk lukker 1. oktober, og erstattes med anycast.censurfridns.dk! Læs annonceringen her: http://blog.censurfridns.dk/node/57
Der skal samtidig lige være et stort tak til Comendo der siden starten i oktober i 2009 har medvirket villigt til dette projekt. Det er blandt andet den slags der giver mig glæde ved at være i internetmiljøet i Danmark.

Så hvis du vil bruge censurfridns skal du benytte disse adresser:

  • 91.239.100.100 anycast.censurfridns.dk
  • 89.233.43.71 ns1.censurfridns.dk
  • 2001:67c:28a4:: anycast.censurfridns.dk
  • 2002:d596:2a92:1:71:53:: ns1.censurfridns.dk

Bemærk at der nu indgår anycast i navnet på IP adressen 91.239.100.100 – og denne er rigtigt nok anycast’et. Samtidig er dette IP-adresserum registreret til censurfridns projektet og den IP skifter således ikke uanset om servere tilføjes eller fjernes fremover. Så både 91.239.100.100 og 2001:67c:28a4:: er en del af censurfridns’ egne “Provider Independent (PI)” IP ranges og burde være stabile i mange år frem i tiden. Hvis du ikke kan huske den, så kan det måske hjælpe at tænke 9 123 9 100.100, tak til BTDK i #BSD-DK for dette tip.

Jeg checkede også om den nye IP kunne nåes fra “internet” og fra RING netværket kan man lave en ring-ping, som gav en gennemsnits ping tid fra hele verden til 91.239.100.100 fra 260 servers på 61ms average. Det lyder måske slemt, men reelt er de fleste netværk i Europa under eller omkring 20 ms.

TL;DR bruger du censurfridns skal ud udskifte ns2 til anycast adressen 91.239.100.100

Var ovenstående ligetil? Er der spørgsmål omkring Anycast? DNS?

PS Hvis du gerne vil vide hvilke navneservere der performer bedst for dig, fra dit netværk kan du bruge https://code.google.com/p/namebench/

Posted in computer.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>