DNS-server instellen met BIND op Ubuntu 22.04
BIND of Berkeley Internet Name Domain is vrije en open-source DNS Server software. Het is een van de populairste DNS server software die door meer dan 70% van de DNS op het Internet wordt gebruikt. BIND bestaat al sinds de jaren tachtig en staat bekend om zijn flexibiliteit, prestaties en mogelijkheden. BIND kan worden gebruikt als zowel authoritative DNS als caching DNS, ondersteunt load balancing, dynamische update, split DNS, DNSSEC, IPv6, en nog veel meer.
De BIND DNS software is een van de meest betrouwbare DNS servers voor Unix-achtige besturingssystemen. Het is beschikbaar op de meeste Linux distributies en biedt extra hulpmiddelen voor het diagnosticeren en testen van de DNS server.
Deze gids leert je hoe je DNS Server met BIND installeert op Ubuntu 22.04 server. Deze handleiding laat zien hoe je een Master-Slave BIND DNS server installatie opzet met behulp van twee Ubuntu servers.
Voorwaarden
Voordat je met deze gids begint, moet je over de volgende vereisten beschikken:
- Twee Ubuntu 22.04 Servers.
- Een niet-root gebruiker met root/administrator privileges.
Instellen van FQDN (Fully Qualified Domain Name)
Voordat je begint met het installeren van BIND pakketten, moet je ervoor zorgen dat de hostnaam en FQDN van je servers correct zijn. In deze demonstratie gebruiken we twee Ubuntu servers met de volgende gegevens:
Hostname IP Address FQDN Used As
---------------------------------------------------------
ns1 192.168.5.21 ns1.hwdomain.io BIND Master
ns2 192.168.5.22 ns2.hwdomain.io BIND Slave
Log nu in op elke server en voer het volgende commando uit om de FQDN (Fully Qualified Domain Name) in te stellen.
Stel een FQDN in op de“ns1” server.
sudo hostnamectl set-hostname ns1.hwdomain.io
Stel een FQDN in op de“ns2” server.
sudo hostnamectl set-hostname ns2.hwdomain.io
Bewerk vervolgens het bestand“/etc/hosts” met het volgende commando.
sudo nano /etc/hosts
Voeg de volgende configuratie toe aan elke server.
192.168.5.21 ns1.hwdomain.io ns1
192.168.5.22 ns2.hwdomain.io ns2
Sla het bestand op en sluit het als je klaar bent.
Controleer en verifieer tenslotte de FQDN op elke server met het volgende commando. Op de“ns1” server krijg je de FQDN als“ns1.hwdomain.io“, en op de“ns2” server krijg je de uitvoer“ns2.hwdomain.io“.
sudo hostname -f
BIND-pakketten installeren
Bind pakketten zijn standaard beschikbaar in de Ubuntu server repository. Nu kun je Bind eenvoudig installeren met het apt commando op zowel de “ns1” als de “ns2” servers.
Voer het onderstaande apt commando uit om de Ubuntu repositories bij te werken en te verversen.
sudo apt update
Installeer daarna Bind pakketten met het volgende commando. voer Y in om de installatie te bevestigen en druk op ENTER om door te gaan. En de installatie zal beginnen.
sudo apt install bind9 bind9utils bind9-doc dnsutils
Nadat de installatie van Bind is voltooid, bewerk je de configuratie“/etc/default/named” met het volgende commando.
sudo nano /etc/default/named
Met de regel“OPTIONS=” kun je specifieke opties instellen wanneer de BIND dienst draait. In deze demo zul je Bind alleen met IPv4 draaien, dus moet je de regel“OPTIONS” maken zoals hieronder.
OPTIONS="-u bind -4"
Sla het bestand op en sluit het als je klaar bent.
Voer nu het onderstaande commando uit om de Bind service“named” te herstarten. Controleer vervolgens de status van de BIND service. Je zou moeten zien dat de Bind-service“named” op beide servers draait.
sudo systemctl restart named
sudo systemctl status named
BIND Master instellen
Na het installeren van BIND pakketten op beide “ns1” en “ns2” servers, ga je de BIND DNS server instellen. je gaat de “ns1” server instellen als de Master van de BIND DNS server. Je kunt BIND op een enkele server draaien, maar het wordt aanbevolen om meerdere servers te gebruiken om de High-Availability DNS Server in te stellen.
Ga terug naar de terminalsessie van de“ns1” server.
Voer onderstaand commando uit om het configuratiebestand“/etc/bind/named.conf.options” te bewerken.
sudo nano /etc/bind/named.conf.options
Voeg de volgende configuratie toe aan het bestand bovenaan de regel, vóór de regel“options {….};“.
Met deze configuratie maak je een ACL (Access Control List) met de naam“trusted“, die alle vertrouwde IP adressen en netwerken in je omgeving omvat. Zorg er ook voor dat je het lokale server IP adres“ns1” en het IP adres van de“ns2” secundaire DNS server toevoegt.
acl "trusted" {
192.168.5.21; # ns1 - or you can use localhost for ns1
192.168.5.22; # ns2
192.168.5.0/24; # trusted networks
};
Breng nu wijzigingen aan in de“options {..};” sectie zoals hieronder.
In het volgende voorbeeld schakelen we de ondersteuning voor IPv6 uit door de optie“listen-on-v6” uit te schakelen, recursie van de“trusted” ACL in te schakelen en toe te staan, en de BIND dienst op specifiek“ns1” IP adres“192.168.5.21” te draaien. Ook schakelen we de standaard zone-overdracht uit en definiëren we de specifieke forwarders voor de BIND DNS server naar Google Public DNS“8.8.8.8” en“8.8.4.4“.
options {
directory "/var/cache/bind";
//listen-on-v6 { any; }; # disable bind on IPv6
recursion yes; # enables resursive queries
allow-recursion { trusted; }; # allows recursive queries from "trusted" - referred to ACL
listen-on { 192.168.5.21; }; # ns1 IP address
allow-transfer { none; }; # disable zone transfers by default
forwarders {
8.8.8.8;
1.1.1.1;
};
};
Sla het bestand op en sluit het als je klaar bent.
Voer tenslotte het volgende commando uit om het configuratiebestand“/etc/bind/named.conf.options” te controleren en te verifiëren. Als er geen uitvoerbericht is, dan is je configuratie correct.
sudo named-checkconf /etc/bind/named.conf.options
Zones instellen
Na het instellen van de basisconfiguratie van BIND master, ga je nu zones instellen voor je domeinnaam. In het volgende voorbeeld gebruiken we de domeinnaam“hwdomain.io” met de naamserver“ns1.hwdomain.io” en“ns2.hwdomain.io“.
Bewerk het configuratiebestand“/etc/bind/named.local” met het volgende commando.
sudo nano /etc/bind/named.conf.local
In deze configuratie zul je twee zonebestanden definiëren, de voorwaartse en achterwaartse zone voor je domeinnaam. De Forward zone zal de configuratie bevatten van waar je domeinnamen worden omgezet naar het IP adres, terwijl de reverse zone het IP adres zal vertalen naar welke domeinnaam.
In het volgende voorbeeld definiëren we de voorwaartse zone“/etc/bind/zones/db.hwdomain.io” voor domein“hwdomain.io” en de omgekeerde zone “/etc/bind/zones/db.192.168.5”.
zone "hwdomain.io" {
type master;
file "/etc/bind/zones/db.hwdomain.io"; # zone file path
allow-transfer { 192.168.5.22; }; # ns2 IP address - secondary DNS
};
zone "5.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.5"; # subnet 192.168.5.0/24
allow-transfer { 192.168.5.22; }; # ns2 private IP address - secondary DNS
};
Sla het bestand op en sluit het als je klaar bent.
Voer vervolgens het volgende commando uit om een nieuwe directory“/etc/bind/zones” aan te maken die gebruikt zal worden om zoneconfiguratiebestanden in op te slaan.
sudo mkdir -p /etc/bind/zones/
Kopieer daarna de standaard forward zone configuratie “/etc/bind/zones/db.hwdomain.io” en bewerk het bestand met het volgende commando.
sudo cp /etc/bind/db.local /etc/bind/zones/db.hwdomain.io
sudo nano /etc/bind/zones/db.hwdomain.io
Verander het standaard SOA record met je domeinnaam. Ook moet je het“Serienummer” in de SOA-records veranderen telkens als je wijzigingen aanbrengt in het bestand, en dit moet hetzelfde “Serienummer” zijn bij de secundaire/slave DNS-server.
Vervolgens kun je NS-records en A-records definiëren voor je DNS server. In dit voorbeeld wordt de naamserver“ns1.hwdomain.io” met het A record IP adres“192.168.5.21” en“ns2.hwdomain.io” met het A record van de secundaire DNS server IP adres“192.168.5.22“.
Tenslotte kun je andere domeinnamen definiëren. In dit voorbeeld definiëren we een MX record (mail handler) voor het domein“hwdomain.io” dat zal worden afgehandeld door de mailserver“mail.hwdomain.io“. Ook definiëren we de domeinnaam“hwdomain.io” die zal worden omgezet naar de server met IP adres“192.168.5.100” en het subdomein voor de mailserver “mail.hwdomain.io” naar het server IP adres“192.168.5.120“.
;
; BIND data file for the local loopback interface
;
$TTL 604800
@ IN SOA ns1.hwdomain.io. admin.hwdomain.io. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; NS records for name servers
IN NS ns1.hwdomain.io.
IN NS ns2.hwdomain.io.
; A records for name servers
ns1.hwdomain.io. IN A 192.168.5.21
ns2.hwdomain.io. IN A 192.168.5.22
; Mail handler or MX record for the domain hwdomain.io
hwdomain.io. IN MX 10 mail.hwdomain.io.
; A records for domain names
hwdomain.io. IN A 192.168.5.100
mail.hwdomain.io. IN A 192.168.5.120
Sla het bestand op en sluit het als je klaar bent.
Kopieer vervolgens het standaard reverse zone config bestand naar“/etc/bind/zones/db.192.168.5” en bewerk het nieuwe bestand met het volgende commando.
sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5
sudo nano /etc/bind/zones/db.192.168.5
Verander het standaard SOA record met je domeinnaam. Vergeet ook niet het“Serial” nummer in het SOA record te veranderen.
Definieer NS records voor je DNS servers. Dit zijn dezelfde nameservers die je gebruikte in de forward zone.
Definieer tenslotte de PTR-records voor je domeinnamen. Het nummer op de PTR records is het laatste nummer van het IP adres. In dit voorbeeld is de naamserver“ns1.hwdomain.io” omgezet naar het IP adres“192.168.5.21“, dus nu wordt het PTR record“21” en zo verder voor andere domeinnamen.
;
; BIND reverse data file for the local loopback interface
;
$TTL 604800
@ IN SOA ns1.hwdomain.io. admin.hwdomain.io. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers - NS records
IN NS ns1.hwdomain.io.
IN NS ns2.hwdomain.io.
; PTR Records
21 IN PTR ns1.hwdomain.io. ; 192.168.5.21
22 IN PTR ns2.hwdomain.io. ; 192.168.5.22
100 IN PTR hwdomain.io. ; 192.168.5.100
120 IN PTR mail.hwdomain.io. ; 192.168.5.120
Sla het bestand op en sluit het als je klaar bent.
Voer nu het volgende commando uit om de BIND configuraties te controleren en wees er zeker van dat je geen foutmelding krijgt.
sudo named-checkconf
Voer dan het volgende commando uit om elk zonebestand dat je zojuist hebt gemaakt, het configuratiebestand voor de voorwaartse zone en de omgekeerde zone, te controleren en te verifiëren. Als je zonebestanden geen fouten bevatten, zou je een uitvoerbericht als“OK” moeten zien. Als er geen fout is, zal het commando je laten zien welke regel van het bestand een fout heeft veroorzaakt.
sudo named-checkzone hwdomain.io /etc/bind/zones/db.hwdomain.io
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5
Om de BIND Master configuratie af te ronden, voer je het onderstaande commando uit om de BIND dienst te herstarten en de nieuwe wijzigingen toe te passen op de configuraties die je hebt gemaakt.
sudo systemctl restart named
BIND Slave instellen
Nu ben je klaar met de configuratie van de Master BIND DNS Server. Het is tijd om de “ns2” server in te stellen als de secundaire of slaaf van de BIND DNS server.
De Master server slaat zonebestanden op die de DNS configuratie van je domein bevatten en recursieve of iteratieve queries afhandelen. De secundaire/slave DNS server slaat tijdelijk DNS records op, en deze DNS records worden automatisch overgedragen van de Master BIND server.
Ga nu naar de“ns2” terminal sessie en begin met het configureren van de“ns2” server als Secondary/Slave van de BIND DNS server.
Voer het volgende commando uit om het configuratiebestand“/etc/bind/named.conf.options” te bewerken.
sudo nano /etc/bind/named.conf.options
Voeg bovenaan de regel de volgende configuratie toe. Dit zal dezelfde ACL (Access Control List) maken als op de Master server.
acl "trusted" {
192.168.5.21; # ns1
192.168.5.22; # ns2 - or you can use localhost for ns2
192.168.5.0/24; # trusted networks
};
In de regel“options {…};” kun je de configuratie veranderen zoals hieronder. Deze configuratie is nog steeds hetzelfde als op de Master BIND DNS server, en het enige verschil hier is de “listen-on” optie die is opgegeven voor het“ns2” server IP adres.
options {
directory "/var/cache/bind";
//listen-on-v6 { any; }; # disable bind on IPv6
recursion yes; # enables resursive queries
allow-recursion { trusted; }; # allows recursive queries from "trusted" - referred to ACL
listen-on { 192.168.5.22; }; # ns2 IP address
allow-transfer { none; }; # disable zone transfers by default
forwarders {
8.8.8.8;
1.1.1.1;
};
};
Sla het bestand op en sluit het als je klaar bent.
Bewerk vervolgens het configuratiebestand“/etc/bind/named.conf.local” met het volgende commando om de“ns2” server in te stellen als secundaire/slave DNS Server.
sudo nano /etc/bind/named.conf.local
Voeg de volgende configuratie toe aan het bestand. Zoals je ziet definiëren we de forward en reverse zones, maar met het“type slave” en definiëren we de DNS Master server“192.168.5.21“. Je hoeft het zonebestand niet aan te maken omdat DNS records en gegevens automatisch van de DNS Master server worden overgedragen en tijdelijk voor een periode worden opgeslagen op de secundaire/slave DNS server.
zone "hwdomain.io" {
type slave;
file "/etc/bind/zones/db.hwdomain.io";
masters { 192.168.5.21; }; # ns1 IP address - master DNS
};
zone "5.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/zones/db.192.168.5";
masters { 192.168.5.21; }; # ns1 IP address - master DNS
};
Sla het bestand op en sluit het als je klaar bent.
Draai nu het volgende commando om de BIND configuratie te controleren en er zeker van te zijn dat alle configuraties correct zijn. Daarna kun je de BIND service “named” op de“ns2” server opnieuw starten om de nieuwe wijzigingen toe te passen. En je bent nu klaar met de configuratie op de“ns2” server als secundaire/slaaf van de BIND DNS Server.
sudo named-checkconf
sudo systemctl restart named
Voer tenslotte het volgende commando uit om de BIND dienst“named” op de“ns2” server te controleren en te verifiëren. En wees er zeker van dat de“named” dienst draait.
sudo systemctl status named
Controle van de DNS-server vanaf de cliëntmachine
Op de cliëntmachine zijn er meerdere manieren om de DNS resolver in te stellen. Je kunt de DNS resolver instellen vanuit de NetworkManager of vanuit de netplan configuratie. Maar de eenvoudigste manier is om de DNS-oplosser handmatig in te stellen via het bestand “/etc/resolv.conf”. Hiermee kun je een statische DNS resolver instellen voor client machines.
Voer het volgende commando uit om het standaard koppelingsbestand“/etc/resolv.conf” te verwijderen en maak een nieuw bestand aan met behulp van nano editor.
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.conf
Voeg de volgende configuratie toe aan het bestand. In de volgende configuratie definiëren we drie verschillende resolvers, de BIND DNS Master, de Secondary BIND DNS server, en de publieke Google DNS resolver. Wanneer de cliëntmachine informatie over de domeinnaam opvraagt, zal de informatie van de DNS resolver worden gehaald, van boven naar beneden.
nameserver 192.168.5.21
nameserver 192.168.5.22
nameserver 8.8.8.8
search hwdomain.io
Sla het bestand op en sluit het als je klaar bent.
Voer vervolgens het onderstaande commando uit om een DNS-hulpprogramma op de cliëntmachine te installeren. In dit voorbeeld is de client machine een Ubuntu systeem, dus installeren we DNS utility met het apt commando zoals hieronder.
sudo apt install dnsutils bind9-utils
Nadat je het DNS-hulpprogramma op je systeem hebt geïnstalleerd, kun je beginnen met het controleren van alle DNS-records van de cliëntmachine.
Voer het onderstaande dig commando uit om de domeinnaam“hwdomain.io” en“mail.hwdomain.io” te controleren. En je zou moeten zien dat“hwdomain.io” is omgezet naar het server IP adres“192.168.5.100“, terwijl het subdomein“mail.hwdomain.io” wordt afgehandeld door het server IP adres“192.168.5.120“.
dig hwdomain.io +short
dig hwdomain.io
dig mail.hwdomain.io +short
dig mail.hwdomain.io
Voer vervolgens het dig commando uit zoals hieronder om de mail handler voor de domeinnaam “hwdomain.io” te controleren. En je zou de uitvoer moeten krijgen dat de“mail.hwdomain.io” mail afhandelt voor het hoofddomein“hwdomain.io”.
dig hwdomain.io MX +short
dig hwdomain.io MX
Nu kun je ook de configuratie van de omgekeerde zone voor je domeinnaam controleren met het commando nslookup.
Voer het onderstaande nslookup commando uit om de reverse DNS voor enkele IP adressen te controleren en te verifiëren.
Nu zou je moeten zien dat het IP adres“192.168.5.21” is omgedraaid naar de naamserver“ns1.hwdomain.io“, het IP adres“192.168.5.22” is omgedraaid naar de naamserver“ns2.hwdomain.io“, en het IP-adres“192.168.5.100” wordt omgekeerd naar de hoofddomeinnaam“hwdomain.io“, en tenslotte wordt het IP-adres“192.168.5.120” omgekeerd naar het subdomein“mail.hwdomain.io“.
nslookup 192.168.5.21
nslookup 192.168.5.22
nslookup 192.168.5.100
nslookup 192.168.5.120
Conclusie
Gefeliciteerd! In deze tutorial heb je de installatie en configuratie van BIND DNS Server op Ubuntu 22.04 servers geleerd. Je hebt met succes de Master-Slave BIND DNS Server geconfigureerd met behulp van twee verschillende Ubuntu servers. Ook heb je de basiscommando’s Dig en Nslookup geleerd voor het controleren en verifiëren van DNS records en configuratie.