Hur man ställer in DNS-cache med dnsmasq på Ubuntu

DNSmasq kan användas för att cachelagra DNS-förfrågningar för Linux-distributioner. det kan dock vara lite utmanande.

DNS-cachen fungerar för att påskynda DNS-uppslagsproceduren som konverterar ett webbplatsdomännamn till dess associerade IP-adress. När flera användare i ditt nätverk besöker samma webbadress kan användningen av den lokala DNS-cacheservern minska den tid det tar för webben att laddas.

Låt oss först se vad som är DNS-cache.

Vad är DNS-cache?

DNS används av internet för att hålla reda på alla allmänt tillgängliga webbsajter och deras relaterade IP-adresser. Det kan jämföras med en telefonkatalog. Att använda DNS hindrar oss från att behöva memorera varje webbplatss IP, vilket krävs för att nätverksinfrastruktur ska kunna interagera med webbplatser.

Närhelst du ber sökmotorn att visa en webbsida är detta vad som faktiskt sker bakom kulisserna.

Även om ditt system har tillgång till ett stort antal externa DNS-servrar, är problemet att en central replika av DNS fortfarande påskyndar överföring och upplösning. Det är då DNS-caching kommer in i bilden.

Innan begäran skickas till webben hanterar DNS-cachen identitetsupplösning för nyligen och ofta åtkomliga domäner i ett försök att påskynda proceduren mycket mer.

DNS-servern nås när det är nödvändigt för att lösa en IP-adress till ett domännamn. Detta kan lägga en extra belastning på DNS-servern, särskilt om webbplatsen tar emot många förfrågningar samtidigt.

En DNS-cache används för att minska DNS-förfrågningar och svarstider. De lösta IP-adresserna tillsammans med värdinformationen sparas lokalt. I stället för att initiera en ny DNS-fråga, hämtas resultatet från DNS-cacheminnet nästa gång IP- eller domännamnet måste lösas.

Hur hjälper DNS-cachelagring till att fixa intermittenta DNS-lösningsproblem på Amazon EC2-instanser?

Majoriteten av Linux-system använder inte en lokal DNS-cache. Detta innebär att alla DNS-förfrågningar skickas direkt till den auktoritativa DNS-resolver som tillhandahålls av Amazon, som har en begränsning på antalet förfrågningar den kan behandla på en gång. DNS-upplösningsproblem uppstår när det finns många förfrågningar.

Att distribuera en lokal DNS-cache i systemet hjälper dig att minska CPU- och nätverksanvändningen samtidigt som du förhindrar DNS-upplösningsfel. En lokal DNS-cache svarar på frågor som görs till externa DNS-resurser som Amazon RDS och S3.

DHCP-protokollet används under lanseringen av Amazon EC2-instanser anslutna till Amazon VPC:er för att begära en DNS-serveradress.

När du använder Amazon VPC för att konstruera ett virtuellt privat moln, använder Route 53 DNS Resolver effektivt en resolver på VPC:n för att svara på DNS-förfrågningar för EC2-instanser som körs under lokala Amazon VPC-webbadresser och poster i privat administrerade zoner. Resolver gör återkommande sökningar över offentliga DNS-servrar för alla ytterligare webbadresser.

En DNS-cache fungerar som en tillfällig registrering av tidigare DNS-förfrågningar som vårt system snabbt kan undersöka när det försöker komma åt en onlinewebbplats. Den upprätthåller en logg över varje befintlig och efterföljande session. Denna DNS-cache gör domänupplösningen enklare och förhindrar fel med Amazon EC2 Linux-instanser.

Många användare använder vanligtvis Amazons Route 53-tjänst för DNS när de kommer åt AWS. Det är verkligen lätt att använda och nästan gratis. Men det finns ett antal skäl som kan påverka användarens beslut att använda en lokal DNS-server.

Även om bind9 fortfarande är ett utmärkt alternativ för att sätta upp en lokal DNS-cacheserver, är dnsmasq mycket enklare att installera och konfigurera både på EC2-instanser och på en lokal dator.

Vad är dnsmasq?

DNSmasq är ett Linux-relaterat verktyg som stöder DNS, DHCP, TFTP och DNS-cache. Den är gjord för att vara kompakt och lätt, vilket gör den idealisk för nätverk och brandväggar med färre resursbegränsningar.

Det är otroligt enkelt att installera och konfigurera. För att sätta upp DNS och DHCP för subnätverk är dnsmasq en flexibel och praktisk lösning.

Det är möjligt att ställa in dessa DHCP-tilldelade identifierare och tillhörande instruktioner för varje server eller för en underliggande styrenhet. Dynamiska och statiska DHCP-alternativ stöds båda av dnsmasq. Den är portabel och har förmågan att hantera DNS och DHCP för minst 1 000 klienter.

När en DNS-fråga tas emot svarar dnsmasq antingen från en lokal cache eller överför den till en auktoritativ DNS-server. Förutom att svara på DNS-förfrågningar om adresser med DHCP-konfiguration, kontrollerar den innehållet i filen /etc/hosts för att identifiera lokala värdnamn som inte är listade i den offentliga DNS.

