camscape - for excellent IT solutions itkb.ro - IT knowledge base

pentru tonti :: cum functioneaza dns

Cristian
Cristian M.
TitleCum functioneaza DNS
TagsDNS, functionare, explicatii
Desc.Cum functioneaza DNS
CodeKBCR0004 v1.0
Date15 mai 2013

Cum functioneaza DNS ?

 
DNS, adica Domain Name System, este un serviciu care sta la baza intregii comunicatii, atat in Internet cat si in reteaua locala. Este unul dintre cele mai importante servicii desi este aproape complet ignorat si luat ca atare.
 
Scopul principal al DNS-ului este sa raspunda la intrebarea "ce adresa IP are www.example.com?". Utilizatorii umani retin mai usor prin asocieri numele si mai greu cifrele. Cu alte cuvinte, veti tine minte pe dinafara www.camscape.ro dar va fi mai greu sa tineti minte 176.9.62.66. Si atunci cand ne veti accesa site-ul veti scrie la adresa www.camscape.ro. Dar, intrucat browser-ul nu stie ce sa faca cu aceasta informatie, se adreseaza unui server DNS (un nameserver) si acesta ii spune "aaaaa, du-te la 176.9.62.66, acolo e". Simplu.
 

Deci, cum functioneaza DNS ?

 
Sa luam ca exemplu www.camscape.ro . Observati niste puncte in adresa, acestea separa adresa in componente, si se va evalua de la dreapta la stanga.

 
Pasul 1: .ro
Cea mai din dreapta componenta se numeste TLD (Top Level Domain) cu variatia ccTLD (Country Code Top Level Domain).
 
Exemple de TLD:
.com
.info
.net
.eu
.biz
 
Exemple de ccTLD:
.ro (domeniu alocat Romaniei)
.ru (domeniu alocat Rusiei)
.de (domeniu alocat Germaniei)
 
Alocarea de TLD-uri si ccTLD-uri o face ICANN (www.icann.org). Lista completa de TLD-uri si ccTLD-uri o puteti gasi la http://www.iana.org/domains/root/db .
 
Aceste TLD-uri vor fi implementate in asa numitele DNS ROOT servers (vezi www.root-servers.org). Aceste servere sunt mentinute ca o lista de 13 servere (a.root-servers.net ... pana la m.root-servers.net). Nu sunt de fapt 13 ci cateva sute, dar aceasta lista de 13 servere este baza de plecare in orice cautare.
 
Deci, atunci cand veti scrie www.camscape.ro , primul lucru care se va intampla va fi o interogare catre unul dintre cele 13 ROOT server-e cu intrebarea "stie cineva ceva despre .ro ?". Adica se intampla cam asa:
 
root@robuhsrv001:~# nslookup -type=ns ro
Server:         127.0.0.1
Address:        127.0.0.1#53
 
Non-authoritative answer:
ro      nameserver = primary.rotld.ro.
ro      nameserver = dns-at.rotld.ro.
ro      nameserver = ns.uu.net.
ro      nameserver = secondary.rotld.ro.
ro      nameserver = dns-ro.denic.de.
ro      nameserver = ns-ext.isc.org.
 
Authoritative answers can be found from:
ns.uu.net       internet address = 137.39.1.3
dns-at.rotld.ro internet address = 193.171.255.54
dns-at.rotld.ro has AAAA address 2001:628:453:4001::53
dns-ro.denic.de internet address = 81.91.161.99
ns-ext.isc.org  internet address = 204.152.184.64
ns-ext.isc.org  has AAAA address 2001:4f8:0:2::13
primary.rotld.ro        internet address = 192.162.16.18
primary.rotld.ro        has AAAA address 2a03:5e80:0:4:192:162:16:18
secondary.rotld.ro      internet address = 193.230.31.225
secondary.rotld.ro      has AAAA address 2a03:5e80:0:5:193:230:31:225
 
Adica, informatii despre .ro se gasesc la server-ele primary.rotld.ro, dns-at.rotld.ro, ns.uu.net, secondary.rotld.ro, dns-ro.denic.de, ns-ext.isc.org. Mai jos se listeaza si IP-urile respectivelor servere.
 
