Istoria DNS
În anii 70, oamenii s-au săturat să-și amintească adresele IP ale serverelor pe care doreau să le acceseze. În același timp, a venit ideea de a folosi un nume mai simplu și mai memorabil în locul unei adrese numerice de gazdă.
Lucrătorii de la Institutul de Cercetare Stanford au venit cu un fișier text HOSTS.TXT , care conținea o listă de nume de șiruri și adresele numerice corespunzătoare ale computerelor de pe ARPANET.
Adresele au fost atribuite manual. Pentru a solicita un nume de gazdă și o adresă sau pentru a adăuga un computer la fișierul principal, utilizatorii au contactat prin telefon centrul de informații de rețea din Stanford î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.
În 1984, patru studenți UC Berkeley au scris prima versiune a sistemului ierarhic de nume de domenii. Acum este utilizat pe scară largă, în special pe sistemele Unix, și este încă cel mai utilizat software DNS de pe Internet.
Introducere în DNS
Sistemul de nume de domeniu (DNS) este un sistem de distribuție pentru stocarea și preluarea informațiilor despre domenii. Este cel mai frecvent utilizat 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-mailului și/sau pentru a servi gazde pentru protocoale dintr-un domeniu.
Sistemul este organizat sub forma unei anumite ierarhii de servere DNS care interacționează după un anumit protocol. Baza înțelegerii DNS este înțelegerea structurii ierarhice a numelui și a zonelor.
Fiecare server responsabil pentru o zonă de domeniu poate transfera responsabilitatea pentru o altă parte a domeniului către un alt server, ceea ce face posibilă atribuirea responsabilității pentru relevanța informațiilor către serverele diferitelor organizații care sunt responsabile doar pentru partea „lor” din domeniu. numele domeniului.
![](https://cdn.codegym.cc/images/article/d8d8c8aa-923f-477d-a57f-4e8c7753f63d/512.jpeg)
Sistemul DNS conține o ierarhie de servere DNS corespunzătoare ierarhiei zonei. Fiecare zonă este acceptată de cel puțin un server DNS autorizat care găzduiește informații despre domeniu.
Important! Numele și adresa IP nu au neapărat legătură între ele ca unul la unul. O adresă IP poate avea mai multe nume de domenii, ceea ce vă permite să acceptați mai multe site-uri web pe un singur computer (aceasta se numește găzduire partajată ).
Poate fi și invers - multe adrese IP pot fi asociate cu un nume de domeniu: acest lucru vă permite să creați echilibrarea încărcăturii și este utilizat în mod activ în rețelele CDN .
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ă.
Interesant! 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.
înregistrări DNS
Serverul DNS stochează un set de parametri pentru fiecare nume de domeniu. Acestea sunt înregistrări despre numele domeniului, adresa IP a acestuia, precum și diverse informații despre servicii.
Există câteva zeci de astfel de intrări în total, așa că vom lua în considerare doar cele mai populare dintre ele:
A | Abordare | adresa IP |
aaaa | Adresa IPv6 | Adresă în format IPv6 |
CNAME | Nume canonic | Nume canonic pentru alias |
MX | schimbător de corespondență | Adresă gateway de e-mail pentru domeniu |
NS | server de nume | Adresa nodului responsabil pentru zona de domeniu |
SOA | Începutul autorităţii | Indicarea autorității de informare |
SRV | selectarea serverului | Specificarea locațiilor serverului pentru servicii |
PTR | indicator | Address name match - Potrivire inversă pentru A și AAAA |
TXT | șir de text | Scrieți date binare arbitrare, până la 255 de octeți |
Cele mai interesante aici sunt:
- Înregistrarea A vă permite să specificați o adresă IP care corespunde unui domeniu.
- CNAME vă permite să setați un sinonim pentru nume, de exemplu, www.codegym.cc == codegym.cc.
- Înregistrarea MX conține informații despre serverul de e-mail: ce trebuie să faceți dacă o scrisoare ajunge la xxx@codegym.cc.
- NS - indică adresa serverului DNS, care conține informații despre acest domeniu. Util atunci când înregistrările sunt stocate în cache și stocate pe noduri non-native.
Căutare adrese IP
Să vedem cum funcționează sistemul DNS.
Să presupunem că ați introdus api.codegym.cc în browser. Browserul va contacta serviciul DNS local și vă va cere să îi oferiți o adresă IP pentru domeniul api.codegym.cc. Iată ce se va întâmpla în continuare...
În primul rând, serviciul DNS caută să vadă dacă acest domeniu se află în fișierul gazdelor locale de pe computer. Dacă există, ia adresa IP de la ea. Dacă nu, trimite o solicitare către serverul DNS cunoscut de acesta: „Care este adresa IP a api.codegym.cc?”.
Cu toate acestea, serverul DNS poate să nu știe nimic nu numai despre numele solicitat, ci chiar și despre întregul domeniu codegym.cc. Î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 zona ru.”
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 zona codegym.cc.”. În cele din urmă, aceeași cerere este trimisă către un al treilea server DNS și primește un răspuns - o adresă IP, care este transmisă clientului, adică browserului.
În acest caz, în procesul de căutare a unui IP după nume, au funcționat următoarele reguli:
- Browserul a trimis o solicitare recursivă unui server DNS cunoscut (ca răspuns la acest tip de solicitare, serverul trebuie să returneze o adresă IP sau un răspuns gol și un cod de eroare NXDOMAIN).
- Serverul DNS care a primit cererea de la browser a trimis cereri nerecursive în succesiune, la care a primit răspunsuri de la alte servere DNS, până când a primit un răspuns de la serverul responsabil pentru zona solicitată.
- Restul serverelor DNS menționate procesau cererile în mod nerecursiv (și cel mai probabil nu ar fi procesat cereri recursiv, chiar dacă o astfel de cerință era în cerere).
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.
Important! 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 domenii, de obicei, nu depășește memoria cache a serverului, iar apelurile către alte servere nu apar deloc.
Timpul de cache permis pentru răspunsuri vine odată cu răspunsurile (câmpul TTL al înregistrării resursei).
fișierul hosts
Am observat că prima căutare este în fișierul local hosts. Acesta este moștenitorul fișierului HOSTS.TXT, care a fost inventat pe vremea ARPANET. Da, încă există și este încă în uz.
Este situat de-a lungul traseului:
- /etc/hosts pe Linux.
- %SystemRoot%\system32\drivers\etc\hosts pe Windows.
- /system/etc/hosts în Android.
De obicei, fișierul include o definiție a locației pentru nodul localhost:
127.0.0.1 localhost
Structura sa este foarte simplă: mai întâi vine adresa IP, apoi numele domeniului.
Util
Folosind fișierul hosts, este posibilă filtrarea anunțurilor prin redirecționarea adreselor de domeniu ale bannerelor către adresa 127.0.0.0, 127.0.0.1 sau 0.0.0.0.
Utilizarea 127.0.0.1 nu este, în general, recomandată, deoarece are ca rezultat un timeout de răspuns și întârzieri asociate dacă serverul nu există sau este configurat greșit. Și dacă mapați orice domeniu de publicitate la adresa IP 0.0.0.0, atunci toate solicitările către acesta vor cădea imediat).
Servere DNS publice
De obicei, primiți un server DNS împreună cu serviciul dvs. de internet atunci când îl conectați. Dar un astfel de server DNS gratuit nu este întotdeauna cea mai bună opțiune. Mai mult, este posibil să nu doriți să trimiteți o interogare cu numele domeniului de fiecare dată când vizitați un site către serverul DNS al ISP-ului dumneavoastră.
Prin urmare, mulți oameni preferă să treacă la servere DNS publice gratuite. În primul rând, sunt foarte rapidi și au un cache mare de nume de domenii. Veți obține o încărcare mai rapidă a site-ului și un timp de funcționare mai rapid, cu șanse minime de probleme tehnice.
În al doilea rând, siguranța. Unele servicii DNS pot bloca accesul la site-uri de phishing și rău intenționate și oferă filtrare de conținut pentru a proteja copiii de conținutul neadecvat online.
Astfel de servere DNS pot lupta chiar și cu escrocii. De exemplu, accesați un site web fals al unei bănci, iar serverul DNS vă va oferi nu adresa IP a escrocilor, ci serviciul de securitate al acestuia.
Lista cu astfel de servere
flare de nori | 1.1.1.1 1.0.0.1 |
Cloudflare promite că nu va folosi datele vizitatorilor pentru a difuza reclame și nu va arde niciodată adresele IP sursei de solicitare pe disc. |
DNS public Google | 8.8.8.8 8.8.4.4 |
Stochează informații complete despre adresa IP a dispozitivului solicitant timp de aproximativ 24-48 de ore pentru depanare și diagnosticare |
Comodo Secure DNS | 8.26.56.26 8.20.247.20 |
Blochează site-urile de phishing, dar și avertizează dacă încercați să vizitați site-uri cu programe malware, spyware |
Yandex.DNS | 77.88.8.8 77.88.8.1 |
Serviciu DNS gratuit de la un popular motor de căutare rusesc |