DNS

DNS
Nume numele domeniului
Nivel (conform modelului OSI ) Aplicat
Familie TCP/IP
Port/ID 53/ TCP , 53/ UDP
Scopul protocolului Rezolvarea numelui de domeniu
Specificație RFC 1034 , RFC 1035 /STD 13
Principalele implementări (clienți) Încorporat în toate sistemele de operare de rețea
Implementări de bază ( servere ) BIND , NSD , PowerDNS sau Microsoft DNS Server
 Fișiere media la Wikimedia Commons

DNS ( în engleză  Domain Name System  „domain name system”) este un sistem distribuit de computer pentru obținerea de informații despre domenii . Cel mai frecvent folosit pentru a obține o adresă IP de la un nume de gazdă (calculator sau dispozitiv), pentru a obține informații de rutare a e-mailurilor și/sau gazde de server pentru protocoalele dintr-un domeniu ( înregistrare SRV ).

O bază de date DNS distribuită este susținută de o ierarhie de servere DNS care interacționează printr-un anumit protocol .

Baza DNS este ideea unei structuri de nume ierarhice și a unor zone . Fiecare server responsabil pentru nume poate transfera responsabilitatea pentru o parte ulterioară a domeniului către un alt server (din punct de vedere administrativ - unei alte organizații sau persoane), ceea ce vă permite să atribuiți responsabilitatea pentru relevanța informațiilor serverelor diferitelor organizații (persoane) responsabile numai pentru numele lor de domeniu parțial.

Începând cu 2010, sistemul DNS a implementat verificări ale integrității datelor numite DNS Security Extensions ( DNSSEC ). Datele transmise nu sunt criptate, dar autenticitatea lor este verificată prin metode criptografice. Standardul DANE implementat asigură transferul de informații criptografice fiabile ( certificate ) prin intermediul DNS-ului utilizat pentru a stabili conexiuni sigure și securizate între straturile de transport și aplicație .

Caracteristicile cheie ale DNS

DNS are următoarele caracteristici:

DNS este important pentru funcționarea Internetului , deoarece informațiile despre adresa IP a unei gazde sunt necesare pentru a se conecta la o gazdă și este mai ușor pentru oameni să-și amintească adresele alfabetice (de obicei semnificative) decât o secvență de numere. În unele cazuri, acest lucru permite utilizarea serverelor virtuale, cum ar fi serverele HTTP, distingându-le prin numele cererii. Inițial, conversia între domenii și adrese IP s-a făcut folosind un fișier text special hosts , care a fost compilat central și trimis automat la fiecare dintre mașinile din rețeaua locală. Odată cu creșterea Web-ului, a fost nevoie de un mecanism eficient, automatizat, care a devenit DNS.

DNS a fost dezvoltat de Paul Mokapetris în 1983 ; descrierea originală a mecanismelor de lucru este cuprinsă în RFC 882 și RFC 883 . În 1987 , publicarea RFC 1034 și RFC 1035 a schimbat specificația DNS și a depreciat RFC 882 , RFC 883 și RFC 973 .

Caracteristici suplimentare

Istorie

Utilizarea unui nume mai simplu și mai memorabil în locul unei adrese numerice de gazdă este din era ARPANET . Institutul de Cercetare Stanford (acum SRI International ) a menținut un fișier text HOSTS.TXT care a mapat numele de gazdă la adrese numerice ale computerelor pe ARPANET . De întreținerea adreselor numerice, numite o listă de numere atribuite, s-a ocupat de Jon Postel la Institutul de Științe Informaționale (ISI) al Universității din California de Sud, a cărui echipă a lucrat îndeaproape cu NII [1] .

Adresele au fost atribuite manual. Pentru a solicita un nume de gazdă și o adresă și pentru a adăuga un computer la fișierul principal, utilizatorii au contactat telefonic Centrul de informare a rețelei (NIC) SRI, condus de Elisabeth Feinler , prin telefon în timpul programului de lucru.