Faptul ca interogarea de mai sus va da si numele nameserver-elor dar si IP-urile lor, inseamna, prin definitie, ca inregistrarea DNS are GLUE.

 
Pasul 2: camscape.ro
 
Urmatoarea componenta, impreuna cu TLD-ul sau ccTLD-ul din care face parte se numeste domeniu de Internet, domeniu web (o exprimare gresita, dar uzuala), sau pe scurt domeniu.
 
Stiind unde sa intrebati, acum veti ajunge la unul dintre serverele de mai sus, la intamplare intrucat ordinea nu conteaza, si il veti intreba: "salut, am auzit ca te pricepi la .ro . Stii cumva ceva despre camscape.ro ? ":
 
root@robuhsrv001:~# nslookup -type=ns camscape.ro ns.uu.net
Server:         ns.uu.net
Address:        137.39.1.3#53
 
Non-authoritative answer:
*** Can't find camscape.ro: No answer
 
Authoritative answers can be found from:
camscape.ro     nameserver = ns5.eurons.ro.
camscape.ro     nameserver = ns1.eurons.ro.
camscape.ro     nameserver = ns3.eurons.ro.
camscape.ro     nameserver = ns2.eurons.ro.
camscape.ro     nameserver = ns4.eurons.ro.
ns1.eurons.ro   internet address = 212.146.68.114
ns2.eurons.ro   internet address = 109.74.4.170
ns3.eurons.ro   internet address = 92.55.144.218
ns4.eurons.ro   internet address = 66.23.226.83
ns5.eurons.ro   internet address = 78.47.116.34
 
Raspunsul primit va spune ca zona de DNS camscape.ro este tinuta pe server-ele ns1.eurons.ro, ns2.eurons.ro, ns3.eurons.ro, ns4.eurons.ro, ns5.eurons.ro, si din nou se ofera si IP-urile. Din nou nu conteaza ordinea, dupa cum se vede.
 
Zona de DNS este, prin definitie, suma tuturor inregistrarilor DNS care se refera la un domeniu.
 
In aceasta interogare, precum si in urmatorii pasi, apare importanta GLUE-ului. Daca la pasul anterior nu ni se prezinta si IP-ul nameserver-ului, atunci, dupa alegerea nameserver-ului de interogat (sa zicem ns.uu.net) se va mai face o interogare pentru a determina IP-ul acestuia, dublandu-se timpul alocat operatiunii.
 
Iata un exemplu de zona DNS fara GLUE:
 
root@robuhsrv001:~# nslookup -type=ns camad.ro ns.uu.net
Server:         ns.uu.net
Address:        137.39.1.3#53
 
Non-authoritative answer:
*** Can't find camad.ro: No answer
 
Authoritative answers can be found from:
camad.ro        nameserver = ns1.ehost.us.
camad.ro        nameserver = ns2.ehost.us.
 
 
Pasul 3: www.camscape.ro
 
Aceasta componenta, impreuna cu domeniul si cu TLD-ul, se numeste host.
 
Se repeta acum pasul 2, doar ca mai rafinat. Se alege un server din lista si acesta va fi intrebat "Si zi asa, ce IP are www.camscape.ro ?":
 
root@robuhsrv001:~# nslookup -type=a www.camscape.ro ns1.eurons.net
Server:         ns1.eurons.net
Address:        212.146.68.114#53
 
Name:   www.camscape.ro
Address: 176.9.62.66
 
Gata. Am ajuns la destinatie. Browserul se va conecta acum la 176.9.62.66 si va incarca pagina.
 
Revenind cu exemplul fara GLUE, aici s-ar mai fi adaugat un pas, si anume gasirea IP-ului lui ns1.ehost.us.
 
 
Cateva mentiuni:
 
bla.bla.camscape.ro este tot un host ca si www.camscape.ro, desi are 4 componente. Functie de setarile lui bla.camscape.ro acesta poate (nu intotdeauna si nu obligatoriu) fi referit ca un subdomeniu.
 
www.camscape.com.ro este tot un host ca si www.camscape.ro, desi are 4 componente. Exista, la majoritatea ccTLD-urilor, subdomenii, in exemplul nostru com.ro . Asta inseamna ca camscape.com.ro este domeniul.
 
 

