Modulul 1 · 1.4
Călătoria unei interogări DNS
Modulul 1: Ce este DNS? · Timp de citire: 8 minute
Obiectiv de învățare: După această lecție veți putea explica pas cu pas cum găsește un resolver un răspuns și unde pe parcurs sunt reținute răspunsurile.
Concepte-cheie: resolver (recursiv), server rădăcină (root server), server TLD, server de nume autoritar (authoritative), referință (delegare), cache
Două tipuri de servere DNS
În lecția 1.1 ați văzut că DNS este distribuit: nimeni nu știe totul. Cum reușește atunci browserul dumneavoastră să obțină adresa pentru www.example.com? Pentru aceasta colaborează două tipuri de servere:
- Serverele de nume autoritare (în engleză authoritative) știu răspunsul pentru propria lor porțiune. Serverele de nume ale
example.comcunosc înregistrările pentruexample.com. Ele nu caută nimic pentru alții. - Resolverele (numite și resolvere recursive) caută răspunsul pentru dumneavoastră. Ele întreabă mai departe până îl obțin. Furnizorul dumneavoastră de internet are un resolver, iar există și resolvere publice, precum cele de la Quad9, Cloudflare sau Google.
Computerul dumneavoastră nu caută aproape nimic singur. Acesta are un mic stub resolver care transmite întrebarea către resolverul rețelei dumneavoastră și primește înapoi răspunsul.
Călătoria, pas cu pas
Să presupunem că resolverul nu a reținut încă nimic și dumneavoastră cereți înregistrarea A pentru www.example.com.
- Computerul dumneavoastră întreabă resolverul: „Care este înregistrarea A pentru www.example.com?”
- Resolverul întreabă un server rădăcină. Fiecare resolver are integrată o listă cu adresele serverelor rădăcină. Serverul rădăcină nu știe nimic despre
example.com, dar știe cine administrează.com. El răspunde cu o referință: „Pentru asta trebuie să mergeți la serverele de nume ale com: a.gtld-servers.net, b.gtld-servers.net, și așa mai departe.” - Resolverul întreabă un server de nume al .com. Acesta nici el nu știe adresa IP a
www.example.com, dar știe ce servere de nume areexample.com. Din nou o referință: „Întrebați la ns1.hosting.example sau ns2.hosting.example.” - Resolverul întreabă un server de nume al example.com. Acesta este autoritar pentru acest domeniu și dă răspunsul: „www.example.com are înregistrarea A 192.0.2.10.”
- Resolverul transmite răspunsul computerului dumneavoastră. Browserul dumneavoastră se conectează la 192.0.2.10.
O referință de la un nivel superior către serverele de nume ale unui nivel inferior se numește delegare. Root-ul deleagă .com către Verisign, iar .com deleagă example.com către serverele de nume indicate de deținătorul domeniului. Pentru un domeniu .nl funcționează exact la fel, doar că root-ul face atunci referire la serverele de nume ale .nl (SIDN, registrul domeniului .nl din Țările de Jos, de exemplu ns1.dns.nl). Veți vedea asta chiar dumneavoastră în exercițiul de la finalul acestei lecții. De aceea este atât de important ca serverele de nume de la registru să fie corecte (lecția 2.1).
Cache-ul: nu de fiecare dată întreaga călătorie
Dacă fiecare resolver ar începe din nou de la root la fiecare întrebare, root-ul ar primi un volum inimaginabil de întrebări. Acest lucru nu se întâmplă, deoarece resolverul reține răspunsurile o vreme. Această memorie se numește cache.
Cât timp poate fi reținut un răspuns este indicat în răspunsul însuși: TTL-ul (time to live), exprimat în secunde. Un TTL de 3600 înseamnă: acest răspuns poate fi reținut timp de o oră. Și referințele sunt reținute. Un resolver care tocmai a aflat ce servere de nume are .com nu trebuie să întrebe din nou root-ul data viitoare.
Dacă altcineva, la același furnizor, întreabă un minut mai târziu despre www.example.com, resolverul răspunde imediat din cache-ul său. Nicio călătorie, niciun timp de așteptare.
Cache-urile se găsesc în mai multe locuri:
- în resolverul furnizorului dumneavoastră sau al resolverului public pe care îl folosiți;
- în sistemul dumneavoastră de operare (Windows, macOS, telefonul dumneavoastră);
- în browserul dumneavoastră;
- uneori în routerul dumneavoastră.
Acest lucru este rapid și eficient, dar are o consecință pe care o veți întâlni des mai târziu: dacă modificați o înregistrare, cache-urile continuă să dea vechiul răspuns până expiră TTL-ul lor. De aceea, o persoană vede deja o modificare, iar alta încă nu. Modulul 6 tratează acest subiect pe larg.
Serverele rădăcină
Există 13 nume pentru serverele rădăcină: de la a.root-servers.net până la m.root-servers.net. Ele sunt administrate de douăsprezece organizații diferite. În spatele fiecărui nume se află, la nivel mondial, multe servere, în sute de locuri, care partajează aceeași adresă (acest lucru se numește anycast). Resolverul dumneavoastră ajunge automat la unul apropiat. La fel funcționează și serverele de nume TLD, precum cele ale .com și .nl. Astfel, DNS este rapid și continuă să funcționeze chiar dacă undeva un server cade.
Unde poate interveni o problemă
Dacă cunoașteți călătoria, puteți identifica mai ușor problemele:
- Delegarea nu este corectă. La registru sunt înregistrate servere de nume care nu (mai) cunosc domeniul. Resolverul nu poate avansa la pasul 4. Răspunsul este o eroare sau nu vine niciun răspuns.
- Serverul autoritar dă un alt răspuns decât vă așteptați. Ați modificat atunci înregistrarea într-un alt loc decât cel în care se află serverele de nume (lecția 2.1).
- Cache-ul mai are încă vechiul răspuns. În acest caz nimic nu este defect. Trebuie să așteptați până expiră TTL-ul sau să goliți propriul cache.
- DNSSEC nu este corect. Un resolver care validează verifică semnăturile pe parcurs. Dacă lanțul nu este corect, el refuză răspunsul (lecția 8.1).
Cu ajutorul instrumentului dig +trace puteți reface singur călătoria, de la root până la serverul autoritar. Veți învăța acest lucru în lecția 8.2. Și instrumentele online pot face acest lucru.
Rezumat
- Serverele de nume autoritare cunosc răspunsul pentru propriul domeniu; resolverele caută răspunsul pentru dumneavoastră.
- Un resolver începe de la root, primește o referință către TLD, apoi către serverele de nume ale domeniului, și acolo primește răspunsul.
- O astfel de referință se numește delegare.
- Răspunsurile sunt reținute în cache-uri, atât timp cât indică TTL-ul; de aceea modificările nu sunt vizibile peste tot imediat.
- Există 13 nume de servere rădăcină, dar datorită anycast, în spatele lor se află, la nivel mondial, multe servere.
Quiz
Exercițiu
Exercițiul Z1.4: Urmărirea călătoriei. Urmăriți călătoria pentru www.sidn.nl, cu dig +trace www.sidn.nl sau un instrument online care arată o traseu (trace). Completați: (1) un server de nume al nl. pe care îl întâlniți pe parcurs, (2) un server de nume autoritar al sidn.nl.
Lecturi suplimentare
Aceste articole descriu situația de la WebOké. La alți furnizori funcționează similar.
