Како подесити ДНС кеширање користећи днсмаск на Убунту-у

Dnsmask se može koristiti za keširanje DNS zahteva na Linux distribucijama, ali njegova konfiguracija može biti nešto zahtevnija.

DNS keširanje ubrzava proces DNS pretrage, transformišući nazive web domena u njihove odgovarajuće IP adrese. Kada više korisnika na mreži posećuje istu web adresu, lokalni DNS keš server može značajno skratiti vreme potrebno za učitavanje stranice.

Hajde da prvo razjasnimo šta je zapravo DNS keširanje.

Šta je DNS keširanje?

Internet koristi DNS sistem za praćenje svih javno dostupnih online lokacija i njihovih odgovarajućih IP adresa, slično kao telefonski imenik. Korišćenje DNS-a nas oslobađa potrebe da pamtimo IP adrese svake lokacije, što je neophodno za interakciju mrežne infrastrukture sa veb sajtovima.

Kada god zatražite od svog pregledača da prikaže web stranicu, niz operacija se odvija u pozadini.

Iako vaš sistem ima pristup velikom broju spoljnih DNS servera, problem je u tome što centralizovana replika DNS-a i dalje može usporiti prenos i rešavanje. Tu na scenu stupa DNS keširanje.

Pre slanja zahteva na veb, DNS keš obrađuje razrešavanje naziva nedavno i često posećivanih domena, čime se postupak znatno ubrzava.

DNS server se kontaktira svaki put kada je potrebno razrešiti IP adresu za naziv domena. Ovo može dodatno opteretiti DNS server, posebno ako veb lokacija prima veliki broj zahteva istovremeno.

DNS keš se koristi za smanjenje DNS zahteva i ubrzavanje vremena odziva. Razrešene IP adrese, zajedno sa detaljima o hostu, čuvaju se lokalno. Umesto pokretanja novog DNS upita, rezultat se preuzima iz DNS keš memorije prilikom sledećeg razrešavanja IP adrese ili imena domena.

Kako DNS keširanje pomaže u rešavanju povremenih problema sa DNS-om na Amazon EC2 instancama?

Većina Linux sistema ne koristi lokalni DNS keš. To znači da se svi DNS zahtevi šalju direktno autoritativnom DNS rešavaču koji obezbeđuje Amazon, koji ima ograničenje u pogledu broja zahteva koje može obraditi istovremeno. Problemi sa razrešavanjem DNS-a mogu nastati kada je broj zahteva veliki.

Implementacija lokalne DNS keš memorije na sistemu će pomoći u smanjenju upotrebe CPU-a i mrežnog saobraćaja, istovremeno sprečavajući greške u DNS razrešavanju. Lokalni DNS keš odgovara na upite upućene spoljnim DNS resursima kao što su Amazon RDS i S3.

DHCP protokol se koristi tokom pokretanja Amazon EC2 instanci povezanih sa Amazon VPC-ovima da bi se zatražila adresa DNS servera.

Kada koristite Amazon VPC za kreiranje virtuelnog privatnog oblaka, Route 53 DNS Resolver efikasno koristi resolver u okviru VPC-a da odgovori na DNS zahteve za EC2 instance koje se pokreću pod lokalnim Amazon VPC web adresama i unosima u zonama pod privatnom administracijom. Resolver vrši iterativne pretrage na javnim DNS serverima za sve dodatne web adrese.

DNS keš služi kao privremena evidencija prethodnih DNS upita koje naš sistem može brzo da ispita dok pokušava da pristupi web lokaciji na mreži. Održava zapise o svakoj postojećoj i narednoj sesiji. Ova DNS keš memorija olakšava razrešavanje domena i sprečava greške sa Amazon EC2 Linux instancama.

Mnogi korisnici obično koriste Amazonovu uslugu Route 53 za DNS kada pristupaju AWS-u. Ona je jednostavna za upotrebu i skoro besplatna, ali postoje razlozi koji mogu uticati na odluku korisnika da koristi lokalni DNS server.