Tipuri de inregistrari DNS

 
Tot exemplul de mai sus reprezinta istoria interogarii unei inregistrari de tip A. DNS-ul insa inseamna mai mult de atat. Exista astfel mai multe tipuri de inregistrari ce pot fi prezente intr-o zona DNS, fiecare tip folosind la altceva.
 
 
Inregistrare de tip SOA
 
Este cea mai importanta inregistrare DNS, contine setarile generice ale zonei DNS. O inregistrare tipica arata asa
 
primary ro01.eurons.net
hostmaster hostmaster.domain.tld
serial 2013010204
refresh 10800 (3 hours)
retry 3600 (1 hour)
expire 604800 (1 week)
default_ttl 3600 (1 hour)
 
Explicatia inregistrarii, linie cu linie:
  • numele nameserver-ului primar
  • adresa e-mail al responsabilului, cu inlocuirea caracterului @ cu .
  • numarul serial. La fiecare modificare, acest numar este incrementat. Formatul este YYYYMMDDNN, in exemplu referindu-se la a 4-a schimbare din data de 02 ianuarie 2013
  • timpul in secunde dupa care zona va fi actualizata
  • timpul in secunde dupa care o incercare de reactualizare esuata va fi reincercata
  • timpul in secunde dupa care zona expira
  • timpul in secunde cat informatia este tinuta in cache-ul altor servere

 
Inregistrare de tip A
 
Aceasta este cea mai intalnita inregistrare. Raspunde la intrebarea "Ce IP are host.domeniu.tld?".
 
root@robuhsrv001:~# nslookup -type=a www.camscape.ro ns1.eurons.net
Server:         ns1.eurons.net
Address:        212.146.68.114#53
 
Name:   www.camscape.ro
Address: 176.9.62.66
 

Inregistrare de tip PTR
 
PTR de la pointer, sau reverse address este inversul unei inregistrari de tip A. Raspunde la intrebarea "Ce nume are IP-ul x.x.x.x?"
 
root@robuhsrv001:~# nslookup 176.9.62.66
Server:         127.0.0.1
Address:        127.0.0.1#53
 
Non-authoritative answer:
66.62.9.176.in-addr.arpa        name = denursrv001.camscape.net.
 
Inregistrarea PTR este extrem de importanta in momentul in care la acea adresa IP ruleaza un server e-mail.

 
Inregistrare de tip NS
 
A doua ca raspandire, raspunde la intrebarea "Care sunt nameserver-ele pentru domeniu.tld?"
 
root@robuhsrv001:~# nslookup -type=ns camscape.ro ns.uu.net
Server:         ns.uu.net
Address:        137.39.1.3#53
 
Non-authoritative answer:
*** Can't find camscape.ro: No answer
 
Authoritative answers can be found from:
camscape.ro     nameserver = ns5.eurons.ro.
camscape.ro     nameserver = ns1.eurons.ro.
camscape.ro     nameserver = ns3.eurons.ro.
camscape.ro     nameserver = ns2.eurons.ro.
camscape.ro     nameserver = ns4.eurons.ro.
ns1.eurons.ro   internet address = 212.146.68.114
ns2.eurons.ro   internet address = 109.74.4.170
ns3.eurons.ro   internet address = 92.55.144.218
ns4.eurons.ro   internet address = 66.23.226.83
ns5.eurons.ro   internet address = 78.47.116.34
 

Inregistrare de tip MX
 
MX inseamna Mail eXchanger, adica adresa IP sau adresele IP serverelor care primesc e-mailuri, pentru un anumit domeniu. Are dar poate sa nu aiba nici o legatura cu adresele IP de pe care se emit e-mailuri de catre un anumit domeniu.
 
root@robuhsrv001:~# nslookup -type=mx google.com
Server:         127.0.0.1
Address:        127.0.0.1#53
 
Non-authoritative answer:
google.com      mail exchanger = 10 aspmx.l.google.com.
google.com      mail exchanger = 30 alt2.aspmx.l.google.com.
google.com      mail exchanger = 20 alt1.aspmx.l.google.com.
google.com      mail exchanger = 50 alt4.aspmx.l.google.com.
google.com      mail exchanger = 40 alt3.aspmx.l.google.com.
 
