Cum se configurează memorarea în cache DNS folosind dnsmasq pe Ubuntu

DNSmasq poate fi implementat pentru a stoca temporar cererile DNS în distribuțiile Linux, deși configurarea sa poate prezenta anumite provocări.

Stocarea în cache a DNS accelerează procesul de căutare DNS, care transformă un nume de domeniu al unui site web în adresa IP corespunzătoare. Atunci când mai mulți utilizatori din rețea accesează aceeași adresă web, utilizarea unui server cache DNS local poate reduce timpul necesar pentru încărcarea paginilor web.

Mai întâi, haideți să înțelegem ce reprezintă stocarea în cache a DNS.

Ce este memoria cache DNS?

DNS este folosit de internet pentru a menține evidența tuturor site-urilor web accesibile public și a adreselor IP asociate acestora. Poate fi comparat cu o agendă telefonică. Folosirea DNS ne scutește de a memora adresele IP ale fiecărui site, care sunt esențiale pentru ca infrastructura de rețea să interacționeze cu resursele de pe internet.

De fiecare dată când solicitați motorului de căutare să afișeze o pagină web, aceasta este, de fapt, ceea ce se întâmplă în spatele scenei.

Deși sistemul dumneavoastră are acces la numeroase servere DNS externe, o replică centralizată a DNS-ului accelerează transferul și rezoluția. Aici intervine memorarea în cache a DNS.

Înainte de a trimite cererea pe internet, memoria cache DNS se ocupă de rezoluția identității pentru domeniile accesate recent și frecvent, accelerând astfel procesul.

Serverul DNS este accesat de fiecare dată când este necesar să se traducă o adresă IP într-un nume de domeniu. Acest lucru poate exercita o sarcină suplimentară pe serverul DNS, mai ales dacă site-ul web primește un volum mare de solicitări simultan.

Memoria cache DNS este utilizată pentru a reduce numărul de cereri DNS și timpii de răspuns. Adresele IP traduse, împreună cu detaliile gazdei, sunt salvate local. În loc să se inițieze o nouă interogare DNS, rezultatul este preluat din memoria cache DNS data viitoare când IP-ul sau numele de domeniu trebuie rezolvat.

Cum ajută stocarea în cache DNS la rezolvarea problemelor intermitente de rezoluție DNS pe instanțele Amazon EC2?

Majoritatea sistemelor Linux nu folosesc o memorie cache DNS locală. Acest lucru înseamnă că toate cererile DNS sunt trimise direct către serverul DNS autorizat furnizat de Amazon, care are o limită a numărului de solicitări pe care le poate procesa simultan. Problemele de rezoluție DNS apar atunci când există un număr mare de solicitări.

Implementarea unei memorii cache DNS locale în sistemul dvs. vă va ajuta să reduceți utilizarea CPU și a rețelei, prevenind în același timp erorile de rezoluție DNS. O memorie cache DNS locală răspunde la interogările adresate resurselor DNS externe, cum ar fi Amazon RDS și S3.

Protocolul DHCP este utilizat de instanțele Amazon EC2 conectate la Amazon VPC pentru a solicita o adresă de server DNS la lansare.

Atunci când utilizați Amazon VPC pentru a construi un cloud privat virtual, Route 53 DNS Resolver folosește un resolver în cadrul VPC-ului pentru a răspunde solicitărilor DNS pentru instanțele EC2 care rulează sub adrese web locale Amazon VPC și intrările din zonele administrate privat. Resolver efectuează căutări recurente pe serverele DNS publice pentru toate celelalte adrese web.

O memorie cache DNS servește ca o evidență temporară a interogărilor DNS anterioare, pe care sistemul nostru le poate verifica rapid atunci când încearcă să acceseze un site web. Aceasta menține un jurnal al fiecărei sesiuni existente și ulterioare. Această memorie cache DNS facilitează rezoluția domeniului și previne erorile pe instanțele Amazon EC2 Linux.