Iako je Bind9 i dalje dobra opcija za podešavanje lokalnog DNS keš servera, Dnsmasq je mnogo lakši za instaliranje i konfigurisanje, kako na EC2 instancama, tako i na lokalnoj mašini.

Šta je Dnsmasq?

Dnsmasq je alatka za Linux koja podržava DNS, DHCP, TFTP i DNS keširanje. Dizajniran je da bude kompaktan i lagan, što ga čini idealnim za mreže i zaštitne zidove sa ograničenim resursima.

Vrlo je jednostavan za instaliranje i konfigurisanje. Dnsmasq je fleksibilno i praktično rešenje za postavljanje DNS-a i DHCP-a za podmreže.

Moguće je podesiti identifikatore dodeljene DHCP-u i prateća uputstva za svaki server ili za primarni kontroler. Dnsmasq podržava i dinamičke i statičke DHCP opcije. Prenosiv je i ima sposobnost upravljanja DNS-om i DHCP-om za najmanje 1.000 klijenata.

Kada primi DNS upit, Dnsmasq ili odgovara iz lokalne keš memorije ili ga prosleđuje autoritativnom DNS serveru. Pored odgovaranja na DNS zahteve za adrese sa DHCP konfiguracijom, on proverava sadržaj datoteke /etc/hosts da bi identifikovao lokalne nazive hostova koji nisu navedeni u javnom DNS-u.

Korišćenje alatke Dnsmasq umesto ugrađene DNS keš memorije u pretraživaču u velikoj meri poboljšava performanse pretraživanja interneta. Idealan je za integrisano okruženje sa ograničenim resursima, jer je vrlo jednostavan za podešavanje i zahteva malo prostora na disku.

Karakteristike Dnsmasq-a

  • Lako je integrisati interne DNS servere koristeći Dnsmasq tako što ćete ga konfigurisati da prosleđuje određene upite za razrešavanje naziva domena određenim autoritativnim serverima.
  • Opterećenje servera je smanjeno, a pouzdanost poboljšana korišćenjem konfigurisanog lokalnog DNS servera.
  • DNS konfiguracija za krajnje tačke sa omogućenim zaštitnim zidom je prilično laka i nezavisna od DNS-a koji koristi ISP.
  • Ako je port povezan sa Internetom nedostupan dok se vrši provera DNS-a na računaru, operacija traženja će biti trenutno obustavljena.
  • Kroz PPP (Point to Point Protocol) ili DHCP upite, Dnsmasq se može konfigurisati da periodično prikuplja podatke direktno sa primarnog servera za razrešavanje domena.

Instalacija

Usluga koju rešava systemd mora biti zaustavljena pre instaliranja i konfigurisanja uslužnog programa Dnsmasq.

systemctl stop systemd-resolved

Takođe ga možete sakriti pomoću atributa maske tako da se ne pokreće automatski prilikom ponovnog pokretanja sistema.

systemctl mask systemd-resolved

Instaliranje Dnsmasq-a je početna radnja koju treba da preduzmete nakon što isključite systemd-resolved. Dnsmasq dolazi preinstaliran u gotovo svim Linux distribucijama. Ako nije, možete ga instalirati ručno. Pokrenite komandni terminal i ukucajte sledeću komandu da biste to uradili.

sudo apt-get install dnsmasq

Koristite sledeću komandu ako ste yum korisnik:

sudo yum install -y dnsmasq

Ova komanda automatski instalira alat i pokreće Dnsmasq u pozadini.

Nakon uspešne instalacije, možete proveriti status Dnsmasq-a korišćenjem naredbe ispod.

systemctl status dnsmasq

Ako prikazuje svoj status kao „active (running)“, to znači da je instalacija izvršena i konfigurisan je na portu 53. Ako prikazuje svoj status kao „inactive (dead)“, onda morate ponovo pokrenuti Ubuntu mašinu i Dnsmasq. Ovo će rešiti problem.