La începutul anilor 1980, menținerea unui singur tabel gazdă centralizat devenise lentă și greoaie, iar rețeaua în creștere avea nevoie de un sistem automat de denumire pentru a rezolva problemele tehnice și de personal. Postel și-a pus sarcina de a găsi un compromis între cinci propuneri concurente pentru a rezolva problema pusă de Paul Mokapetris. Mokapetris a creat în schimb conceptul unui sistem ierarhic de nume de domeniu.

Grupul de lucru IETF a publicat specificațiile originale în RFC 882 și RFC 883 în noiembrie 1983.

În 1984, patru studenți UC Berkeley , Douglas Terry, Mark Painter, David Riggle și Songnian Zhou, au scris prima versiune a serverului de nume BIND (Berkeley Internet Name Daemon) . În 1985, Kevin Dunlap de la DEC a revizuit semnificativ implementarea DNS. Mike Karel, Phil Almquist și Paul Vixey au susținut BIND de atunci. La începutul anilor 1990, BIND a fost portat pe platforma Windows NT . Este larg răspândit, în special pe sistemele Unix, și este încă cel mai utilizat software DNS de pe Internet.

În noiembrie 1987, au fost adoptate specificațiile DNS - RFC 1034 și RFC 1035 . De atunci, sute de RFC -uri au fost adoptate modificând și completând DNS-ul.

Probleme de securitate

Inițial, preocupările de securitate nu au fost considerații majore în dezvoltarea software-ului DNS sau a oricărui software care să fie implementat pe Internetul timpuriu, deoarece rețeaua nu era deschisă publicului larg. Cu toate acestea, creșterea internetului în sectorul comercial în anii 1990 a schimbat cerințele pentru măsurile de securitate pentru a proteja integritatea datelor și autentificarea utilizatorilor.

Mai multe vulnerabilități au fost descoperite și exploatate de atacatori. O astfel de problemă este otrăvirea cache-ului DNS , în care datele sunt propagate către solutoarele de cache sub pretenția de a fi un server de origine autorizat, poluând astfel depozitul de date cu informații potențial false și cu date de expirare lungi (timp de viață). Ulterior, cererile de la aplicațiile legitime pot fi redirecționate către gazdele de rețea controlate de atacator.

Răspunsurile DNS nu au fost semnate criptografic anterior, permițând o varietate de opțiuni de atac. Extensiile moderne de securitate pentru nume de domeniu ( DNSSEC ) modifică DNS pentru a adăuga suport pentru răspunsurile semnate criptografic. Alte extensii, cum ar fi TSIG, adaugă suport pentru autentificarea criptografică între colegii de încredere și sunt utilizate în mod obișnuit pentru a autoriza transferurile de zonă sau operațiunile de actualizare dinamică.

Unele nume de domenii pot fi folosite pentru a obține efecte de falsificare. De exemplu, paypal.com și paypa1.com sunt nume diferite, dar este posibil ca utilizatorii să nu le poată distinge în GUI, în funcție de fontul ales de utilizator. În multe fonturi, litera l și cifra 1 arată foarte asemănătoare sau chiar identice. Această problemă este acută pe sistemele care acceptă nume de domenii internaționalizate, deoarece multe dintre codurile de caractere ISO 10646 pot fi afișate pe ecranele computerelor obișnuite. Această vulnerabilitate este uneori exploatată în phishing .

Tehnici precum DNS invers cu validare directă a înregistrărilor pot fi, de asemenea, utilizate pentru a valida rezultatele DNS, dar acestea nu sunt valide criptografic; aceasta nu ia în considerare opțiunea de înlocuire a informațiilor de rutare ( în engleză  BGP hijacking ).

Terminologie și principii de funcționare

Conceptele cheie ale DNS sunt:

Sistemul DNS conține o ierarhie de servere DNS , corespunzătoare unei ierarhii de zone . Fiecare zonă este susținută de cel puțin un server DNS autorizat (din engleză  autoritative  - autoritative), care conține informații despre domeniu.

Numele și adresa IP nu sunt identice  - o adresă IP poate avea mai multe nume, ceea ce vă permite să susțineți mai multe site-uri web pe un singur computer (aceasta se numește găzduire virtuală ). Reversul este, de asemenea, adevărat - multe adrese IP pot fi mapate cu același nume: acest lucru vă permite să creați echilibrarea sarcinii .

Pentru a crește stabilitatea sistemului, se folosesc multe servere care conțin informații identice, iar protocolul are mijloace pentru a menține sincronismul informațiilor aflate pe servere diferite. Există 13 servere rădăcină , adresele lor practic nu se schimbă. [2]

Protocolul DNS utilizează portul 53 TCP - sau UDP - pentru a răspunde la interogări. În mod tradițional, cererile și răspunsurile sunt trimise ca o singură datagramă UDP . TCP este utilizat atunci când dimensiunea datelor de răspuns depășește 512 octeți și pentru cererile AXFR .

Recursiune

Termenul de recursie în DNS se referă la algoritmul de comportament al serverului DNS : „efectuați în numele clientului o căutare completă a informațiilor necesare în întregul sistem DNS, dacă este necesar, referindu-se la alte servere DNS” .

O interogare DNS poate fi recursivă  - necesitând o căutare completă - și non-recursivă (sau iterativă ) - nu necesită o căutare completă.

În mod similar, un server DNS poate fi recursiv (capabil să efectueze căutări complete) și non-recursiv (nu este capabil să efectueze căutări complete). Unele software de server DNS, cum ar fi BIND , pot fi configurate pentru a interoga unii clienți în mod recursiv și pentru a interoga pe alții în mod nerecursiv .

Când răspunde la o interogare nerecursivă , precum și la incapacitatea sau interdicția de a efectua interogări recursive , serverul DNS fie returnează date despre zona pentru care este responsabil , fie returnează o eroare. Setările unui server nerecursiv, când răspunsul returnează adresele serverelor care au mai multe informații despre zona solicitată decât serverul care răspunde (cel mai adesea, adresele serverelor rădăcină), sunt incorecte, iar un astfel de server poate fi folosit pentru a organiza atacuri DoS .

În cazul unei interogări recursive , serverul DNS interogează serverele (în ordinea descrescătoare a nivelului zonei din nume) până când găsește un răspuns sau constată că domeniul nu există (în practică, căutarea începe de la cel mai apropiat DNS). servere la cel dorit, dacă informațiile despre acestea sunt disponibile în cache și actualizate, este posibil ca serverul să nu interogheze alte servere DNS).

Luați în considerare exemplul de funcționare a întregului sistem.

Să presupunem că am tastat în browser adresa ru.wikipedia.org. Browserul caută o potrivire între această adresă și adresa IP în fișierul hosts . Dacă fișierul nu conține o potrivire, atunci browserul întreabă serverul DNS: „care este adresa IP a ru.wikipedia.org”? Cu toate acestea, serverul DNS nu numai că nu știe nimic despre numele solicitat, ci chiar și despre întregul domeniu wikipedia.org. În acest caz, serverul contactează serverul rădăcină  - de exemplu, 198.41.0.4. Acest server spune - „Nu am informații despre această adresă, dar știu că 204.74.112.1 este responsabil pentru zonă org”. Apoi serverul DNS își trimite cererea la 204.74.112.1, dar acesta răspunde „Nu am informații despre acest server, dar știu că 207.142.131.234 este responsabil pentru zonă wikipedia.org”. În cele din urmă, aceeași cerere este trimisă celui de-al treilea server DNS și primește un răspuns - o adresă IP, care este transmisă clientului - browser.

În acest caz, la rezolvarea unui nume, adică în procesul de căutare a unui IP după nume:

Uneori este posibil ca serverul solicitat să trimită o interogare recursivă către un server DNS „în amonte” și să aștepte un răspuns gata.

Cu procesarea recursivă a interogărilor, toate răspunsurile trec prin serverul DNS și are ocazia să le memoreze în cache . O solicitare repetată pentru aceleași nume de obicei nu depășește memoria cache a serverului , nu există deloc apeluri către alte servere. Timpul de cache permis pentru răspunsuri vine odată cu răspunsurile ( câmpul TTL al înregistrării resursei ).

Solicitările recursive necesită mai multe resurse de la server (și creează mai mult trafic), așa că de obicei sunt acceptate de la nodurile „cunoscute” proprietarului serverului (de exemplu, furnizorul oferă posibilitatea de a face cereri recursive doar clienților săi, într-o companie corporativă). rețea, cererile recursive sunt acceptate numai din segmentul local). Interogările non-recursive sunt primite de obicei de la toate gazdele din rețea (și numai interogările despre zona găzduită de gazdă primesc un răspuns semnificativ, interogările DNS pentru alte zone returnează de obicei adresele altor servere).

Interogare DNS inversă

DNS este folosit în primul rând pentru a rezolva numele simbolice în adrese IP, dar poate efectua și procesul invers. Pentru aceasta, sunt folosite instrumentele DNS existente. Faptul este că diferite date pot fi comparate cu o înregistrare DNS, inclusiv un nume simbolic. Există un domeniu special in-addr.arpaale cărui intrări sunt folosite pentru a converti adrese IP în nume simbolice. De exemplu, pentru a obține un nume DNS pentru o adresă 11.22.33.44, puteți interoga serverul DNS pentru o intrare 44.33.22.11.in-addr.arpași acesta va returna numele simbolic corespunzător. Ordinea inversă a scrierii părților din adresa IP se datorează faptului că în adresele IP biții înalți sunt localizați la început, iar în numele DNS simbolice biții înalți (situați mai aproape de rădăcină) sunt localizați la sfârșit.

Înregistrări DNS

Înregistrările DNS , sau înregistrările de resurse ( înregistrările de resurse în engleză  , RR ), sunt unități de stocare și transmitere a informațiilor în DNS. Fiecare înregistrare de resursă constă din următoarele câmpuri [3] :

Cele mai importante tipuri de înregistrări DNS sunt:

Nume de domenii rezervate

RFC 2606 ( Nume DNS de nivel superior rezervat) definește nume de domenii care ar trebui folosite ca exemple (de exemplu, în documentație) și, de asemenea, în scopuri de testare. Pe lângă example.com, example.orgșiexample.net , acest grup include și test, invalidetc.

Nume de domenii internaționalizate

Un nume de domeniu poate consta doar dintr-un set limitat de caractere ASCII , permițând introducerea adresei de domeniu indiferent de limba utilizatorului. ICANN a aprobat un sistem IDNA bazat pe Punycode care convertește orice șir Unicode într- un set de caractere DNS valid.

Software DNS

Servere de nume:

Vezi și

Note

  1. Analele IEEE [3B2-9] man2011030074.3d 11:54. . - 29/7/011. — Pagina 74 p.
  2. Versiunea actuală a zonei rădăcină se află întotdeauna la: ftp://ftp.internic.net/domain/named.root
  3. 1 2 Sistemul de nume de domeniu (DNS)  Considerații IANA . tools.ietf.org. Preluat la 7 februarie 2019. Arhivat din original la 2 august 2020.
  4. P.V. Mockapetris. Nume de domenii - concepte și facilități  . tools.ietf.org. Preluat la 7 februarie 2019. Arhivat din original la 23 iunie 2018.
  5. P.V. Mockapetris. Nume de domenii - implementare și specificare  (engleză) . tools.ietf.org. Preluat la 7 februarie 2019. Arhivat din original la 3 aprilie 2019.

Link -uri

Articole

RFC -uri