Rocky ns

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Installation

DATEN

Parameter Wert Erläuterung
VM Name ns Name der VM
Disk 20GB Vorgabe übernehmen
CPU 4 Cores Kerne
Ram 4 GB Speicher
Netzwerk (NIC) DMZ Interface-Zuweisung in VirtualBox
Admin root Passwort: radler
User kit Passwort: kit
IP 10.88.2XX.21/24 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 10.88.2XX.1 GATEWAY
NS 192.168.HS.88 Resolver
FQDN ns.it2XX.int Fully Qualified Domain Name
DOM it2XX.int Domain Name

Hostname

  • hostnamectl set-hostname FQDN

Netzwerk

  • nmcli con mod enp0s3 ipv4.addresses IP/CIDR
  • nmcli con mod enp0s3 ipv4.gateway GW
  • nmcli con mod enp0s3 ipv4.dns NS
  • nmcli con mod enp0s3 ipv4.method manual
  • nmcli con mod enp0s3 ipv4.dns-search DOM
  • nmcli con mod enp0s3 connection.autoconnect yes
  • nmcli con up enp0s3

Hintergrund

Die Verbindungen findet ihr hier
  • DIR: /etc/NetworkManager/system-connections/
In unserem Fall
  • cat /etc/NetworkManager/system-connections/enp0s3.nmconnection
[connection]
id=enp0s3
uuid=40ff96e5-0c0d-31de-9bf0-f75da265425b
type=ethernet
autoconnect-priority=-999
interface-name=enp0s3
timestamp=1784278716

[ethernet]

[ipv4]
address1=192.168.3.127/24
dns=192.168.20.1;
dns-search=it.int;
gateway=192.168.3.254
method=manual

[ipv6]
addr-gen-mode=eui64
method=auto

[proxy]

DNS – BIND9 auf Rocky Linux

Der Nameserver übernimmt im Labor die Namensauflösung für die gesamte Infrastruktur. Er läuft in der DMZ und ist sowohl aus dem LAN als auch aus dem WAN erreichbar. Rekursive Anfragen – also Anfragen nach Domains die er nicht selbst kennt – leitet er an den Forwarder im Schulungsnetz weiter.

Installation

  • dnf install -y bind bind-utils

Dienst steuern

  • systemctl enable --now named
  • systemctl restart named
  • systemctl status named

Konfiguration

/etc/named.conf

Die zentrale Konfigurationsdatei steuert das Verhalten des Nameservers
auf welchen Interfaces er lauscht, wer ihn befragen darf und welche Zonen er kennt.
  • vi /etc/named.conf
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { none; };
        forwarders      { 192.168.HS.88; };
        directory       "/var/named";
        allow-query     { any; };
        allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 127.0.0.1; };
        allow-transfer  { 127.0.0.1; };
        dnssec-validation no;
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
        include "/etc/crypto-policies/back-ends/bind.config";
        empty-zones-enable no;

};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/named.conf.local";


Erklärungen

listen-on port 53 { any; };
Der Nameserver lauscht auf allen Interfaces – so ist er sowohl aus der DMZ als auch von außen erreichbar.
listen-on-v6 port 53 { none; };
IPv6 ist im Kurslab nicht im Einsatz – der Server lauscht bewusst auf keinem IPv6-Interface.
forwarders { 192.168.HS.88; };
Anfragen die der Server nicht selbst beantworten kann werden an den Forwarder im Schulungsnetz weitergegeben.
directory "/var/named";
Arbeitsverzeichnis von BIND – hier liegen die Zonendateien sowie (falls aktiviert) Log- und Statistikdateien relativ dazu.
allow-query { any; };
Jeder darf den Nameserver nach seinen Zonen befragen – er ist öffentlich erreichbar.
allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 127.0.0.1; };
Nur interne Netze dürfen rekursive Anfragen stellen – verhindert dass der Server als offener Resolver missbraucht wird.
allow-transfer { 127.0.0.1; };
Zonentransfers (AXFR) sind nur lokal erlaubt – kein Secondary DNS im Labor.
dnssec-validation no;
DNSSEC-Validierung ist deaktiviert – vereinfacht den Laborbetrieb.
pid-file "/run/named/named.pid";
Speicherort der Prozess-ID von named – wird u.a. von systemd zur Prozessüberwachung genutzt.
session-keyfile "/run/named/session.key";
Schlüssel für dynamische Updates (z.B. durch lokale Tools), automatisch von BIND verwaltet.
include "/etc/crypto-policies/back-ends/bind.config";
Bindet die systemweite Crypto-Policy von Rocky Linux ein – steuert zentral, welche Verschlüsselungsalgorithmen BIND verwenden darf.
logging { channel default_debug { file "data/named.run"; severity dynamic; }; };
Definiert einen Debug-Kanal in die Datei /var/named/data/named.run.
Welchen Debug-Level brauche ich wann?
rndc trace 1 reicht für grobe Ereignisse (Zone-Loads, Transfers); rndc trace 3 zeigt Query-Details wie AXFR/IXFR-Verlauf – höhere Level (5+) sind meist zu viel Rauschen fürs Kurslab.
zone "." IN { type hint; file "named.ca"; };
Die Root-Hints-Zone – Liste der Root-DNS-Server, Ausgangspunkt für rekursive Auflösung ins Internet.
include "/etc/named.rfc1912.zones";
Standard-Zonendefinitionen von Rocky (z.B. localhost, reverse loopback) – Basis-Zonen, die praktisch immer gebraucht werden.
include "/etc/named.root.key";
Enthält den DNSSEC-Trust-Anchor für die Root-Zone – bei dnssec-validation no ohne Wirkung, aber Standard-Include.
include "/etc/named.conf.local";
Hier werden die eigenen Zonen (z.B. it2XX.int) eingebunden – der eigentliche Kursinhalt.

