DNS
Instalacja
sudo apt update
sudo apt install bind9 bind9utils bind9-doc
Stworzenie strefy
sudo mkdir -p /etc/bind/zones
sudo nano /etc/bind/zones/db.wp.pl
$TTL 86400
@ IN SOA ns1.wp.pl. admin.wp.pl. (
2025040601 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.wp.pl.
ns1 IN A 192.168.1.1
@ IN A 192.168.1.1
Dodaj strefę do konfiguracji BIND
sudo nano /etc/bind/named.conf.local
Dodaj na końcu:
zone "wp.pl" {
type master;
file "/etc/bind/zones/db.wp.pl";
};
Włącz forwardowanie innych domen
sudo nano /etc/bind/named.conf.options
Upewnij się, że wygląda mniej więcej tak (dodaj forwarders):
options {
directory "/var/cache/bind";
// Dla LAN
listen-on { 127.0.0.1; 192.168.1.100; }; // <-- IP serwera
allow-query { any; };
recursion yes;
allow-recursion { any; };
forwarders {
8.8.8.8;
1.1.1.1;
};
dnssec-validation auto;
};
Sprawdź konfigurację i restart
sudo named-checkconf
sudo named-checkzone wp.pl /etc/bind/zones/db.wp.pl
Jeśli nie ma błędów, restartuj serwer:
sudo systemctl restart bind9
Test z innego urządzenia
nslookup wp.pl 192.168.1.100
Powinno zwrócić:
Name: wp.pl
Address: 192.168.1.1
Dodawanie strefy *.dom
Utwórz plik strefy dom
sudo nano /etc/bind/zones/db.dom
$TTL 86400
@ IN SOA ns1.dom. admin.dom. (
2025040601 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.dom.
ns1 IN A 192.168.1.1
router IN A 192.168.1.1
cl1 IN A 192.168.1.100
cl2 IN A 192.168.1.101
Dodaj strefę dom do konfiguracji BIND
sudo nano /etc/bind/named.conf.local
Dodaj na końcu:
zone "dom" {
type master;
file "/etc/bind/zones/db.dom";
};
Sprawdź poprawność i restartuj BIND
sudo named-checkzone dom /etc/bind/zones/db.dom
sudo named-checkconf
Jeśli OK — restartuj BIND:
sudo systemctl restart bind9
Przetestuj z innego komputera w sieci LAN
Jeśli urządzenie w sieci ma ustawione DNS na Twój serwer (np. 192.168.1.100), przetestuj:
nslookup cl1.dom 192.168.1.100
nslookup router.dom 192.168.1.100
Opróżnianie cachu DNS
Jeśli korzystasz z systemd-resolved (standardowo w Ubuntu):
sudo systemd-resolve --flush-caches
Możesz sprawdzić ilość wpisów:
sudo systemd-resolve --statistics
## Wildcard dla *.dom
Edytuj strefę db.dom:
sudo nano /etc/bind/zones/db.dom
Dodaj na końcu:
* IN A 192.168.1.1
To sprawi, że każde cokolwiek.dom, którego nie ma w strefie, będzie wskazywać na 192.168.1.1.
Strefa odwrotna (PTR)
Zakładamy, że adresy są z sieci 192.168.1.0/24 Utwórz plik odwrotnej strefy
sudo nano /etc/bind/zones/db.192.168.1
Wklej:
$TTL 86400
@ IN SOA ns1.dom. admin.dom. (
2025040601 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.dom.
1 IN PTR router.dom.
100 IN PTR cl1.dom.
101 IN PTR cl2.dom.
Dodaj strefę odwrotną do konfiguracji BIND
Edytuj:
sudo nano /etc/bind/named.conf.local
Dodaj:
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.1";
};
Restart i testy
sudo named-checkzone dom /etc/bind/zones/db.dom
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/db.192.168.1
sudo named-checkconf
Jeśli OK — restartuj:
sudo systemctl restart bind9
Testy PTR i wildcardów
Z innego komputera w sieci:
Wildcard
nslookup test123.dom 192.168.1.100
→ powinien wskazać 192.168.1.1
PTR
nslookup 192.168.1.100 192.168.1.100
→ powinien zwrócić cl1.dom