Å benytte DNSmasq for å lagre DNS-forespørsler i en Linux-distribusjon kan være en effektiv løsning, selv om prosessen kan virke litt innviklet.
En DNS-cache bidrar til å akselerere DNS-oppslagsprosessen, som konverterer et domenenavn til den tilhørende IP-adressen. Når flere brukere på nettverket ditt gjentatte ganger besøker den samme nettsiden, kan en lokal DNS-caches tjener redusere lastetiden betydelig.
La oss først se nærmere på hva DNS-caching egentlig innebærer.
Hva er DNS-bufring?
Internett bruker DNS for å holde oversikt over alle offentlig tilgjengelige nettsider og deres tilhørende IP-adresser. Det fungerer som en slags telefonkatalog. DNS gjør det mulig for oss å slippe å huske de enkelte IP-adressene, som er nødvendig for at nettverksenheter skal kunne kommunisere med nettsider.
Når du ber søkemotoren om å vise en nettside, skjer dette i bakgrunnen.
Selv om systemet ditt har tilgang til et stort antall eksterne DNS-servere, kan det å ha en sentralisert replika av DNS fremdeles føre til økt overføringstid og lengre oppløsningstider. Det er her DNS-caching kommer inn i bildet.
DNS-cachen forsøker å fremskynde prosessen ved å håndtere identitetsoppløsning for nylig og ofte brukte domener, før forespørselen sendes ut på nettet.
DNS-serveren aksesseres når det er behov for å finne IP-adressen til et domenenavn. Dette kan medføre en ekstra belastning på DNS-serveren, spesielt om mange forespørsler mottas samtidig.
En DNS-cache brukes for å redusere både antall DNS-forespørsler og responstidene. De oppløste IP-adressene, sammen med detaljer om verten, lagres lokalt. Neste gang IP-en eller domenenavnet skal oppløses, hentes resultatet fra DNS-cachen, istedenfor å initiere en ny DNS-spørring.
Hvordan bidrar DNS-caching til å løse periodiske DNS-oppløsningsproblemer på Amazon EC2-instanser?
De fleste Linux-systemer bruker ikke en lokal DNS-cache. Dette innebærer at alle DNS-forespørsler sendes direkte til den autoritative DNS-løseren som leveres av Amazon. Denne løseren har en grense for antall forespørsler den kan behandle samtidig. DNS-oppløsningsproblemer kan oppstå når antallet forespørsler er stort.
Ved å implementere en lokal DNS-cache i systemet, kan du redusere CPU- og nettverksbruken, samtidig som du unngår DNS-oppløsningsfeil. En lokal DNS-cache responderer på forespørsler til eksterne DNS-ressurser, som Amazon RDS og S3.
DHCP-protokollen brukes for å forespørre DNS-serveradresser ved oppstart av Amazon EC2-instanser som er koblet til Amazon VPC.
Når du bruker Amazon VPC for å skape en virtuell privat sky, bruker Route 53 DNS Resolver en løser i VPC for å svare på DNS-forespørsler fra EC2-instanser som kjører under lokale Amazon VPC-nettadresser og oppføringer i privat administrerte soner. Resolver utfører gjentatte oppslag på tvers av offentlige DNS-servere for alle andre nettadresser.
En DNS-cache fungerer som en midlertidig oversikt over tidligere DNS-spørringer. Systemet kan raskt konsultere denne oversikten når det forsøker å aksessere en nettside. Cachen lagrer en historikk over hver eksisterende og etterfølgende økt. Denne DNS-cachen forenkler domeneoppløsningen og hindrer problemer med Amazon EC2 Linux-instanser.
Mange brukere benytter vanligvis Amazons Route 53-tjeneste for DNS når de bruker AWS. Tjenesten er svært brukervennlig og nesten kostnadsfri. Det finnes imidlertid flere grunner til at en bruker kan velge å benytte en lokal DNS-server istedenfor.
Selv om bind9 fremdeles er et solid alternativ for å sette opp en lokal DNS-caches, er dnsmasq mye enklere å installere og konfigurere, både på EC2-instanser og på en lokal maskin.
Hva er dnsmasq?
DNSmasq er et verktøy for Linux som støtter DNS, DHCP, TFTP og DNS-caching. Det er designet for å være kompakt og lett, og er derfor ideelt for nettverk og brannmurer med begrensede ressurser.
Verktøyet er bemerkelsesverdig enkelt å installere og konfigurere. Dnsmasq er en fleksibel og praktisk løsning for å sette opp DNS og DHCP for subnettverk.
Det er mulig å definere disse DHCP-tilordnede identifikatorene og tilhørende instruksjoner for hver enkelt server eller for en overordnet kontroller. Dnsmasq støtter både dynamiske og statiske DHCP-alternativer. Det er portabelt og kan håndtere DNS og DHCP for minst 1000 klienter.
Når dnsmasq mottar en DNS-forespørsel, svarer det enten fra den lokale cachen eller videresender den til en autoritativ DNS-server. I tillegg til å svare på DNS-forespørsler om adresser med DHCP-konfigurasjon, sjekker den innholdet i /etc/hosts-filen for å identifisere lokale vertsnavn som ikke er oppført i det offentlige DNS.
Ved å bruke dnsmasq-verktøyet istedenfor nettleserens innebygde DNS-cache, kan nettleseropplevelsen forbedres betydelig. Det er ideelt for integrerte miljøer med begrensede ressurser, fordi det er svært enkelt å sette opp og krever lite diskplass.
Funksjoner ved dnsmasq
- Dnsmasq gjør det enkelt å integrere interne DNS-servere ved å konfigurere det til å overføre spesifikke domenenavn-spørsmål til definerte autoritative servere.
- Den konfigurerte lokale DNS-serveren reduserer arbeidsmengden på serveren og forbedrer påliteligheten.
- DNS-konfigurasjon for brannmuraktiverte endepunkter er relativt enkel og uavhengig av DNS som brukes av internettleverandøren.
- Dersom porten som er koblet til internett ikke er tilgjengelig under en DNS-kontroll på datamaskinen, vil oppslagsoperasjonen stoppe umiddelbart.
- Dnsmasq kan konfigureres til å jevnlig samle inn data direkte fra den underliggende domeneoppløsningsserveren gjennom PPP (Point-to-point protocol) eller DHCP-spørringer.
Installasjon
Systemets systemd-resolved-tjeneste må stoppes før du installerer og konfigurerer dnsmasq-verktøyet.
systemctl stop systemd-resolved
Du kan også deaktivere tjenesten ved hjelp av «mask»-attributtet, slik at den ikke starter automatisk når du starter systemet på nytt.
systemctl mask systemd-resolved
Installering av dnsmasq er det første du må gjøre etter å ha stoppet systemd-resolved. Dnsmasq er forhåndsinstallert i de fleste Linux-distribusjoner. Hvis ikke, kan du installere det manuelt. Start en kommandoterminal og skriv inn følgende kommando for å installere det:
sudo apt-get install dnsmasq
Dersom du benytter yum, kan du bruke følgende kommando:
sudo yum install -y dnsmasq
Denne kommandoen installerer verktøyet automatisk og starter dnsmasq i bakgrunnen.
Etter vellykket installasjon kan du sjekke statusen til dnsmasq ved å bruke kommandoen nedenfor.
systemctl status dnsmasq
Hvis statusen viser «aktiv (kjører)», betyr det at installasjonen er fullført og konfigurert til port 53. Hvis statusen viser «inaktiv (død)», må du starte både Ubuntu-maskinen og dnsmasq på nytt for å fikse feilen.
Konfigurasjon
Dnsmasq er nå klart for å settes opp på maskinen din som den lokale cachen DNS-serveren. Standard konfigurasjonsfil finnes på /etc/dnsmasq.conf. Denne filen må endres for å sette opp dnsmasq i systemet.
Bruk følgende kommando for å åpne og redigere konfigurasjonsfilen:
nano /etc/dnsmasq.conf
Konfigurasjonsfilen må kun redigeres med root-rettigheter. Fjern alt i filen, inkludert kommentarer, og kopier, lim inn og lagre de følgende konfigurasjonsinnstillingene:
port=53 domain-needed bogus-priv listen-address=127.0.0.1 expand-hosts domain=geek-demo.com cache-size=1000
Her er en kort beskrivelse av hva hver parameter betyr:
- Port – Angir eller binder porten som Dnsmasq skal bruke for å motta DNS-forespørsler.
- domain-needed – Overfører kun domenenavnene til oppstrøms DNS-serveren.
- bogus-priv – Hindrer videresending av domene og porter
- listen-address – Definerer navneserveradressen. Vanligvis benyttes den lokale verten som standard for å sette opp en lokal DNS-server.
- domain – Konfigurerer domenene som dnsmasq legger til korte identifikatorer.
- cache-size – Maksimal DNS-cachingstørrelse som er tillatt i lagringen.
Etter at du har gjort alle de nødvendige endringene, lagrer du konfigurasjonsfilen og lukker den. Neste steg er å redigere filen /etc/resolv.conf for å legge til den lokale vertsoppløsningsadressen. Bruk kommandoen nedenfor for å åpne filen med nano-editoren:
nano /etc/resolv.conf
Her vil du finne alle navneserverne systemet ditt bruker for adresseoppløsning. I denne listen legger du til loopback-adressen. Legg til «navneserver 127.0.0.1» og plasser den på første linje.
Lagre og lukk konfigurasjonsfilen. For at de oppdaterte innstillingene skal tre i kraft, må du starte dnsmasq-verktøyet på nytt.
systemctl restart dnsmasq
Teste den lokale DNS-caches tjeneren
Det er enkelt å teste den lokale DNS-serveren. Åpne en kommandolinje og bruk dig-kommandoen for å sjekke DNS-caching. Når du kjører dig-kommandoen for første gang, bør resultatet være ganske vanlig.
┌──(root💀kali)-[/home/writer] └─# dig tipsbilk.net.com 1 ⚙ ; <<>> DiG 9.18.0-2-Debian <<>> tipsbilk.net.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: ;tipsbilk.net.com. IN A ;; ANSWER SECTION: tipsbilk.net.com. 227 IN A 172.66.43.163 tipsbilk.net.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
Vær oppmerksom på at spørretiden er rundt 31 msek for å hente detaljer fra oppstrøms navneserver. Utfør samme dig-kommando en gang til, og du vil se en betydelig reduksjon i spørretiden.
┌──(root💀kali)-[/home/writer] └─# dig tipsbilk.net.com 1 ⚙ ; <<>> DiG 9.18.0-2-Debian <<>> tipsbilk.net.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: ;tipsbilk.net.com. IN A ;; ANSWER SECTION: tipsbilk.net.com. 281 IN A 172.66.40.93 tipsbilk.net.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
Her er spørretiden 0 msek. Dette skyldes at dnsmasq lagret dataene etter det første søket, og alle påfølgende oppslag gikk umiddelbart, takket være den lagrede cachen. Hvis du ønsker å slette den lagrede DNS-cachen, må du starte dnsmasq på nytt.
Oppsummering
I denne artikkelen har vi sett hvordan du setter opp og konfigurerer dnsmasq slik at det fungerer som en lokal DNS-server. Du kan også være interessert i å lære mer om hvordan du endrer DNS-servere for raskere surfing på ulike operativsystemer.