DNS aufsetzen
Der DNS-Dienst wird auf einem Debian 11 aufgesetzt.
Serverdaten Ausgangszustand.
Betriebssystem: Debian 11
Servername: ddf
IP-Adresse: 172.16.0.10
Netmask: 255.255.252.0
Gateway: 172.16.0.1
DNS: 8.8.8.8 (Nach der DNS Installation und Konfiguration wird auf 172.16.0.10 geändert)
DNS-Suffix: schule.wlan

Der DNS-Server bind9 wird installiert.
root@ddf:~# apt install bind9

Wir wechseln zu dem Ordner /etc/bind. In diesem Ordner erstellen wir zuerst 2 neue Dateien db.schule.wlan und db.0.16.172
Wichtig; Will man die unterstehenden Inhalte der Dateien kopieren und in Linux Dateien einfügen, nutzen Sie bitte den Microsoft Edge Browser. Mit anderen könnte man auch undefinierte Zeichen übertragen, die nicht sichtbar sind. Oder tragen Sie es einfach von Hand ein. Man könnte auch WinSCP nutzen.
Wichtig; Will man die unterstehenden Inhalte der Dateien kopieren und in Linux Dateien einfügen, nutzen Sie bitte den Microsoft Edge Browser. Mit anderen könnte man auch undefinierte Zeichen übertragen, die nicht sichtbar sind. Oder tragen Sie es einfach von Hand ein. Man könnte auch WinSCP nutzen.
root@ddf:~# cd /etc/bind
root@ddf:~# nano /etc/bind/db.schule.wlan
root@ddf:~# nano /etc/bind/db.0.16.172
root@ddf:~# nano /etc/bind/db.schule.wlan
root@ddf:~# nano /etc/bind/db.0.16.172

Der Inhalt der Datei /etc/bind/db.schule.wlan kann so ähnlich aussehen wie unten. Einige Einträge müssen hier selbstverständlich angepasst werden, einige entfernt und nach Bedarf einige sollte man dazu einfügen.
;; db.schule.wlan
;; Forwardlookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; NX (TTL Negativ Cache)
@ IN NS ddf.schule.wlan.
ddf IN A 172.16.0.10
localhost IN A 127.0.0.1
client1 IN A 172.16.0.20
rechner1 IN A 172.16.1.200
mail IN A 172.16.2.201
rechner2 IN CNAME mail
rechner3 IN A 172.16.3.12
drucker4 IN A 172.16.3.200
; Mail server MX record
schule.wlan. IN MX 10 mail.schule.wlan.
; wenn es gebraucht wird
$INCLUDE "/etc/bind/name-clients.conf";
;; Forwardlookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; NX (TTL Negativ Cache)
@ IN NS ddf.schule.wlan.
ddf IN A 172.16.0.10
localhost IN A 127.0.0.1
client1 IN A 172.16.0.20
rechner1 IN A 172.16.1.200
mail IN A 172.16.2.201
rechner2 IN CNAME mail
rechner3 IN A 172.16.3.12
drucker4 IN A 172.16.3.200
; Mail server MX record
schule.wlan. IN MX 10 mail.schule.wlan.
; wenn es gebraucht wird
$INCLUDE "/etc/bind/name-clients.conf";

Die Revers Datei /etc/bind/db.0.16.172 wird bearbeitet. Hier werden benötigte Geräte eingetragen, die in der IP-Adresse die dritte Stelle, in unserem Fall die 0 haben.
;; db.0.16.172
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
20 IN PTR client1.schule.wlan.
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
20 IN PTR client1.schule.wlan.

Die Reversdatei /etc/bind/db.1.16.172 wird bearbeitet. Hie kommen alle Einträge bei denn in der IP-Adresse die 3 Stelle die 1 ist z.B. der Rechner1 172.16.1.200
;; db.1.16.172
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
200 IN PTR rechner1.schule.wlan.
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
200 IN PTR rechner1.schule.wlan.

Die Reversdatei /etc/bind/db.2.16.172 wird bearbeitet. Hie kommen alle Einträge bei denen in der IP-Adresse die dritte Stelle die 2 ist z.B. der mailserver 172.16.2.201
;; db.2.16.172
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
201 IN PTR mail.schule.wlan.
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
201 IN PTR mail.schule.wlan.

