Vad är DNS? DNS Michael Westlund westlund@sunet.se Domain Name System Håller reda på domännamnen på Internet Världens mest distribuerade databas Trädstruktur 0-10-04 Michael Westlund <westlund@sunet.se> 2 Vad är DNS? (forts.) Vad är DNS utåt? com net se Översätter från namn till IP-nummer Översätter från IP-nummer till namn Pekar ut e-postserver/servrar Hierarkisk trädstruktur yahoo nordu swip kth sunet yahoo nic mailbox nada stacken ftp katalogen 0-10-04 Michael Westlund <westlund@sunet.se> 3 0-10-04 Michael Westlund <westlund@sunet.se> 4 Vad är DNS internt? Vad är DNS internt? (forts.) Distribuerad databas för upslagning av domäner, IPnummer, e-postservrar etc. IP-baserat binärt protokoll som använder UDP. Förbindelselöst (för det mesta ) Applikationsnivån (nivå 7 i OSI-modellen) Man skiljer mellan DNS-server och DNS-klient Klienten frågar servern efter någonting. Serverns uppgift är att ta reda på svaret. En server kan behöva fråga många andra servrar för att leverera ett svar till en klient. Klient Server 0-10-04 Michael Westlund <westlund@sunet.se> 5 0-10-04 Michael Westlund <westlund@sunet.se> 6
Exempel på domännamnstruktur Varför behövs DNS? com net se Namn är lättare att komma ihåg än siffror Centraliserade komponenter/algoritmer/tabeller skalar inte. Bättre med distribuerad kunskap om distribuerade förhållanden. Stor skillnad mellan organisatorisk struktur och fysisk/topologisk struktur yahoo nordu swip kth sunet yahoo IP-nummer fysisk uppdelning Domännamn organisatorisk uppdelning nic mailbox nada stacken ftp katalogen Uttalas nic.nordu.net 0-10-04 Michael Westlund <westlund@sunet.se> 7 0-10-04 Michael Westlund <westlund@sunet.se> 8 Hur fungerar DNS? Hur det hela började DNS är en distribuerad databas med en mängd olika typer av information, bl. a. Adressinformation. Genom den hierarkiska namngivningen av domäner kan man se det hela som ett träd, ungefär som ett filsystem. Exempel på poster: A Adress MX E-postserver CNAME Alias NS DNS-server PTR Baklängesuppslagning När man söker information gör man det för en viss typ av poster och ett visst namn, t. ex. MX för nada.kth.se. ARPANET 1969: Liten grupp med datorer där alla kände till alla. ARPANET designades för att klara att stora delar av infrastrukturen slås ut, exempelvis genom ett kärnvapenanfall. Paketförmedlat nät där varje paket innehåller avsändare och mottagare. HOSTS.TXT var en centralt administrerad fil som distribuerades periodiskt till alla datorer. (ftp ett par gånger i veckan) Filen blev större och större och till slut upptog överföringar av HOSTS.TXT större delen av bandbredden på ARPANET. 1984 skapades DNS, The Domain Name System, av Paul Mockapetris (RFC882 och RFC883) Numera har RFC1034 och RFC1035 ersatt de gamla. 0-10-04 Michael Westlund <westlund@sunet.se> 9 0-10-04 Michael Westlund <westlund@sunet.se> 10 Viktiga begrepp och definitioner Viktiga begrepp och definitioner (forts.) Domäner (underdomäner) Domän är en nod inklusive alla underliggande noder Domänträdet Hela trädet med alla noder. Roten Den nod som ligger högst upp i trädet. Roten skrivs som tomma strängen, eller som punkt. Noder Exempelvis kth eller nada. Framlängesuppslagning Du vet domännamnet och söker IP-numret. Baklängesuppslagning Du vet IP-numret och söker domännamnet. Rekursiv uppslagning Du är lat eller långsam och ber DNS-servern att leta reda på svaret åt dig, även om den inte själv känner till det. Ickerekursiv uppslagning Om DNS-servern känner till svaret får du det, annars får du en hänvisning till en annan DNS-server som vet bättre. 0-10-04 Michael Westlund <westlund@sunet.se> 11 0-10-04 Michael Westlund <westlund@sunet.se> 12
Viktiga begrepp och definitioner (forts.) Viktiga begrepp och definitioner (forts.) Cachning DNS-servern sparar svaret på tidigare frågor i ett maximalt tillåtet antal sekunder. Negativ cachning Sparar även negativa svar, dvs att det inte fanns ett svar på en viss fråga. Delegering Låta någon annan ta hand om ansvaret för en underliggande domän. Zon En zon är en domän minus de underdomäner som delegerats. Primärtjänst / Primary DNS / Master Den som har originaldatabasen Sekundärtjänst / Secondary DNS / Slave En eller flera servrar som hämtar sin information från mastern. Vidarebefordrare / Forwarder Namntjänst som är inställd på att fråga en annan namntjänst. Namntjänst / DNS / Name Server En server son tillhandahåller en DNS-tjänst med allt vad det innebär (uppslagning på namn, IP-adress, e-postservrar etc.) Rotnamntjänst Innehåller endast hänvisningar till andra zoner. 0-10-04 Michael Westlund <westlund@sunet.se> 13 0-10-04 Michael Westlund <westlund@sunet.se> 14 Viktiga begrepp och definitioner (forts.) Syntax Resolver Den mekanism som applikationer använder sig av för uppslagningen. Detaljerna för hur rutinerna arbetar göms för applikationen. named (name daemon) Tjänstedelen i ett UNIX-system. Bind Berkley Internet Domain En programvara (eller snarare programvaran) för att sätta upp en DNS-tjänst. Översta noden (rotnoden) är den tomma strängen Punkten är en avskiljare (förväxla EJ med punkterna i IP-adresserna) Man traverserar trädet nerifrån när man utläser domännamnet. Man traverserar trädet uppifrpn när man söker efter domännamn. Maximal tillåten längd på varje nodnamn är 63 tecken. Maximal tillåten längd på hela domännamnet, inklusive punkter, är 255 tecken. Godtyckliga tecken är tillåtna, dock gäller a-z, 0-9 samt - för datornamn. Ingen skillnad mellan stora och små bokstäver. (Oftast används endast små bokstäver) 0-10-04 Michael Westlund <westlund@sunet.se> 15 0-10-04 Michael Westlund <westlund@sunet.se> 16 Baklängesuppslagning Posttyper arpa net in-addr nordu swip 130 237 228 73 nic mailbox nada www kth se sunet yahoo stacken ftp katalogen SOA Ansvarig för domänen (Start Of Authority) NS Uppgift om ansvarig DNS-server (Name Server) A IP-adress (Address) PTR Baklängesuppslagning (Pointer) CNAME Alias (Canonical Name) MX E-postserver (Mail exchange) (SRV) Uppgift om olika tjänster (Service) 0-10-04 Michael Westlund <westlund@sunet.se> 17 0-10-04 Michael Westlund <westlund@sunet.se> 18
SOA SOA (forts.) Pekar ut vem som är ansvarig för domänen. Anger parametrar för slavservrar samt för cachning. kth.se. IN SOA kth.se. hostmaster.kth.se. ( 2000092601 ; serial 3600 ; refresh 600 ; retry 2419200 ; expiry 86400 ) ; minimum TTL Serial number Ökas vid varje ändring i zonen Refresh Anger hur ofta en slav skall kontrollera serienummret Retry Anger hur ofta slaven skall vänta om en kontroll av serienummret misslyckas. Expire Anger hur länge en slav skall spara sin information om domänen efter en misslyckad serienummerkontroll. Minimum TTL Anger hur länge en icke-auktoritativ server får spara svaret. 0-10-04 Michael Westlund <westlund@sunet.se> 19 0-10-04 Michael Westlund <westlund@sunet.se> 20 NS NS (exempel) Pekar ut alla namntjänster för en domän/underdomän. Ingen skillnad mellan master och slave. (De har samma bemyndigande.) Två till fyra servrar täcker de flesta behov. Om den auktoritativa servern ligger i samma domän som delegeras, krävs ett sk. glue record. kth.se. IN NS ns.kth.se. kth.se. IN NS nic.lth.se. kth.se. IN NS sunic.sunet.se. ;; Delegering av nada.kth.se. nada.kth.se. IN NS ns.nada.kth.se. nada.kth.se. IN NS ns.mit.edu. ;; Glue Record för ns.nada.kth.se. ns.nada.kth.se. IN A 130.237.225.70 0-10-04 Michael Westlund <westlund@sunet.se> 21 0-10-04 Michael Westlund <westlund@sunet.se> 22 A PTR Kopplar namn till nummer. Många namn kan peka på samma nummer. Ett namn kan peka på många nummer Exempel: www.hotellet.se. IN A 194.86.84.28 www.small-company.com. IN A 194.86.84.28 www.big-company.com. IN A 131.201.78.3 www.big-company.com. IN A 131.201.78.4 Uppslagning av namn från IP-nummer (basklängesuppslagning) Domänen in-addr.apra. innehåller samtliga IP-adresser som finns. Information om en dator finns både som A-post och PTR-post. Ett IP-nummer får bara ha ett namn. Exempel: 28.84.86.194.in-addr.arpa. PTR www.hotellet.se. 0-10-04 Michael Westlund <westlund@sunet.se> 23 0-10-04 Michael Westlund <westlund@sunet.se> 24
CNAME Pekar ut alias (canonical name) för ett namn. Praktiskt för att ange logiska tjänster, exempelvis mail, ftp, gopher, www etc. Om ett CNAME finns för ett namn får inte någon annan post för det namnet finnas! Exempel: ftp.foo.net. IN CNAME server.foo.net. www.small-company.se. IN CNAME www.hotellet.se. MX Anger vilken eller vilka datorer som tar emot post för domänen. Den server med lägst nummer är den som prioriteras En server för en domän skickar bara vidare e-post till servrar för samma domän som har lägre nummer. 0-10-04 Michael Westlund <westlund@sunet.se> 25 0-10-04 Michael Westlund <westlund@sunet.se> 26 MX (exempel) Fallstudie: Klotmasonit AB virtual.com. IN MX 10 smtp.mail.com. ;; Backup nada.kth.se. IN MX 0 mail.nada.kth.se. nada.kth.se. IN MX 5 mail2.nada.kth.se. nada.kth.se. IN MX 10 mail.kth.se. ;; Lastdelning hotmail.com. hotmail.com. hotmail.com. IN MX 50 m1.hotmail.com. IN MX 50 m2.hotmail.com. IN MX 50 m3.hotmail.com. se klotmasonit www mail hq pc1 pc2 pc3 rd sun1 sun2 www coke-machine. se hq klotmasonit rd 0-10-04 Michael Westlund <westlund@sunet.se> 27 0-10-04 Michael Westlund <westlund@sunet.se> 28 Konfigurering av DNS-klient Viktig fil 1: /etc/resolv.conf Konfigurering av resolver. Resolverrutiner kallas de funktioner som används på en dator för att ställa frågor till en DNS-server. Resolvern hårdkodas att ställa frågor till en eller flera förutbestämda DNS-servrar Grundläggande konfiguration innehåller - en eller flera DNS-servrar - en eller flera domäner som systemet tillhör Listan med domännamn anger i vilka domäner sökning efter datornamn skall ske. 0-10-04 Michael Westlund <westlund@sunet.se> 29 Innehåller IP-adresser till DNS-servrar samt domänoch söklistor Egen domän (tas annars från hostnamnet) Exempel: Anger i vilka domäner sökning skall ske domain klotmasonit.se search rd.klotmasonit.se klotmasonit.se nameserver 192.168.42.42 Anger DNS-servrar att ställa frågor till nameserver 192.168.47.11 0-10-04 Michael Westlund <westlund@sunet.se> 30
Att sätta upp en DNS-tjänst (server) BIND - Berkley Internet Daemon Gratis DNS-server Går att kompilera på de flesta UNIX-baserade operativsystem Vi använder oss av BIND version 8 Hämtas från http://www.usc.org/ eller ftp://ftp.isc.org/isc/bind/src/ 0-10-04 Michael Westlund <westlund@sunet.se> 31 Viktig fil 2: /usr/local/etc/named.conf Pekar ut alla andra filer som BIND använder En fil per zon (baklängesuppslagningen räknas också som en egen zon) Glöm inte att lägga till localhost och 127.0.0.1. Vanligtvis placerar man filerna under /usr/local/named/ Tips: Gör en katalog för master, slave och default. 0-10-04 Michael Westlund <westlund@sunet.se> 32 Filstruktur för vår fallstudie /usr/local/etc/named.conf / options { directory /usr/local/named ; // Rotkatalog för named etc usr zone. IN { type hint; file default/db.cache ; // Innehåller rotnamnservrar (idag 13 st) resolv.conf named.conf etc master named slave db.klotmasonit db.127.0.0 db.localhost db.192.168.42 default db.cache zone localhost IN { type master; file default/db.localhost ; zone 0.0.127.in-addr.arpa IN { type master; file default/db.127.0.0 ; 0-10-04 Michael Westlund <westlund@sunet.se> 33 0-10-04 Michael Westlund <westlund@sunet.se> 34 /usr/local/named.conf (forts.) zone klotmasonit.se IN { type master; file master/db.klotmasonit.se ; zone 151.168.192.in-addr.arpa IN { type master; file master/db.192.168.42 ; // Kommentarer indleds med två slashar # eller hash (brädstapel). /usr/local/named/master/db.klotmasonit.se ; I zonfilerna inleds kommentar med semikolon. klotmasonit.se. IN SOA ns.klotmasonit.se. hostmaster.klotmasonit.se. ( 2000100400 ;serial 7200 ;refresh 3600 ;retry 604800 ;expire 86400) ;min TTL klotmasonit.se. IN NS ns.klotmasonit.se. klotmasonit.se. IN NS ns.isp.se. ns.klotmasonit.se. IN A 192.168.42.42 mail.klotmasonit.se. IN A 192.168.42.42 server.klotmasonit.se. IN A 192.168.42.42 www.klotmasonit.se. IN CNAME webbhotellet.isp.se. www.rd.klotmasonit.se. IN CNAME server.klotmasonit.se. 0-10-04 Michael Westlund <westlund@sunet.se> 35 0-10-04 Michael Westlund <westlund@sunet.se> 36
/usr/local/named/master/db.klotmasonit.se (forts.) /usr/local/named/db.localhost pc1.hq.klotmasonit.se. IN A 192.168.42.10 pc2.hq.klotmasonit.se. IN A 192.168.42.11 pc3.hq.klotmasonit.se. IN A 192.168.42.12 sun1.rd.klotmasonit.se. IN A 192.168.42.129 sun2.rd.klotmasonit.se. IN A 192.168.42.130 coke-machine.rd.klotmasonit.se. IN A 192.168.42.131 klotmasonit.se. IN MX 10 mail.klotmasonit.se. klotmasonit.se. IN MX 20 mail.isp.se. rd.klotmasonit.se. IN MX 10 mail.klotmasonit.se. factory.klotmasonit.se. IN NS ns.factory.klotmasonit.se. factory.klotmasonit.se. IN NS ns.isp.cn. ns.factory.klotmasonit.se. IN A 145.33.11.74 @ IN SOA ns.klotmasonit.se. hostmaster.klotmasonit.se. ( 1 ;serial 7200 ;refresh 3600 ;retry 604800 ;expire 86400) ;min TTL localhost. IN NS ns.klotmasonit.se. localhost. IN A 127.0.0.1. 0-10-04 Michael Westlund <westlund@sunet.se> 37 0-10-04 Michael Westlund <westlund@sunet.se> 38 /usr/local/named/master/dv.192.168.42 /usr/local/named/master/db.127.0.0 @ IN SOA ns.klotmasonit.se. hostmaster.klotmasonit.se. ( 2000100400 ;serial 7200 ;refresh 3600 ;retry 604800 ;expire 86400) ;min TTL 42.168.192.in-addr.arpa. IN NS ns.klotmasonit.se. 42.168.192.in-addr.arpa. IN NS ns.isp.se. 42.42.168.192.in-addr.arpa. IN PTR server.klotmasonit.se. 10.42.168.192.in-addr.arpa. IN PTR pc1.hq.klotmasonit.se. 11.42.168.192.in-addr.arpa. IN PTR pc2.hq.klotmasonit.se. 12.42.168.192.in-addr.arpa. IN PTR pc3.hq.klotmasonit.se. 129.42.168.192.in-addr.arpa. IN PTR sun1.rd.klotmasonit.se. 130.42.168.192.in-addr.arpa. IN PTR sun2.rd.klotmasonit.se. 131.42.168.192.in-addr.arpa. IN PTR coke-machine.rd.klotmasonit.se. @ IN SOA ns.klotmasonit.se. hostmaster.klotmasonit.se. ( 1 ;serial 7200 ;refresh 3600 ;retry 604800 ;expire 86400) ;min TTL 0.0.127.in-addr.arpa. IN NS ns.klotmasonit.se. 1.0.0.127.in-addr.arpa. IN PTR localhost. 0-10-04 Michael Westlund <westlund@sunet.se> 39 0-10-04 Michael Westlund <westlund@sunet.se> 40 /usr/local/db.cache /usr/local/named/db.cache (forts.) Innehåller hårdkodade pekare på rotnamnservrarna. Dessa är idag 13 till antalet, utspridda över olika länder och världsdelar. Det är upp till respektive administratör av DNS att se till att en aktuell fil finns i systemet. db.cache finns att hämta med URL ftp://ftp.rs.internic.net/domain/named.root 0-10-04 Michael Westlund <westlund@sunet.se> 41 0-10-04 Michael Westlund <westlund@sunet.se> 42
Parametrar i db-filerna Bra tumregler när man skriver db-filer $TTL Anger default TTL-värde för efterkommande poster Praktiskt exempelvis vid negativ cachning $ORIGIN Sätter defaultdomän som läggs till efter poster som inte slutar med. (punkt) $INCLUDE Allt i en zonfil skall sluta med samma sak. Exempel: I zonfilen för kth.se slutar alla poster med kth.se. (OBS punkten!) Allt som delegeras nedåt i samma domän kräver en sk. klisterpost (glue record). Exempel: Se delegeringen av factory.klotmasonit.se. Glöm inte att uppdatera serienummret i SOA-posten. 0-10-04 Michael Westlund <westlund@sunet.se> 43 0-10-04 Michael Westlund <westlund@sunet.se> 44 Delegering av underdomän Delegering av baklängesuppslagning Stryk alla eventuella poster för domänen från din egen zon-fil. (Undantag: glue record) Lägg till minst två NS-poster Om någon av NS-posterna refererar till en DNS i den delegerade domänen, måste en sk. klisterpost (glue record) anges. Vid delegering av hela nät (jämna oktetter) används samma mekanism som för delegering av underdomäner. Hur delegerar man delar av ett C-nät? 0-10-04 Michael Westlund <westlund@sunet.se> 45 0-10-04 Michael Westlund <westlund@sunet.se> 46 Delegering av baklängesuppslagning (forts.) Delegering av baklängesuppslagning (forts.) Godtyckliga delar av baklängesuppslagningen kan delegeras. Man kan luras mha CNAME RFC 2317 visar hur Jobbigt om det är många nummer som skall delegeras. 12 CNAME arpa in-addr 130 237 228 0/28 12 0-10-04 Michael Westlund <westlund@sunet.se> 47 0-10-04 Michael Westlund <westlund@sunet.se> 48
Delegering av baklängesuppslagning (forts.) I filen db.130.237.228 lägger man till: 0-28.228.237.130.in-addr.arpa. IN NS ns1.den.du.delegerar.till 0-28.228.237.130.in-addr.arpa. IN NS ns2.den.du.delegerar.till 1.228.237.130.in-addr.arpa. IN CNAME 1.0-28.228.237.130.in-addr.arpa. 2.228.237.130.in-addr.arpa. IN CNAME 2.0-28.228.237.130.in-addr.arpa.... 12.228.237.130.in-addr.arpa. IN CNAME 12.0-28.228.237.130.in-addr.arpa. 13.228.237.130.in-addr.arpa. IN CNAME 12.0-28.228.237.130.in-addr.arpa. 14.228.237.130.in-addr.arpa. IN CNAME 12.0-28.228.237.130.in-addr.arpa. 15.228.237.130.in-addr.arpa. IN CNAME 12.0-28.228.237.130.in-addr.arpa. Krävs glue-records för NS-posterna? En DNS-fråga innehåller fem olika delar: Header Question Answer Authority Additional 0-10-04 Michael Westlund <westlund@sunet.se> 49 0-10-04 Michael Westlund <westlund@sunet.se> 50 Header Header (forts.) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 QR Opcode ID AA TC RD RA Z RCODE QDCOUNT ANCOUNT NSCOUNT ARCOUNT ID QR OPCODE AA TC Query ID, unikt ID för meddelandet Query/Reply (0=fråga, 1=svar) Typ av fråga (0=QUERY, 1=IQUERY 2=STATUS, 3-15 reserverade) Authoritative Answer, auktoritativt svar TrunCation, trunkerat svar 0-10-04 Michael Westlund <westlund@sunet.se> 51 0-10-04 Michael Westlund <westlund@sunet.se> 52 Header (forts.) Header (forts.) RD RA Z RCODE Recursion Desired Recursion Available Reserved Response Code 0 = No error 1 = Format error 3 = Server failure 4 = Not implemented 5 = Refused QCOUNT Query Count, antal frågor ANCOUNT Answer Count, antal svar NSCOUNT Name Server Count, antal NS-poster ARCOUNT Additional Records, antal övriga poster 0-10-04 Michael Westlund <westlund@sunet.se> 53 0-10-04 Michael Westlund <westlund@sunet.se> 54
Övriga fält Question Innehåller QDCOUNT antal frågor (oftast 1) En fråga består av namn, typ och klass. Answer Innehåller ett eller flera svar på frågan. Består av namn, typ, klass och data (svaret) Övriga fält (forts.) Authority Innehåller information om ansvarsförhållanden mellan olika delar av databasen. Om svaret är en hänvisning finns information om denna här. Additional Kan innehålla övrig nödvändig information, som svar på en självklar följdfråga. 0-10-04 Michael Westlund <westlund@sunet.se> 55 0-10-04 Michael Westlund <westlund@sunet.se> 56 Frågor? Michael Westlund westlund@sunet.se