/etc/named.conf.local

Eigene Zonen werden nicht in named.conf eingetragen sondern in einer separaten Datei – übersichtlicher und leichter zu warten.
  • vi /etc/named.conf.local
zone "it2XX.int" {
        type master;
        file "it2XX.int";
        };

zone "2XX.88.10.in-addr.arpa" {
        type master;
        file "2XX.88.10.in-addr.arpa";
        };

Konfiguration prüfen

Syntaxfehler in named.conf werden damit gefunden bevor named neu gestartet wird
  • named-checkconf

Zonendateien

Die Zonendateien liegen unter /var/named/. SELinux erwartet sie dort – andere Pfade führen zu Berechtigungsfehlern.

Forward-Zone

Die Forward-Zone löst Hostnamen in IP-Adressen auf.
  • vi /var/named/it2XX.int
$TTL 86400      ; 1 Tag
@                       IN SOA  ns.it2XX.int. technik.it2XX.int. (
                               2025062501 ; serial
                               14400      ; refresh (4 hours)
                               3600       ; retry (1 hour)
                               3600000    ; expire (5 weeks 6 days 16 hours)
                               300        ; minimum (5 min)
                               )
                        NS      ns.it2XX.int.

fw                      IN      A       10.88.2XX.1
ns                      IN      A       10.88.2XX.21
www                     IN      A       10.88.2XX.11
ldap                    IN      A       10.88.2XX.31
container               IN      A       10.88.2XX.39
kuma                    IN      A       10.88.2XX.39
hedgedoc                IN      A       10.88.2XX.39

Check

  • named-checkzone it2XX.int /var/named/it2XX.int
zone it2XX.int/IN: loaded serial 2025062501
OK

Reverse-Zone

Die Reverse-Zone löst IP-Adressen in Hostnamen auf – wird z.B. von SSH und Logging-Diensten verwendet.
  • vi /var/named/2XX.88.10.in-addr.arpa
$TTL 86400
@                       IN SOA  ns.it2XX.int. technik.it2XX.int. (
                               2025062501 ; serial
                               14400      ; refresh (4 hours)
                               3600       ; retry (1 hour)
                               3600000    ; expire (5 weeks 6 days 16 hours)
                               300        ; minimum (5 min)
                               )
                        NS      ns.it2XX.int.

1                       IN      PTR     fw.it2XX.int.
21                      IN      PTR     ns.it2XX.int.
11                      IN      PTR     www.it2XX.int.
31                      IN      PTR     ldap.it2XX.int.
39                      IN      PTR     container.it2XX.int.

Check

  • named-checkzone 2XX.88.10.in-addr.arpa /var/named/2XX.88.10.in-addr.arpa
zone 2XX.88.10.in-addr.arpa/IN: loaded serial 2025062501
OK

Firewall

Checken welche Dienste frei sind.
  • firewall-cmd --list-all --zone=public
DNS muss auf dem ns-Server selbst freigegeben werden
  • firewall-cmd --permanent --zone=public --add-service=dns
  • firewall-cmd --reload

Neustart

  • systemctl restart named

Finaler Check

Forward-Zone
  • dig @127.0.0.1 it2XX.int -t axfr
Reverse-Zone
  • dig @127.0.0.1 2XX.88.10.in-addr.arpa -t axfr
Einzelne Einträge testen
  • dig @127.0.0.1 www.it2XX.int
  • dig @127.0.0.1 -x 10.88.2XX.11

Resolver auf dem ns-Server setzen

  • nmcli con mod enp0s3 ipv4.dns 127.0.0.1
  • nmcli con mod enp0s3 ipv4.dns-search it2XX.int
  • nmcli con up enp0s3

Logs

Laufende Logs
  • journalctl -fu named
Letzte 20 Zeilen
  • journalctl -n 20 -u named

Ports prüfen

  • ss -lntpu | grep named

Auf der Firewall auch den Nameserver umstellen

  • nmcli con mod enp0s3 ipv4.dns 10.88.2XX.21
  • nmcli con mod enp0s3 ipv4.dns-search it2XX.int
  • nmcli con up enp0s3