Jak stworzyć lokalny serwer DNS w Linuksie za pomocą Bind9 lub dnsmasq – konfiguracja krok po kroku
🌐 Jak stworzyć lokalny serwer DNS w Linuksie za pomocą Bind9 lub dnsmasq – konfiguracja krok po kroku
- przyspieszyć rozwiązywanie nazw,
- stworzyć własne aliasy domenowe dla serwerów LAN (np.
nas.local,dev.lab), - filtrować, przekierowywać lub blokować ruch DNS (np. blokada reklam),
- działać offline w środowiskach testowych.
W tym poradniku pokażę dwa rozwiązania:
- Bind9 – pełnoprawny, zaawansowany serwer DNS (strefy, rekurencja, forwarding),
- dnsmasq – lekki i prosty serwer DNS (często używany w domowych routerach, OpenWRT itp.).
🧱 Opcja 1: Konfiguracja lokalnego DNS z Bind9 (Debian/Ubuntu)
📦 Krok 1: Instalacja Bind9
sudo apt update
sudo apt install bind9 bind9-utils -y
⚙️ Krok 2: Plik strefy lokalnej domeny
Załóżmy, że chcesz obsługiwać lokalną domenę lab.local.
Utwórz plik strefy:
sudo nano /etc/bind/db.lab.local
Przykład zawartości:
$TTL 604800
@ IN SOA lab.local. admin.lab.local. (
2025080501 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns.lab.local.
ns IN A 192.168.1.1
www IN A 192.168.1.100
nas IN A 192.168.1.200
🧭 Krok 3: Zdefiniuj strefę w named.conf.local
sudo nano /etc/bind/named.conf.local
Dodaj:
zone "lab.local" {
type master;
file "/etc/bind/db.lab.local";
};
🔄 Krok 4: Restart i sprawdzenie
sudo systemctl restart bind9
sudo named-checkconf
sudo named-checkzone lab.local /etc/bind/db.lab.local
📍 Krok 5: Ustaw klienta (np. w /etc/resolv.conf)
nameserver 127.0.0.1
Teraz zapytanie:
dig nas.lab.local
zwróci IP 192.168.1.200.

💡 Bonus: Forwardowanie zapytań do zewnętrznych DNS
W named.conf.options:
forwarders {
8.8.8.8;
1.1.1.1;
};
🧱 Opcja 2: Konfiguracja lokalnego DNS z dnsmasq (prostsze)
📦 Krok 1: Instalacja dnsmasq
sudo apt install dnsmasq -y
⚙️ Krok 2: Edycja pliku /etc/dnsmasq.conf
Dodaj:
domain=lab.local
local=/lab.local/
address=/nas.lab.local/192.168.1.200
address=/dev.lab.local/192.168.1.150
listen-address=127.0.0.1
🔄 Krok 3: Restart usługi
sudo systemctl restart dnsmasq
Sprawdź:
dig nas.lab.local @127.0.0.1
✅ Kiedy wybrać Bind9, a kiedy dnsmasq?
| Funkcja | Bind9 | dnsmasq |
|---|---|---|
| Pełne strefy DNS | ✅ | ❌ |
| Forwarding DNS | ✅ | ✅ |
| Łatwość konfiguracji | ❌ | ✅ |
| Obsługa DHCP | ❌ | ✅ |
| Filtrowanie nazw, reklamy | ❌ | ✅ (np. z listą hostów) |
| Wydajność w dużych sieciach | ✅ | ❌ |
🔒 Bezpieczeństwo
- Zablokuj port 53 dla świata (jeśli DNS tylko lokalny)
- Ogranicz
listen-addresstylko do127.0.0.1lub lokalnej sieci - W Bind9 możesz dodać reguły ACL
🔁 Inne zastosowania lokalnego DNS
- nazwy kontenerów Docker/Kubernetes w sieci lokalnej,
- lokalne laboratoria testowe,
- środowiska offline (np. przemysł, wojsko, R&D),
- lokalna kontrola nad DNS bez zależności od zewnętrznych serwerów.
🏁 Podsumowanie
Stworzenie lokalnego serwera DNS:
✔️ przyspiesza rozwiązywanie nazw,
✔️ pozwala tworzyć własne aliasy i testowe domeny,
✔️ działa w środowiskach bez internetu,
✔️ zapewnia lepszą kontrolę nad ruchem DNS.