Mulți utilizatori utilizează de obicei serviciul Amazon Route 53 pentru DNS atunci când accesează AWS. Este foarte ușor de folosit și aproape gratuit. Dar există mai multe motive care ar putea influența decizia unui utilizator de a folosi un server DNS local.

Deși bind9 rămâne o opțiune bună pentru configurarea unui server cache DNS local, dnsmasq este mult mai simplu de instalat și configurat atât pe instanțele EC2, cât și pe o mașină locală.

Ce este dnsmasq?

DNSmasq este un instrument specific Linux care acceptă DNS, DHCP, TFTP și stocarea în cache a DNS-ului. Este proiectat să fie compact și ușor, făcându-l ideal pentru rețelele și firewall-urile cu restricții de resurse.

Este extrem de simplu de instalat și configurat. Dnsmasq este o soluție flexibilă și practică pentru configurarea DNS și DHCP pentru subrețele.

Este posibilă configurarea acestor identificatori alocați de DHCP și instrucțiunile asociate pentru fiecare server sau pentru un controler de bază. Dnsmasq acceptă atât opțiuni DHCP dinamice, cât și statice. Este portabil și are capacitatea de a gestiona DNS și DHCP pentru cel puțin 1.000 de clienți.

Atunci când primește o interogare DNS, dnsmasq fie răspunde dintr-o memorie cache locală, fie o transmite unui server DNS autorizat. În plus, pe lângă faptul că răspunde la solicitările DNS pentru adrese cu configurație DHCP, acesta verifică și conținutul fișierului /etc/hosts pentru a identifica numele de gazdă locale care nu sunt listate în DNS-ul public.

Utilizarea instrumentului dnsmasq în locul memoriei cache DNS încorporate în browser îmbunătățește în mod semnificativ performanța de navigare pe internet. Este ideal pentru un mediu încorporat cu resurse limitate, deoarece este foarte simplu de configurat și necesită puțin spațiu pe disc.

Caracteristicile dnsmasq

  • Este ușor să integrați serverele DNS interne folosind dnsmasq, configurându-l pentru a transmite anumite interogări de rezoluție a numelor de domeniu către servere autorizate specifice.
  • Sarcina de lucru a serverului este redusă, iar fiabilitatea este îmbunătățită prin folosirea unui server DNS local configurat.
  • Configurarea DNS pentru punctele finale cu firewall este destul de simplă și independentă de DNS-ul folosit de ISP.
  • Dacă portul conectat la internet este inaccesibil în timpul unei verificări DNS pe calculator, operațiunea de căutare va fi suspendată imediat.
  • Prin intermediul interogărilor PPP (protocol punct-la-punct) sau DHCP, dnsmasq poate fi configurat să colecteze periodic date direct de la serverul de rezoluție al domeniului de bază.

Instalare

Serviciul systemd-resolved trebuie dezactivat înainte de a instala și configura utilitarul dnsmasq.

systemctl stop systemd-resolved

De asemenea, îl puteți masca folosind atributul mască, astfel încât să nu pornească automat atunci când reporniți sistemul.

systemctl mask systemd-resolved

Instalarea dnsmasq este prima acțiune pe care trebuie să o efectuați după ce opriți programul systemd-resolved. Dnsmasq este preinstalat în majoritatea distribuțiilor Linux. Dacă nu, îl puteți instala manual. Lansați un terminal de comandă și tastați următoarea comandă pentru a face acest lucru.

sudo apt-get install dnsmasq

Utilizați următoarea comandă dacă sunteți utilizator yum:

sudo yum install -y dnsmasq

Această comandă instalează automat instrumentul și pornește dnsmasq în fundal.

După instalarea cu succes, puteți verifica starea dnsmasq utilizând comanda de mai jos.

systemctl status dnsmasq

Dacă starea apare ca „active (running)”, înseamnă că instalarea este finalizată și configurată pe portul 53. Dacă starea apare ca „inactive (dead)”, atunci trebuie să reporniți atât mașina Ubuntu, cât și dnsmasq din nou. Acest lucru va rezolva eroarea.

Configurare

