Bilde av Nathan Dumlao fra Unsplash
Hvis du skal ha noe form for intranet i huset, leiligheten eller hybelen din er det veldig praktisk å sett opp en lokal DNS server. På den måten slipper du å huske IP-adresser, og opplevelsen av ditt eget intranettet blir helt lik som om det var på internet. En annen fordel er at du kan ha flere websider på en webserver, så lenge websidene har forskjellige navn.
Bind9 er en gratis og populær DNS server som du relativt raskt kan sette opp på din Linux server.
Installasjon
Denne guiden tar utgangspunkt i Ubuntu server 18.04.
Start med å installere bind9, som er DNS serveren som vi skal bruke.
sudo apt install bind9
Grunnleggende DNS Server konfigurasjon
Caching only DNS server
Aller først konfigurere vi DNS serveren til å bli det som kalles en forward lookup DNS. Denne vil fungere som en caching DNS. Det vil si at hvis ikke adressen det blir spurt om finnes i denne DNS serverens register, videresendes spørringen til neste DNS server. I denne guiden setter vi den til google sin DNS server som ligger på IP-adressene 8.8.8.8 og 8.8.4.4. I virkeligheten bør du legge inn din lettleverandør sin DNS server.
Navigere til mappen hvor konfigurasjons filene ligger
cd /etc/bind
De mest grunnleggende innstillingene vi skal gjøre, blir gjort i filen named.conf.options
Denne configurasjons filen er i JSON format, derfor har ikke whitespace som mellomrom eller tab noe å si.
Aller først må vi legge inn er en ACL (Access Control List) regel. Denne kaller vi "trusted". Denne inkluderer nettverket som DNS serveren skal være på, og localhost. Det er mulig å hoppe over det å bruke ACL, men det er god praksis å begrense hvem som kan bruke en DNS server.
sudo vim named.conf.options
acl trusted{
192.168.239.0/24; //<----- ditt nettverk!!!
localhost;
};
...
Videre må vi legge inn regler for hvordan bind skal oppføre seg
...
options {
directory "/var/cache/bind";
recursion yes;
allow-recursion { trusted; }; //<---- ACL regelen vi laget
listen-on { 192.168.239.10; }; //<----- Serverens IP
allow-transfer { none; };
forwarders {
8.8.8.8;
8.8.4.4;
};
};
For å aktivere endringene må bind9 restartes.
sudo systemctl restart bind9
Brannmur oppsett
For at datamaskinene på nettverket skal få tilgang til DNS serveren må brannmur portene som DNS serveren ligger bak åpnes ut mot nettverket.
sudo ufw allow from 192.168.239.0/24 to any port 53
Kontrollere at reglene ble lagt til.
sudo ufw status
Status: active
To Action From
-- ------ ----
53 ALLOW 192.168.239.0/24
Loopkup Zones
Da er det klart til å legge inn nye filer som skal bruke til å knytte sammen domenenavn og IP-adresser. Dette gjøres i filen "named.conf.local".
sudo vim named.conf.local
I bunnen av denne filen legges disse linjene inn:
zone "home.local" {
type master;
file "/etc/bind/db.home.local";
};
zone "239.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.1";
};
Nå må du lage de to filene som du akkurat refererte til:
sudo touch db.1
sudo touch db.home.local
Vi starter med å sette opp det "normale" DNS oppsett. Altså hvilke domene navn som tilsvarer hvilke IP-adresser
sudo vim db.home.local
$TTL 86400
@ IN SOA ns.home.local. root.home.local. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;dns records on this machine goes here
@ IN NS ns.home.local.
ns IN A 192.168.239.1
www IN A 192.168.239.1
;other machines below this line
Med dette oppsettet har vi lagt til at adressene www.home.local og ftp.home.no skal peke til IP-adressen 192.168.239.1. Dette stemmer med websiden og som ligger på den webserveren, og FTP serveren jeg har på samme host.
Nå må vi sette opp "reverse DNS":
sudo vim db.1
;
; BIND reverse data file for empty rfc1918 zone
;
$TTL 86400
@ IN SOA ns.home.local. root.home.local. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS ns.
1 IN PTR ns.home.local.
1 IN PTR www.home.local.
1 IN PTR ftp.home.local
Denne listen er det motsatte av forrige fil. Her sier vi at i adressen 192.168.239.1 peker til domene navnene www.home.local og ftp.home.local.
Ved å ha begge disse filene vil datamaskiner på nettverket finne IP-adresser og domener ved å enten søke på IP-adresser, eller domene navn.
Når du restarter bind9, er den klar til bruk.
sudo systemctl restart bind9
For at du skal kunne ta i bruk den nye DNS serveren på nettverket ditt må du legge den til som DNS sever på DHCP server oppsettet på ruteren din. For at du skal kunne ta i bruk endringene må datamaskinene på nettverket kobles til og fra, så den mottar ny IP-adresse og DNS server informasjon DHCP serveren på ruteren.
Kilder og inpsirasjon:
help.ubuntu.com
www.digitalocean.com