Dupa cum vedeti, domeniul google.com are mai multe MX-uri. Acestea sunt folosite in functie de o setare specifica numita PRIO (numerele de la 10 la 40 de mai sus). Astfel, atunci cand veti trimite un mesaj mail catre ionel@google.com, serverul de mail va interoga inregistrarile MX ale domeniului google.com si il va alege pe cel cu PRIO cel mai mic. Se va conecta la el si va transmite mesajul. Daca nu poate sa se conecteze, la urmatoarea reincercare il va lua pe cel cu PRIO-ul urmator si tot asa.

 
Inregistrare CNAME sau alias
 
Pentru usurinta managementului unei zone DNS, se folosesc inregistrari CNAME. De exemplu, www.birounotarial.info este un site parcat, redirectat catre parked.eurons.net. Adresa IP a parked.eurons.net se poate schimba in viitor, moment in care, daca www.birounotarial ar fi fost declarat ca A catre aceeasi adresa IP a lui parked.eurons.net ar trebui sa operam 2 schimbari in cele doua zone DNS. Daca insa e declarat CNAME, orice schimbare o facem pe parked.eurons.net se va aplica transparent si pentru www.birounotarial.info .
 
root@robuhsrv001:~# nslookup -type=cname www.birounotarial.info
Server:         127.0.0.1
Address:        127.0.0.1#53
 
Non-authoritative answer:
www.birounotarial.info  canonical name = parked.eurons.net.
 
Atentie, inregistrarea A a domeniului nu poate fi declarata CNAME, precum si cea a mail exchanger-ului. Oricare dintre aceste setari va bloca functionarea serviciului e-mail.

 
Inregistrare TXT
 
Aceste inregistrari sunt folosite pentru foarte multe aplicatii, majoritatea la nivelul serviciului e-mail. Practic, reprezinta posibilitatea ca pentru un anumit host sau domeniu sa se adauge un comentariu de tip text. Acest comentariu poate fi folosit in diverse scopuri.
 
De exemplu, inregistrari SPF (www.openspf.org):
 
root@robuhsrv001:~# nslookup -type=txt camscape.ro
Server:         127.0.0.1
Address:        127.0.0.1#53
 
Non-authoritative answer:
camscape.ro     text = "v=spf1 mx a ip4:176.9.62.66 -all"
 
Inregistrarea de mai sus spune ca doar IP-ul 176.9.62.66, MX-ul si A-urile declarate pentru domeniul camscape.ro au voie sa trimita mesaje e-mail venind din partea unei adrese @camscape.ro . Unele servere de e-mail (nu toate) vor verifica aceasta informatie in momentul primirii unui mesaj care pare sa vina de la camscape.ro si vor actiona in functie de propriile lor setari pentru a modifica in plus sau in minus gradul de spam pe care il aloca.
 
Exista doua standarde in acest sens, ambele se refera la SPF, numai ca unul sustine crearea unei inregistrari in DNS de tip TXT, celalalt la tipul SPF. Este recomandat sa le folositi pe amandoua, dar cu continut identic.
 
root@robuhsrv001:~# nslookup -type=spf camscape.ro
Server:         127.0.0.1
Address:        127.0.0.1#53
 
Non-authoritative answer:
camscape.ro     rdata_99 = "v=spf1 mx a ip4:176.9.62.66 -all"
 
Atentie, nu puteti avea 2 sau mai multe inregistrari TXT pentru un host sau verificarea SPF nu va mai functiona.
 
O alta aplicatie a inregistrarilor TXT o reprezinta un alt tip de verificare a expeditorului unui mesaj e-mail si anume informatiile DomainKeys si DKIM. DKIM, versiunea mai noua a DomainKeys, este un sistem de verificare a expeditorului folosind chei criptate salvate in zona DNS. A fost dezvoltat de Yahoo, acum este domeniu public (www.dkim.org). O inregistrare DKIM arata asa:
 
root@robuhsrv001:~# nslookup -type=txt default._domainkey.camscape.ro
Server:         127.0.0.1
Address:        127.0.0.1#53
 
Non-authoritative answer:
default._domainkey.camscape.ro  text = "v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQ.........."
 