Dnsmasq este acum gata pentru a fi configurat pe mașina dumneavoastră ca server DNS local de cache. Fișierul de configurare implicit se află la /etc/dnsmasq.conf. Acest fișier de configurare trebuie modificat pentru a configura utilitarul dnsmasq în sistem.

Utilizați această comandă pentru a deschide și a edita fișierul de configurare.

nano /etc/dnsmasq.conf

Fișierul de configurare trebuie editat doar cu privilegii de root. Ștergeți totul din fișier, inclusiv comentariile, și pur și simplu copiați-lipiți și salvați această setare de configurare.

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1
expand-hosts
domain=geek-demo.com
cache-size=1000

Permiteți-mi să descriu pe scurt ce reprezintă fiecare parametru.

  • Port – Pentru a specifica sau lega portul pe care dnsmasq îl va folosi pentru a primi cererile DNS.
  • domain-needed – Transmite numai numele de domenii către serverul DNS superior.
  • bogus-priv – Previne redirecționarea domeniului și a portului.
  • listen-address – Pentru a defini adresa serverului de nume. De obicei, localhost este folosit ca implicit, pentru a configura un server DNS local.
  • domain – Pentru a configura domeniile pe care dnsmasq le adaugă la identificatorii scurti.
  • cache-size – Dimensiunea maximă a memoriei cache DNS permisă în stocare.

După efectuarea tuturor modificărilor necesare, salvați și închideți fișierul de configurare. Următorul pas este să editați fișierul /etc/resolv.conf pentru a adăuga adresa locală de rezoluție a gazdei. Utilizați comanda de mai jos pentru a deschide fișierul cu editorul nano.

nano /etc/resolv.conf

Aici veți găsi toate serverele de nume pe care sistemul dumneavoastră le folosește pentru rezolvarea adreselor. În acea listă, adăugați și adresa de loopback. Adăugați „nameserver 127.0.0.1” și păstrați-o pe prima linie.

Salvați și ieșiți din fișierul de configurare. Pentru ca setările actualizate să aibă efect, reporniți utilitarul dnsmasq.

systemctl restart dnsmasq

Testarea serverului local de stocare în cache DNS

Testarea serverului DNS local este simplă. Deschideți o linie de comandă și folosiți comanda dig pentru a verifica stocarea în cache a DNS-ului. Atunci când executați comanda dig pentru prima dată, rezultatul ar trebui să fie standard.

┌──(root💀kali)-[/home/writer]
└─# dig tipstrick.ro.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> tipstrick.ro.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 623
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;tipstrick.ro.com.                 IN      A

;; ANSWER SECTION:
tipstrick.ro.com.          227     IN      A       172.66.43.163
tipstrick.ro.com.          227     IN      A       172.66.40.93

;; Query time: 31 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:52:49 EDT 2022
;; MSG SIZE  rcvd: 74

Aici, observați că timpul de interogare este de aproximativ 31 ms pentru a interoga detaliile de la serverul de nume superior. Executați exact aceeași comandă dig încă o dată și veți observa o reducere semnificativă a timpului de interogare.

┌──(root💀kali)-[/home/writer]
└─# dig tipstrick.ro.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> tipstrick.ro.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21942
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;tipstrick.ro.com.                 IN      A

;; ANSWER SECTION:
tipstrick.ro.com.          281     IN      A       172.66.40.93
tipstrick.ro.com.          281     IN      A       172.66.43.163

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:58:10 EDT 2022
;; MSG SIZE  rcvd: 74

Aici, timpul de interogare este de 0 ms. Acest lucru se datorează faptului că, după efectuarea căutării inițiale, dnsmasq a stocat datele, iar toate căutările ulterioare au fost instantanee datorită utilizării memoriei cache stocate. Repornirea dnsmasq este necesară dacă doriți să ștergeți memoria cache DNS stocată.

Concluzie

În acest articol, am văzut cum să configurăm dnsmasq pentru a funcționa ca server DNS local. Ați putea fi, de asemenea, interesat să aflați cum să schimbați serverele DNS pentru o navigare mai rapidă în diverse sisteme de operare.