
Postavljanje DNS servera (BIND9) na Ubuntu/Debian — šta očekivati
Ovaj deo vodiča objašnjava zašto postaviti sopstveni DNS server i šta je cilj: stabilan, siguran i testiran DNS server koji može služiti kao autoritativni nameserver za domene i/ili kao rekursivni resolver za interne mreže. “DNS server” prevodi imena u IP adrese i kritičan je infrastrukturni servis — zato konfiguracija, sigurnost i testiranje moraju biti pažljivo izvedeni.
Zašto sopstveni DNS server i kada koristiti BIND9
Pre nego što počnete, razmotrite sledeće scenarije gde sopstveni DNS server ima smisla:
- Hosting domena (autoritativni server za domain.com).
- Interni resolver za privatnu mrežu (skeptičan javni pristup).
- Testiranje DNSSEC, zapisa i delegacija u kontrolisanoj okolini.
Prednosti BIND9: široka podrška, fleksibilna konfiguracija, DNSSEC mogućnosti i bogata dokumentacija. Mana: može biti kompleksniji od lakših servera (Unbound, PowerDNS) — ali za autoritativne zone i DNSSEC je često izbor stručnjaka.
Zahtevi, priprema sistema i sigurnosne mere pre instalacije
Ovaj odeljak postavlja očekivanja i preduzima osnovne bezbednosne korake pre instalacije.
- Distribucija: Ubuntu Server 20.04/22.04 ili Debian 10/11 (naredbe su kompatibilne za obe grane; razlikuju se samo u paketima kod veoma starih verzija).
- Prava: sudo pristup ili root nalog potreban za instalaciju i uređivanje konfiguracionih fajlova.
- Portovi: DNS koristi TCP/53 i UDP/53 — planirajte firewall pravila.
- Backup: napraviti backup postojećih /etc/bind fajlova ako su već prisutni.
Osnovna provera sistema
Pre instalacije proveriti ažuriranje sistema i slobodnu veličinu diska:
# Ažuriranje paketa (Ubuntu/Debian) - zahteva sudo
sudo apt update && sudo apt upgrade -y
# Provera diska i slobodnog prostora
df -h / /var
Prva komanda preuzima ažuriranja paketa; druga prikazuje zauzeće diska. Obe zahtevaju sudo privilegije.
Instalacija BIND9 i osnovna konfiguracija fajlova
Instalacija je jednostavna, ali nakon instalacije konfiguracija fajlova zahteva pažnju. Sledeći koraci podižu BIND9 servis i pokrivaju gde se nalaze ključni fajlovi.
- Instalirati paket BIND9:
# Instalacija BIND9 (Ubuntu/Debian) - zahteva sudo
sudo apt install bind9 bind9utils bind9-doc -y
Ovaj paket instalira glavnu BIND9 uslugu, alate za testiranje (dig, rndc) i lokalnu dokumentaciju.
- Ključne lokacije konfiguracionih fajlova:
- /etc/bind/named.conf — glavna datoteka koju uključuje ostale fajlove
- /etc/bind/named.conf.options — globalne opcije (forwarders, recursion)
- /etc/bind/named.conf.local — lokalne zone (autoritativne)
- /var/cache/bind — keširane zone
Pre nego što menjate fajlove, napraviti rezervne kopije:
# Napraviti backup konfiguracije - zahteva sudo
sudo cp -a /etc/bind /etc/bind.bak.$(date +%F)
Ovaj korak štiti postojeću konfiguraciju i olakšava vraćanje ukoliko nešto pođe po zlu.
U narednom delu vodiča biće detaljno objašnjeno kako napisati i registrovati autoritativne zone, kreirati zone fajlove za domain.com, konfigurisati rekursivni resolver i testirati osnovne DNS odgovore.
Konfigurisanje autoritativnih zona i pisanje zone fajlova
Sada ćemo dodati autoritativne zone u /etc/bind/named.conf.local i napisati odgovarajuće zone fajlove. Pretpostavimo domen domain.com i mrežu 192.0.2.0/24 (dokumentacioni test-net). Prvo deklaracija zone u named.conf.local:
// /etc/bind/named.conf.local - primer
zone "domain.com" {
type master;
file "/etc/bind/db.domain.com";
allow-transfer { 198.51.100.2; }; // sekundarni NS (ako postoji)
};
zone "2.0.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.0.2";
};
Primer osnovnog zone fajla za domain.com (/etc/bind/db.domain.com). Vodite računa o pravilnom serial formatu YYYYMMDDNN:
$TTL 3600
@ IN SOA ns1.domain.com. admin.domain.com. (
2026080901 ; serial (YYYYMMDDnn)
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ; minimum TTL
)
; nameservers
IN NS ns1.domain.com.
IN NS ns2.domain.com.
; A/AAAA zapisi
ns1 IN A 192.0.2.10
ns2 IN A 198.51.100.2
www IN A 192.0.2.20
ftp IN CNAME www
; MX
@ IN MX 10 mail.domain.com.
mail IN A 192.0.2.30
Primer reverse zone (/etc/bind/db.192.0.2):
$TTL 3600
@ IN SOA ns1.domain.com. admin.domain.com. (
2026080901 ; serial
3600
1800
604800
86400
)
IN NS ns1.domain.com.
10 IN PTR ns1.domain.com.
20 IN PTR www.domain.com.
30 IN PTR mail.domain.com.
Posle izmena, obavezno proverite zone pre učitavanja:
sudo named-checkconf
sudo named-checkzone domain.com /etc/bind/db.domain.com
sudo named-checkzone 2.0.192.in-addr.arpa /etc/bind/db.192.0.2
Ako su izlazi OK, reload-ujte konfiguraciju:
sudo rndc reload
# ili
sudo systemctl reload bind9
Napomena: za javno dostupne domene ne zaboravite na delegaciju kod registra/registrara — ažurirati NS zapise i, gde je potrebno, kreirati glue zapise (host records) ako su NS u okviru istog domena.
Podešavanje rekursivnog resolvera, pristup i bezbednosna ograničenja
Ako želite i rekursivni resolver za internu mrežu, konfigurišite globalne opcije u /etc/bind/named.conf.options. Ključne stavke: allow-recursion/allow-query, listen-on, forwarders i kontrola pristupa. Primer sigurnog pristupa samo za lokalnu mrežu:
options {
directory "/var/cache/bind";
recursion yes; // omogućiti rekursiju
allow-recursion { 127.0.0.1; 192.168.1.0/24; };
allow-query { localhost; 192.168.1.0/24; };
listen-on { 127.0.0.1; 192.168.1.10; }; // IP servera u mreži
forwarders { 1.1.1.1; 8.8.8.8; };
dnssec-validation auto;
};
Ako domen treba da bude javno autoritativan, a server će biti izložen internetu, isključite rekursiju za sve (recursion no;) ili koristite BIND-ove “views” da razdvojite javnu autoritativnu i internu rekursivnu ulogu. Ograničavanje transfera zona (allow-transfer) i AXFR liste je obavezno za autoritativne servere.
Takođe podesite firewall (primer sa UFW):
sudo ufw allow proto udp to any port 53
sudo ufw allow proto tcp to any port 53
Osnovno testiranje i verifikacija DNS odgovora
Nakon reload-a, koristite alate dig/host/nslookup za verifikaciju:
– Provera A zapisa lokalno:
dig @127.0.0.1 domain.com A +short
– Provera SOA:
dig @127.0.0.1 domain.com SOA
– Provera reverse zapisa:
dig @127.0.0.1 -x 192.0.2.20 +short
– Test rekurzije iz klijenta:
dig @192.168.1.10 example.org A +short
Ako dobijate NXDOMAIN, SERVFAIL ili timeout, proverite zapise u /var/log/syslog ili systemd journal:
sudo journalctl -u bind9 -e
sudo tail -n 200 /var/log/syslog | grep named
Za proveru zone syntax i serial promena ponovo koristite named-checkzone. Ako imate sekundarni NS, proverite AXFR sa secondary-a i osigurajte da su allow-transfer/notify korektno podešeni. U sledećem delu ćemo detaljno pokriti DNSSEC potpisivanje i automatizaciju potpisivanja zona.
DNSSEC — osnovni koraci i preporuke
DNSSEC dodaje kriptografski potpis na zone kako bi se klijentima omogućila verifikacija autentičnosti odgovora. Osnovni elementi su KSK (Key Signing Key) i ZSK (Zone Signing Key). Pre postavljanja DNSSEC-a, razmotrite sledeće korake i zahteve: rezervisanje prostora za smeštaj ključeva (sa odgovarajućim permisijama), plan za rollover ključeva i testiranje potpisanih zona u kontrolisanom okruženju.
Osnovni koraci za potpisivanje zone
- Generisati ZSK i KSK pomoću dnssec-keygen ili koristiti automatsko potpisivanje BIND-a (inline-signing).
- Potpisati zonu lokalno sa dnssec-signzone ili omogućiti inline-signing u konfiguraciji zone ako želite da BIND automatski održava potpise.
- Ažurirati DS zapis kod registra (registrar) za javne domene nakon što dobijete DS vrednosti iz KSK.
- Testirati potpisanu zonu sa alatima kao što su dig +dnssec i online DNSSEC validatori.
- Planirati redovan rollover ključeva i pratiti validacione logove radi otkrivanja problema sa potpisima.
Napomena: za javne, autoritativne domene obavezno sinhronizovati promene DS zapisa kod registra pre i posle rollovera KSK-a, kako bi se izbegli prekidi u validaciji.
Održavanje, monitoring i backup
Stalno održavanje je ključno za stabilnost i sigurnost DNS servisa. Uvedite procedure za nadzor performansi, logovanje i bekap ključeva i zona. Osnovne preporuke:
- Logovanje: konfigurišite named logging (categories) i rotaciju log fajlova. Pratite syslog/journal za greške i SERVFAIL događaje.
- Monitoring: integrisati sa sistemom za nadzor (Prometheus exporter, Nagios, Zabbix) za proveru dostupnosti UDP/TCP 53, latency i SOA serial promene.
- Backup: automatski bekapovati /etc/bind, ključeve (privatne) i zone (uključujući .signed kopije). Čuvati bekape van servera i testirati restore proceduru redovno.
- Bezbednost: koristiti TSIG za AXFR/IXFR između master/secondary servera, ograničiti allow-transfer i koristiti AppArmor/SELinux profile ako su dostupni.
- Ažuriranje: redovno primenjivati sigurnosne zakrpe za BIND i OS; pratiti CVE izveštaje za ozbiljne ranjivosti.
Dobro planiran proces za backup, alerting i automatizovano testiranje nakon promena drastično smanjuje rizik od zastoja i sigurnosnih incidenata. U narednom delu (ako nastavite) možemo dodati detaljne korake za automatizaciju DNSSEC rollovera i primer TSIG konfiguracije za sigurne zone transfer-e.
