Przejdź do głównej zawartości

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