een lokale DNS Resolver instellen met Dnsmasq op Ubuntu 20.04

Dnsmasq staat voor “short for DNS masquerade” en is een eenvoudige, lichtgewicht en gemakkelijk te gebruiken DNS forwarder die gebruikt wordt voor een klein netwerk. Het kan ingesteld worden als een DNS cache en DHCP server en ondersteunt zowel het IPv4 als het IPv6 protocol. Wanneer het een DNS vraag ontvangt, beantwoordt het die vanuit zijn cache of stuurt door naar een andere DNS server.

Dnsmasq is opgebouwd uit drie subsystemen:

  • DNS subsysteem : Het wordt gebruikt voor het cachen van verschillende soorten records, waaronder, A, AAAA, CNAME en PTR.
  • DHCP subsysteem : Het ondersteunt DHCPv4, DHCPv6, BOOTP en PXE.
  • Router Advertisement subsysteem : Het biedt basis autoconfiguratie voor IPv6 hosts. Het kan stand-alone of samen met DHCPv6 gebruikt worden.

In deze handleiding laten we je zien hoe je een lokale DNS server met Dnsmasq opzet op Ubuntu 20.04 server.

Vereisten

  • Een server waarop Ubuntu 20.04 draait.
  • Een root wachtwoord is de server geconfigureerd.

Aan de slag

Eerst is het aan te raden je systeempakketten bij te werken tot de laatste versie. Je kunt alle pakketten bijwerken door het volgende commando uit te voeren:

apt-get update -y

Na het bijwerken van alle pakketten moet je de Systemd-resolved dienst in je systeem uitschakelen. Systemd-resolved dienst wordt gebruikt voor netwerk naamresolutie naar lokale toepassingen.

Je kunt het uitschakelen door het volgende commando uit te voeren:

systemctl disable --now systemd-resolved

Zodra de dienst is uitgeschakeld, moet je het standaard bestand resolv.conf verwijderen en een nieuw aanmaken met je aangepaste DNS server gegevens.

Je kunt het standaard resolv.conf bestand verwijderen met het volgende commando:

rm -rf /etc/resolv.conf

Voeg vervolgens de Google DNS server toe aan het resolv.conf bestand met het volgende commando:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer Dnsmasq

Dnsmasq is standaard beschikbaar in de Ubuntu 20.04 standaard repository. Je kunt het installeren door gewoon het volgende commando uit te voeren:

apt-get install dnsmasq dnsutils ldnsutils -y

Zodra de installatie voltooid is, worden de Dnsmasq diensten automatisch gestart. Je kunt de status van de Dnsmasq controleren met het volgende commando:

systemctl status dnsmasq

Je zou de volgende uitvoer moeten krijgen:

dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago
   Main PID: 17726 (dnsmasq)
      Tasks: 1 (limit: 2282)
     Memory: 868.0K
     CGroup: /system.slice/dnsmasq.service
             ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>

Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK.
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses
Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer Dnsmasq

Vervolgens moet je Dnsmasq instellen als een lokale DNS server. Je kunt dat doen door het Dnsmasq hoofdconfiguratiebestand te bewerken:

nano /etc/dnsmasq.conf

Verander de volgende regels:

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,your-server-ip
expand-hosts
domain=dns-example.com
cache-size=1000

Bewaar en sluit het bestand als je klaar bent.

Vervolgens moet je het ip adres van je server als primaire nameserver toevoegen in je resolv.conf bestand. Je kunt het toevoegen met het volgende commando:

nano /etc/resolv.conf

Voeg de volgende regel toe boven de regel “nameserver 8.8.8.8”:

nameserver your-server-ip

Sla het bestand op en sluit het als je klaar bent. Controleer vervolgens de server op eventuele fouten in de configuratie met het volgende commando:

dnsmasq --test

Als alles in orde is, zou je de volgende uitvoer moeten krijgen:

dnsmasq: syntax check OK.

Herstart tenslotte de Dnsmasq dienst om de veranderingen toe te passen:

systemctl restart dnsmasq

Op dit punt is Dnsmasq gestart en luistert op poort 53. Je kunt het verifiëren met het volgende commando:

ss -alnp | grep -i :53

Je zou de volgende uitvoer moeten krijgen:

udp     UNCONN   0        0                                             0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=4))                                             
udp     UNCONN   0        0                                                [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=6))                                             
tcp     LISTEN   0        32                                            0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=5))                                             
tcp     LISTEN   0        32                                               [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=7))                                             

DNS Records toevoegen aan Dnsmasq Server

Vervolgens moet je je /etc/hosts bestand bewerken en de vermelding voor de lokale DNS server toevoegen.

nano /etc/hosts

Voeg de volgende regel toe:

your-server-ip host1.dns-example.com

Bewaar en sluit het bestand als je klaar bent.

Verifieer de resolutie van de Dnsmasq server

Op dit punt is Dnsmasq geïnstalleerd en ingesteld. Niet, het is tijd om de DNS resolutie te verifiëren.

Je kunt het dig commando gebruiken om de DNS resolutie te controleren, zoals hieronder:

dig host1.dns-example.com +short

Als alles in orde is, zou je je server ip moeten zien in de volgende uitvoer:

your-server-ip

Je kunt ook externe DNS resolutie verifiëren met het volgende commando:

dig howtoforge.com +short

Je zou de volgende uitvoer moeten krijgen:

172.67.68.93
104.26.3.165
104.26.2.165

Configureer Remote Client om Dnsmasq DNS Server te gebruiken

Vervolgens moet je een remote client instellen om je Dnsmasq DNS server als standaard DNS server te gebruiken.

Installeer eerst DNS tools met het volgende commando:

apt-get install dnsutils ldnsutils -y

Eenmaal geïnstalleerd moet je het bestand /etc/resolv.conf en je Dnsmasq DNS server ingang bewerken.

nano /etc/resolv.conf

Voeg de volgende regel toe aan het begin van het bestand:

nameserver your-server-ip

Sla het bestand op en sluit het als je klaar bent.

Verifieer vervolgens de lokale DNS resolutie met het volgende commando:

dig host1.dns-example.com

Je zou de volgende uitvoer moeten zien:

; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 26401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.dns-example.com.		IN	A

;; ANSWER SECTION:
host1.dns-example.com.	0	IN	A	45.58.32.165

;; Query time: 301 msec
;; SERVER: 45.58.32.165#53(45.58.32.165)
;; WHEN: Mon Nov 02 16:49:37 IST 2020
;; MSG SIZE  rcvd: 66

Vervolgens moet je je DNS server controleren op caching. Je kunt dit controleren met het boorprogramma.

Voer eerst het volgende commando uit:

drill google.com | grep "Query time"

Je zou de volgende uitvoer moeten zien:

;; Query time: 290 msec

Voer vervolgens het commando nogmaals uit om te controleren of caching werkt of niet:

drill google.com | grep "Query time"

Je zou moeten zien dat de query tijd nu daalt tot 4 msec:

;; Query time: 4 msec

Conclusie

Gefeliciteerd! Je hebt met succes Dnsmasq geïnstalleerd en ingesteld als een lokale DNS server en Ubuntu 20.04. Ik hoop dat je het nu gemakkelijk in je lokale netwerk kunt implementeren voor naamresolutie.