Konfiguracija

Dnsmasq je sada spreman za konfigurisanje na vašoj mašini kao lokalni DNS server za keširanje. Podrazumevana konfiguraciona datoteka se nalazi na /etc/dnsmasq.conf. Ova konfiguraciona datoteka mora biti izmenjena da bi se podesio Dnsmasq uslužni program na sistemu.

Koristite ovu komandu da otvorite i uredite konfiguracionu datoteku.

nano /etc/dnsmasq.conf

Konfiguracioni fajl se mora uređivati samo sa root privilegijama. Obrišite sve u datoteci, uključujući komentare, i jednostavno kopirajte, nalepite i sačuvajte ovo konfiguraciono podešavanje.

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

Dozvolite mi da ukratko opišem šta svaki od parametara znači:

  • Port – Određuje port koji će Dnsmasq koristiti za primanje DNS zahteva.
  • domain-needed – Prosleđuje samo nazive domena na uzvodni DNS server.
  • bogus-priv – Sprečava prosleđivanje domena i portova.
  • listen-address – Definiše adresu servera imena. Lokalni host se obično koristi kao podrazumevani za podešavanje lokalnog DNS servera.
  • domain – Konfiguriše domene koje Dnsmasq dodaje kratkim identifikatorima.
  • cache-size – Maksimalna veličina DNS keša dozvoljena u memoriji.

Nakon što izvršite sve potrebne izmene, sačuvajte i zatvorite konfiguracioni fajl. Sledeći korak je da uredite datoteku /etc/resolv.conf da biste dodali adresu lokalnog hosta za razrešavanje. Koristite donju komandu da otvorite nano editor.

nano /etc/resolv.conf

Ovde možete pronaći sve servere imena koje vaš sistem koristi za razrešavanje adresa. U tu listu dodajte i adresu povratne petlje. Dodajte „nameserver 127.0.0.1“ i neka bude u prvom redu.

Sačuvajte i izađite iz konfiguracione datoteke. Da bi ažurirana podešavanja stupila na snagu, ponovo pokrenite Dnsmasq uslužni program.

systemctl restart dnsmasq

Testiranje lokalnog DNS servera za keširanje

Lako je testirati lokalni DNS server. Otvorite komandnu liniju i koristite komandu dig da biste proverili da li postoji DNS keširanje. Kada prvi put pokrenete komandu dig, rezultat bi trebalo da bude prilično uobičajen.

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

; <<>> DiG 9.18.0-2-Debian <<>> techblog.co.rs.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:
;techblog.co.rs.com.                 IN      A

;; ANSWER SECTION:
techblog.co.rs.com.          227     IN      A       172.66.43.163
techblog.co.rs.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

Ovde imajte na umu da je vreme upita oko 31 ms da bi se upitali detalji sa upstream servera imena. Izvršite istu komandu dig još jednom i primetićete značajno smanjenje vremena upita.

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

; <<>> DiG 9.18.0-2-Debian <<>> techblog.co.rs.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:
;techblog.co.rs.com.                 IN      A

;; ANSWER SECTION:
techblog.co.rs.com.          281     IN      A       172.66.40.93
techblog.co.rs.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

Ovde je vreme upita 0 ms. To je zato što je nakon izvođenja početne pretrage, Dnsmasq uskladištio podatke, a sve naknadno izvršene pretrage su bile trenutne zbog korišćenja uskladištenog keša. Ponovno pokretanje Dnsmasq-a je neophodno ako želite da izbrišete sačuvani DNS keš.

Zaključak

U ovom članku smo videli kako da podesite i konfigurišete Dnsmasq da funkcioniše kao lokalni DNS server. Možda vas zanima kako da promenite DNS servere za brže pretraživanje u različitim operativnim sistemima.