Mesajele emise de pe domeniul camscape.ro vor avea in header intrari de tipul:
 
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
    s=default; d=camscape.ro;
    b=Z6wrg................;
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed;
d=camscape.ro; s=default; x=1369214715; h=Message-ID:Date:From:
User-Agent:MIME-Version:To:Subject:Content-Type; bh=.......
 
Serverele destinatie, daca au implementat acest tip de protectie, vor interoga nameserver-ele camscape.ro pentru obtinerea inregistrarii de mai sus, si vor calcula daca mesajul primit are DKIM valid sau nu.

 
Alte inregistrari
 
Exista multe alte tipuri de inregistrari: AAAA, LOC, PTR, HINFO, etc
 
 

DNS Cache

 
Fiecare inregistrare are o setare specifica si anume TTL (Time To Live). Aceasta are o valoare exprimata in secunde si se refera la timpul cat respectiva inregistrare este tinuta ca atare in cache-ul altor servere. Valoarea recomandata este 86400, cu alte cuvinte, daca o statie de lucru interogheaza odata un nameserver si primeste o informatie cu TTL 86400, timp de 1 zi o va tine in cache-ul propriu si nu va reinteroga. Are un efect bun asupra traficului, dar reprezinta o problema atunci cand informatia din cache nu mai este de actualitate.
 
Astfel, in cazul in care planuiti o modificare in inregistrarile DNS, e bine sa planuiti totul cu 2 zile inainte (presupunand ca aveti TTL 86400). Prima operatiune va presupune setarea TTL-ului la o valoare mica, de exemplu 5 secunde.
 
Aceasta modificare in sine se va propaga in 86400 de secunde in Internet. Planul cu 2 zile inainte este pentru cazul in care exista un lant de 2 servere care fac cache unul de la celalalt, 2 zile fiind acoperitor.
 
Dupa ce au trecut cele doua zile, faceti schimbarea dorita. Ceea ce inainte dura 2 zile, acum va dura maxim 10 secunde la un TTL de 5 secunde. Daca totul e bine, modificati inapoi la o valoare rezonabila.
 
 

Tipuri de server in functie de utilizare

 
Servere authoritative (pentru un anumit domeniu)
 
Acestea sunt serverele care mentin zona respectiva. Toate celelalte servere din lume le vor intreba de fiecare data cand au nevoie de informatii care implica acea zona.

 
Servere cache
 
Acestea sunt servere care intreaba serverele authoritative referitor la o anumita zona, tin informatia in cache si o ofera oricarui utilizator. Se mai numesc si resolvere. Un exemplu clar in acest sens este serverul DNS al providerului de Internet.

 
Servere de zona locala
 
Toata discutia de mai sus cu aplicatie pe site-uri web si server-e e-mail se refera si la zona de DNS locala. Astfel, daca reteaua din care face parte un calculator cuprinde ceva mai multe statii de lucru, apare inerenta nevoie de colaborare, de sharing de exemplu. Veti dori ca de pe calculatorul 1 (COMP1) sa apelati calculatorul 2 (COMP2). Evident ca COMP1 si COMP2 au IP-uri, dar cine le stie?
 
Aici apare DNS-ul local. In retea va trebui instalat, pe una dintre masinile existent un serviciu DNS care va servi zona domeniulocal.local . Conform cu cele de mai sus, .local (cateodata .loc, dar practic puteti seta absolut orice) nu este un TLD mentinut de ICANN prin ale sale ROOT server-e. Propriul vostru serviciu de DNS local va juca rolul de ROOT server in acest caz.
 
Pe calculatoare va trebui setat ceva suplimentar, si anume "search domains" (suffix). In exemplul de mai sus, vom seta domeniulocal.local . In aceasta situatie, de cate ori vom da ping la COMP2 de pe COMP1, sistemul de operare de pe COMP1 va va ajuta si va modifica ping-ul in ping la COMP2.domeniulocal.local . Antiprost nu?
 
Un serviciu DNS local se integreaza deobicei cu un serviciu DHCP pentru alocarea dinamica de adrese IP. Majoritatea serviciilor DHCP vor modifica zona DNS aferenta prin adaugarea unei inregistrari A si a unei inregistrari PTR (reverse) odata ce au alocat un IP unei statii de lucru.