Die Reversdatei /etc/bind/db.3.16.172 wird bearbeitet. Hie kommen alle Einträge bei denen in der IP-Adresse die dritte Stelle die 3 ist z.B. der drucker4 172.16.3.200
;; db.3.16.172
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
12 IN PTR rechner3.schule.wlan.
200 IN PTR drucker4.schule.wlan.
;; Reverselookupzone für domainname
;;
$TTL 2D
@ IN SOA ddf.schule.wlan. root.schule.wlan. (
2006032201 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache
@ IN NS ddf.schule.wlan.
12 IN PTR rechner3.schule.wlan.
200 IN PTR drucker4.schule.wlan.

Die erstellten Dateien müssen in die Konfiguration aufgenommen werden. Die Datei /etc/bind/named.conf.local wird zu diesem Zweck bearbeitet.
//
// Do any local configuration here
//
zone "schule.wlan" {
type master;
file "/etc/bind/db.schule.wlan";
allow-update { none; }; // Since this is the primary DNS
};
zone "0.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.0.16.172";
allow-update { none; }; // Since this is the primary DNS
};
zone "1.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.1.16.172";
allow-update { none; }; // Since this is the primary DNS
};
zone "2.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.2.16.172";
allow-update { none; }; // Since this is the primary DNS
};
zone "3.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.3.16.172";
allow-update { none; }; // Since this is the primary DNS
};
// Do any local configuration here
//
zone "schule.wlan" {
type master;
file "/etc/bind/db.schule.wlan";
allow-update { none; }; // Since this is the primary DNS
};
zone "0.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.0.16.172";
allow-update { none; }; // Since this is the primary DNS
};
zone "1.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.1.16.172";
allow-update { none; }; // Since this is the primary DNS
};
zone "2.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.2.16.172";
allow-update { none; }; // Since this is the primary DNS
};
zone "3.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.3.16.172";
allow-update { none; }; // Since this is the primary DNS
};

Wir wollen nur die IP4 nutzen, deshalb müssen wir in der Datei /etc/default/named die entsprechende
Option "-4 -u bind" setzen.
Option "-4 -u bind" setzen.
#
# run resolvconf?
RESOLVCONF=no
# startup options for the server
# OPTIONS="-u bind"
OPTIONS="-4 -u bind"
# run resolvconf?
RESOLVCONF=no
# startup options for the server
# OPTIONS="-u bind"
OPTIONS="-4 -u bind"

Es ist uns noch eine Datei geblieben, die wir bearbeiten müssen, das ist die /etc/bind/named.conf.options. In der Datei können wir bestimmte ACLs setzen, was für Netze dürfen auf den DNS-Server zugreifen. Standardmäßig sind alle Netze. Wir müssen auch einen externen DNS-Server definieren. So ca. würde dann die Datei aussehen.
acl goodclients { // Name kann frei gewählt werden
192.168.2.0/24; // Lokales Netz (IP-Adressbereich anpassen)
172.16.0.0/22;
# 10.0.10.45 // einzelner Client im Netz
localhost; // localhost sollte immer eingetragen sein
localnets;
};
options {
directory "/var/cache/bind";
allow-query { goodclients; }; //ACL-Name von oben
forwarders {
8.8.8.8;
};
// allow-recursion {
// any;
// };
// Die dnssec-validation auf no setzen
// dnssec-validation auto;
dnssec-validation no;
listen-on-v6 { any; };
};
192.168.2.0/24; // Lokales Netz (IP-Adressbereich anpassen)
172.16.0.0/22;
# 10.0.10.45 // einzelner Client im Netz
localhost; // localhost sollte immer eingetragen sein
localnets;
};
options {
directory "/var/cache/bind";
allow-query { goodclients; }; //ACL-Name von oben
forwarders {
8.8.8.8;
};
// allow-recursion {
// any;
// };
// Die dnssec-validation auf no setzen
// dnssec-validation auto;
dnssec-validation no;
listen-on-v6 { any; };
};

Jetzt können wir den DNS Dienst named neu starten, mit status überprüfen, ob alles richtig läuft.
root@ddf:~# systemctl restart named
root@ddf:~# systemctl status named
root@ddf:~# systemctl status named

Bis jetzt haben wir einen externen DNS auf diesem Server genutzt. Das können wir selbstverständlich nach der Installation und Konfiguration eines eigenen DNS-Servers in System umstellen. Wir bearbeiten die Dateien /etc/network/interfaces und /etc/resolv.conf. Die IP-Adressen des DNS Eintrags ändern wir auf 172.16.0.10. So würde z.B. die /etc/resolv.conf aussehen.
search schule.wlan
nameserver 172.16.0.10
nameserver 172.16.0.10

Mit dem letzten Schritt überprüfen wir, ob alles richtig läuft. Wir nutzen die Befehle ping um die Namensauflösung zu überprüfen und nslookup um rückwärts zu suchen
root@ddf:~# ping mail
root@ddf:~# nslookup 172.16.2.201
root@ddf:~# nslookup 172.16.2.201
Ausgabe bei nslookup, in unserem Fall würde es so aussehen
201.2.16.172.in-addr.arpa name = mail.schule.wlan.
Die Konfiguration des DNS-Servers ist abgeschlossen, voll funktionsfähig und kann für alle Clients in diesem Netz genutzt werden, auch für Clients, die die IP-Adresse per DHCP beziehen.