Att använda dnsmasq-verktyget istället för webbläsarens inbyggda DNS-cache förbättrar avsevärt surfprestandan på internet. Den är idealisk för en integrerad miljö med begränsade resurser eftersom den är väldigt enkel att installera och kräver väldigt lite diskutrymme.

Funktioner i dnsmasq

  • Det är enkelt att integrera interna DNS-servrar med hjälp av dnsmasq genom att konfigurera den för att överföra specifika domännamnsupplösningsfrågor till särskilda auktoritativa servrar.
  • Serverns arbetsbelastning minskar och tillförlitligheten förbättras med den konfigurerade lokala DNS-servern.
  • DNS-konfiguration för brandväggsaktiverade slutpunkter är ganska enkel och oberoende av den DNS som används av ISP:n.
  • Om porten som är länkad till Internet är otillgänglig när en DNS-kontroll utförs på datorn, avbryts sökoperationen omedelbart.
  • Genom PPP (Point-to-point protocol) eller DHCP-frågor kan dnsmasq verkligen konfigureras för att periodiskt samla in data direkt från den underliggande domänupplösningsservern.

Installation

Den systemd-lösta tjänsten måste stängas av innan du installerar och konfigurerar dnsmasq-verktyget.

systemctl stop systemd-resolved

Du kan också dölja den med mask-attributet så att den inte startar automatiskt när du startar om.

 systemctl mask systemd-resolved

Att installera dnsmasq är den första åtgärden du behöver utföra efter att ha stängt av systemd-resolved. DNSmasq kommer förinstallerat i nästan alla Linux-distributioner. Om inte kan du installera det manuellt. Starta en kommandoterminal och skriv sedan följande kommando för att göra det.

sudo apt-get install dnsmasq

Använd följande kommando om du är en yum-användare:

sudo yum install -y dnsmasq

Detta kommando installerar automatiskt verktyget och startar dnsmasq i bakgrunden.

Efter lyckad installation kan du kontrollera statusen för dnsmasq genom att använda kommandot nedan.

systemctl status dnsmasq

Om den visar sin status som ”aktiv (kör)”, betyder det att installationen är klar och konfigurerad till port 53. Om den visar sin status som ”inaktiv (död)”, måste du starta om både Ubuntu-maskinen och dnsmasq igen. Detta kommer att åtgärda felet.

Konfiguration

Dnsmasq är nu redo att ställas in på din dator som den lokala caching-DNS-servern. Standardkonfigurationsfilen finns på /etc/dnsmasq.conf. Den här konfigurationsfilen måste ändras för att konfigurera dnsmasq-verktyget i systemet.

Använd detta kommando för att öppna och redigera konfigurationsfilen.

nano /etc/dnsmasq.conf

Konfigurationsfilen får endast redigeras med root-privilegier. Rensa bara allt i filen inklusive kommentarer och bara kopiera-klistra in och spara den här konfigurationsinställningen.

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

Låt mig kort beskriva vad var och en av parametrarna betyder.

  • Port – För att ange eller binda porten som Dnsmasq ska använda för att ta emot DNS-förfrågningar.
  • domänbehov – Överför endast domännamnen till uppströms DNS-servern.
  • bogus-priv – förhindrar vidarebefordran av domän och port
  • lyssna-adress – För att definiera namnserveradressen. Vanligtvis används den lokala värden som standard för att ställa in en lokal DNS-server.
  • domän – För att konfigurera de domäner som dnsmasq lägger till korta identifierare.
  • cache-storlek – Den maximala DNS-cachestorlek som tillåts i lagring.

När du har utfört alla nödvändiga ändringar, spara och stäng konfigurationsfilen. Och nästa steg är att redigera filen /etc/resolv.conf för att lägga till den lokala värdupplösningsadressen. Använd kommandot nedan för att öppna med nanoredigeraren.

nano /etc/resolv.conf

Här kan du hitta alla namnservrar som ditt system använder för adressupplösning. Lägg också till loopback-adressen i den listan. Lägg till ”namnserver 127.0.0.1” och håll den på första raden.

Spara och avsluta konfigurationsfilen. Starta om verktyget dnsmasq för att den uppdaterade inställningen ska träda i kraft.

systemctl restart dnsmasq

Testar lokal DNS-cacheserver

Det är enkelt att testa den lokala DNS-servern. Öppna en kommandorad och använd kommandot dig för att söka efter DNS-cache. När du kör grävkommandot för första gången borde resultatet vara ganska vanligt.

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

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

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

Notera här att frågetiden är cirka 31 msek för att fråga detaljerna från uppströmsnamnservern. Utför samma grävkommando en gång till, så kommer du att märka en betydande minskning av frågetiden.

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

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

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

Här är frågetiden 0 msek. Detta beror på det faktum att efter att ha utfört den första sökningen lagrade dnsmasq data, och alla efterföljande utförda uppslagningar skedde omedelbart på grund av användningen av den lagrade cachen. Att starta om dnsmasq är nödvändigt om du vill ta bort den lagrade DNS-cachen.

Avslutar

I den här artikeln har vi sett hur du ställer in och konfigurerar dnsmasq för att fungera som en lokal DNS-server. Du kanske också är intresserad av att lära dig om hur du ändrar DNS-servrar för snabbare surfning i olika operativsystem.