Linux - Netzwerk und Serveradminstration DNS: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(59 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
  
  
= Eigener DNS Server =
 
{{#drawio:5102-dns}}
 
 
=Pseudo Top-Level-Domain=
 
=Pseudo Top-Level-Domain=
 
{{#drawio:Pseudo Top-Level-Domain}}
 
{{#drawio:Pseudo Top-Level-Domain}}
Zeile 14: Zeile 12:
 
* Dieser zeigt auf den entsprechenden DNS-Server der Domäne, sodass die Zonen nur einmal definiert werden müssen
 
* Dieser zeigt auf den entsprechenden DNS-Server der Domäne, sodass die Zonen nur einmal definiert werden müssen
 
== Vorbereitungen ==
 
== Vorbereitungen ==
* VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
+
* VirtualBox Server-Vorlage klonen
 
* Der Host soll im ''DMZ''-Netzwerk liegen
 
* Der Host soll im ''DMZ''-Netzwerk liegen
 
* statische IP-Adresse nach dem Netzwerkplan setzen (''/etc/network/interfaces'')
 
* statische IP-Adresse nach dem Netzwerkplan setzen (''/etc/network/interfaces'')
* Hostname ändern zu ''ns''
 
* SSH-Server anpassen
 
 
* SSH-Schlüssel des Kit Hosts für User ''kit''  hinterlegen
 
* SSH-Schlüssel des Kit Hosts für User ''kit''  hinterlegen
 
=== Netzkonfiguration DNS-Server (DMZ) ===
 
=== Netzkonfiguration DNS-Server (DMZ) ===
Zeile 33: Zeile 29:
 
| '''GW''' || 10.88.2XX.1 || GATEWAY  
 
| '''GW''' || 10.88.2XX.1 || GATEWAY  
 
|-
 
|-
| '''NS''' || 192.168.6.88 || Resolver  
+
| '''NS''' || 192.168.HS.88 || Resolver  
 
|-
 
|-
 
| '''FQDN''' || ns.it2XX.int || Fully Qualified Domain Name
 
| '''FQDN''' || ns.it2XX.int || Fully Qualified Domain Name
Zeile 43: Zeile 39:
 
;Anpassen des Templates
 
;Anpassen des Templates
 
*[[Anpassen des Debian Templates]]
 
*[[Anpassen des Debian Templates]]
 +
oder
 +
*debian-setup.sh -f ns.it2XX.int -a 10.88.2XX.21/24 -g 10.88.2XX.1 -n 192.168.HS.88
  
 
+
==JumpHost==
==Installation==
+
;Auf dem KIT Host anfügen
*apt install bind9
+
*vim ~/.ssh/config
 +
Host <span style="color:red">'''SHORT'''</span>
 +
  Hostname <span style="color:red">'''IP'''</span>
 +
  ProxyJump kit@fw
 +
;PubKey Übertragung
 +
*ssh-copy-id <span style="color:red">'''SHORT'''</span>
 +
Danach könnt ihr euch mit '''ssh''' <span style="color:red">'''SHORT'''</span> passswortlos einlogen
  
 
=DNS Umsetzung=
 
=DNS Umsetzung=
Zeile 71: Zeile 75:
 
===Hier kommen die eignen Zonen rein===
 
===Hier kommen die eignen Zonen rein===
 
  include "/etc/bind/named.conf.local";
 
  include "/etc/bind/named.conf.local";
===Hier die Default Zonen===
+
===Hier werden die Root Nameserver konfigurtiert===
  include "/etc/bind/named.conf.default-zones";
+
  include "/etc/bind/named.conf.root-hints";
  
 
==/etc/bind/named.conf.options==
 
==/etc/bind/named.conf.options==
 
===Berechtigungen und Einschränkungen===
 
===Berechtigungen und Einschränkungen===
<pre>
+
{{BindOptions}}
options {
 
  directory "/var/cache/bind";
 
  forwarders { <DNSGW>; };
 
  allow-query { 0.0.0.0/0; };
 
  allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 10.2XX.1.0/24; 127.0.0.1; };
 
  allow-transfer {127.0.0.1; };
 
  dnssec-validation no;
 
  listen-on-v6 { none; };
 
  listen-on { any; };
 
};
 
</pre>
 
 
====Erklärungen====
 
====Erklärungen====
 +
;directory "/var/cache/bind";
 +
*Das ist das Basisverzeichnis der Zonen-Datein
 +
;forwarders { <DNSGW>; };
 +
*Wir richten alle Anfragen die wir nicht selbst beantworten können and er Forwarder
 +
;empty-zones-enable no;
 +
*Deaktiviert die eingebauten leeren Zonen für private IP-Bereiche (RFC 1918), damit PTR-Anfragen an den Forwarder weitergeleitet werden anstatt lokal mit NXDOMAIN beantwortet zu werden.
 
;allow-query { 0.0.0.0/0; };
 
;allow-query { 0.0.0.0/0; };
 
*Diese Rechner dürfen den Nameserver nach dem von ihm verwalteten Zonen befragen.
 
*Diese Rechner dürfen den Nameserver nach dem von ihm verwalteten Zonen befragen.
Zeile 95: Zeile 94:
 
;allow-transfer {127.0.0.1; };
 
;allow-transfer {127.0.0.1; };
 
*Diese Rechner dürfen einen axfr Abfrage durchführen.
 
*Diese Rechner dürfen einen axfr Abfrage durchführen.
 +
;listen-on-v6 { none; };
 +
*Wir schalten IPv6 ab
 +
;listen-on { any; };
 +
*Wir lauschen an allen Schnittstellen
  
 
=Testen=
 
=Testen=
Zeile 102: Zeile 105:
  
 
=Konfigurations=
 
=Konfigurations=
==/etc/bind/named.conf.default-zones==
+
==/etc/bind/named.conf.root-hints==
 
<pre>
 
<pre>
#Standardzonen
+
// prime the server with knowledge of the root servers
 
zone "." {
 
zone "." {
  type hint;
+
type hint;
  file "/usr/share/dns/root.hints";
+
file "/usr/share/dns/root.hints";
};
 
zone "localhost" {
 
  type master;
 
  file "/etc/bind/db.local";
 
};
 
zone "127.in-addr.arpa" {
 
  type master;
 
  file "/etc/bind/db.127";
 
};
 
zone "0.in-addr.arpa" {
 
  type master;
 
  file "/etc/bind/db.0";
 
};
 
zone "255.in-addr.arpa" {
 
  type master;
 
  file "/etc/bind/db.255";
 
 
};
 
};
 
</pre>
 
</pre>
 +
 
==/etc/bind/named.conf.local==
 
==/etc/bind/named.conf.local==
 
<pre>
 
<pre>
 
  //Standardmässig leer
 
  //Standardmässig leer
 
  //Hier werden die sogenanten Zonen angelegt.
 
  //Hier werden die sogenanten Zonen angelegt.
  zone "it2xx.int" {
+
  zone "it2XX.int" {
 
         type master;
 
         type master;
         file "it2xx.int";
+
         file "it2XX.int";
 
         };
 
         };
   zone "2xx.88.10.in-addr.arpa" {
+
   zone "2XX.88.10.in-addr.arpa" {
 
         type master;
 
         type master;
         file "2xx.88.10.in-addr.arpa";
+
         file "2XX.88.10.in-addr.arpa";
 
       };
 
       };
 
</pre>
 
</pre>
 +
====Erklärungen====
 +
;zone "it2XX.int" {
 +
*Die beschreibt den authoritiven Bereich den ihr verwaltet
 +
;type master;
 +
*Wir befinden uns auf primären Nameserver
 +
;file "it2XX.int";
 +
*In dieser Datei werden die Zonendaten konfiguriert. Der Pfad ist relativ zur '''directory''' Direktive.
 +
;};
 +
*Abschluss des authoritiven Bereich.
  
 
=Konfigurationsverzeichnis=
 
=Konfigurationsverzeichnis=
Zeile 145: Zeile 142:
 
=Forward Zonen Datei ohne Secundary DNS=
 
=Forward Zonen Datei ohne Secundary DNS=
 
*Die Zonendatei enthält die Informationen zu den Adressen, und sieht folgendermaßen aus:
 
*Die Zonendatei enthält die Informationen zu den Adressen, und sieht folgendermaßen aus:
*vi /var/cache/bind/it2xx.int
+
*vi /var/cache/bind/it2XX.int
<pre>
+
{{it2XX.int}}
$TTL 300        ; 5 minutes
 
@                      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)
 
                              86400      ; minimum (1 day)
 
                              )
 
                      NS      ns.it2xx.int.
 
                      MX 10  mail.it2xx.int.   
 
fw                    IN      A      10.88.2XX.1
 
ns                    IN      A      10.88.2XX.21
 
sftp                  IN      A      10.88.2XX.3
 
ntp                    IN      A      10.88.2XX.4
 
dhcp       IN      A      172.26.2XX.2 
 
smb       IN      A      10.2XX.1.2 
 
ldap       IN      A      10.2XX.1.3 
 
</pre>
 
  
 
=Check=
 
=Check=
*named-checkzone  it213.int /var/cache/bind/it213.int  
+
*named-checkzone  it2XX.int /var/cache/bind/it2X.int  
  zone it213.int/IN: loaded serial 2011090204
+
  zone it2XX.int/IN: loaded serial 2011090204
 
  OK
 
  OK
  
 
=Reverse Zonen Datei=
 
=Reverse Zonen Datei=
 
*vi /var/cache/bind/2XX.88.10.in-addr.arpa
 
*vi /var/cache/bind/2XX.88.10.in-addr.arpa
$TTL 1     
+
{{2XX.88.10.in-addr.arpa}}
@                      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)
 
                                86400      ; minimum (1 day)
 
                                )
 
                        IN      NS      ns.it2XX.int.
 
1                      IN      PTR    fw.it2XX.int.
 
21                    IN      PTR    ns.it2XX.int.
 
3                      IN      PTR    sftp.it2XX.int.
 
4                      IN      PTR    ntp.it2XX.int.
 
  
 
=Check=
 
=Check=
Zeile 196: Zeile 163:
  
 
=Finaler Check=
 
=Finaler Check=
 +
Asynchronous Full Zone Transfer
 
;Zone
 
;Zone
 
*dig @127.0.0.1 it213.int -t axfr
 
*dig @127.0.0.1 it213.int -t axfr
Zeile 201: Zeile 169:
 
*dig @127.0.0.1  213.88.10.in-addr.arpa  -t axfr
 
*dig @127.0.0.1  213.88.10.in-addr.arpa  -t axfr
  
=ändern der /etc/resolv.conf=
+
=ändern der /etc/network/interfaces=
 +
dns-nameserver '''127.0.0.1'''
 +
;Danach aktivieren
 +
*ifdown enp0s3 && ifup enp0s3
 +
;Kontrolle
 +
*cat /etc/resolv.conf
 +
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
 +
#    DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 
  nameserver 127.0.0.1
 
  nameserver 127.0.0.1
  search it2xx.int
+
  search it213.int
 +
 
 +
=Status=
 +
*systemctl status named
 +
 
 
=Logs=
 
=Logs=
 
;Aktualisierte Log von named
 
;Aktualisierte Log von named
Zeile 209: Zeile 188:
 
;Die letzten 20 Log Zeilen vom named
 
;Die letzten 20 Log Zeilen vom named
 
*journalctl -n 20 -u named
 
*journalctl -n 20 -u named
 +
;Aktualisierte Log von named plus grepen nach it213
 +
*journalctl -fu named -g it213
  
 
=Sind die Ports geöffnet=
 
=Sind die Ports geöffnet=
Zeile 217: Zeile 198:
 
*[[dig]]
 
*[[dig]]
 
*[[nslookup]]
 
*[[nslookup]]
 
==DNS Aufgabe Reverse Lookup Zone LAN & SERVERS==
 
*[[DNS Linux - Netzwerk und Serveradministration - Reverse Aufgabe]]
 
=DNS Secondary Nameserver=
 
*Als Beispiel dienen die Domain it213.int und it214.int
 
==Änderungen in der /etc/bind/named.conf.options==
 
*Der Slave Nameserver muss einen Trandfer durchführen können.
 
*Er muss unter allow-transfer eingetragen werden
 
*Der Transfer erfplg im Gegensatz zu den normalen Record abfragen über TCP
 
*cat  /etc/bind/named.conf.options
 
options {
 
  directory "/var/cache/bind";
 
  forwarders { 192.168.16.88; };
 
  allow-query { any; };
 
  allow-recursion { 10.88.213.0/24; 172.26.213.0/24; 10.213.1.0/24; 127.0.0.1; };
 
  allow-transfer { 127.0.0.1; 10.88.214.21 ; };
 
  dnssec-validation no;
 
  listen-on-v6 { none; };
 
  listen-on { any; };
 
};
 
 
==Änderungen in der /etc/bind/named.conf.local==
 
*Es müssen zwei neute Zonen eingetragen.
 
*Diese werden vom Masterserver gezogen.
 
*Sie werden in einem speziellen Format auf der Platte abgelegt.
 
 
*cat  /etc/bind/named.conf.local
 
zone "it214.int" {
 
    type slave;
 
    masters { 10.88.214.21; };
 
    file "/var/cache/bind/it214.int";
 
};
 
 
zone "214.88.10.in-addr.arpa" {
 
    type slave;
 
    masters { 10.88.214.21; };
 
    file "/var/cache/bind/214.88.10.in-addr.arpa";
 
};
 
 
==Änderungen in /var/cache/bind/it213.int==
 
                      NS      ns.it213.int.
 
                      '''<span style="color:red">NS      ns.it214.int.</span>'''
 
 
==Änderungen in /var/cache/bind/213.88.10.in-addr.arpa==
 
                      NS      ns.it213.int.
 
                      '''<span style="color:red">NS ns.it214.int.</span>'''
 
 
==Abschluss==
 
*Wenn die Änderungen auf beiden Nameserver gemacht wurden kann man named neustarten.
 

Aktuelle Version vom 2. Juni 2026, 14:04 Uhr

Vorab Theorie


Pseudo Top-Level-Domain

Pseudo-Top-Level Domäne

  • Um die Domänen der anderen Labore aufzulösen ist ein Forwarder nötig
  • Dieser zeigt auf den entsprechenden DNS-Server der Domäne, sodass die Zonen nur einmal definiert werden müssen

Vorbereitungen

  • VirtualBox Server-Vorlage klonen
  • Der Host soll im DMZ-Netzwerk liegen
  • statische IP-Adresse nach dem Netzwerkplan setzen (/etc/network/interfaces)
  • SSH-Schlüssel des Kit Hosts für User kit hinterlegen

Netzkonfiguration DNS-Server (DMZ)

Parameter Wert Erläuterung
Netzwerk (NIC) DMZ Interface-Zuweisung in VirtualBox
IP 10.88.2XX.21 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
SHORT ns Short Name
DOM it2XX.int Domain Name
Anpassen des Templates

oder

  • debian-setup.sh -f ns.it2XX.int -a 10.88.2XX.21/24 -g 10.88.2XX.1 -n 192.168.HS.88

JumpHost

Auf dem KIT Host anfügen
  • vim ~/.ssh/config
Host SHORT
 Hostname IP
 ProxyJump kit@fw
PubKey Übertragung
  • ssh-copy-id SHORT

Danach könnt ihr euch mit ssh SHORT passswortlos einlogen

DNS Umsetzung

Installation

  • apt install bind9

Stop

  • systemctl stop named

Start

  • systemctl start named

Restart

  • systemctl restart named

Status

  • systemctl status named


Hauptkonfiguration

Standardmäßig ist die Konfiguration von bind9 auf mehrere Dateien aufgeteilt:

/etc/bind/named.conf

#Diese Datei inkludiert einfach nur die anderen 3 Dateien

Allgemeine Option zum Nameserver

include "/etc/bind/named.conf.options";

Hier kommen die eignen Zonen rein

include "/etc/bind/named.conf.local";

Hier werden die Root Nameserver konfigurtiert

include "/etc/bind/named.conf.root-hints";

/etc/bind/named.conf.options

Berechtigungen und Einschränkungen

options {
  directory "/var/cache/bind";
  forwarders { <DNSGW>; };
  allow-query { 0.0.0.0/0; };
  allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 10.2XX.1.0/24; 172.20.2XX.0; 127.0.0.1; };
  allow-transfer {127.0.0.1; };
  dnssec-validation no;
  empty-zones-enable no;
  listen-on-v6 { none; };
  listen-on { any; };
};

Erklärungen

directory "/var/cache/bind";
  • Das ist das Basisverzeichnis der Zonen-Datein
forwarders { <DNSGW>; };
  • Wir richten alle Anfragen die wir nicht selbst beantworten können and er Forwarder
empty-zones-enable no;
  • Deaktiviert die eingebauten leeren Zonen für private IP-Bereiche (RFC 1918), damit PTR-Anfragen an den Forwarder weitergeleitet werden anstatt lokal mit NXDOMAIN beantwortet zu werden.
allow-query { 0.0.0.0/0; };
  • Diese Rechner dürfen den Nameserver nach dem von ihm verwalteten Zonen befragen.
allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 10.2XX.1.0/24; 127.0.0.1; };
  • Diese Rechner dürfen den Nameserver nach Einträgen befragen die er nicht selbst beantworten kann.
allow-transfer {127.0.0.1; };
  • Diese Rechner dürfen einen axfr Abfrage durchführen.
listen-on-v6 { none; };
  • Wir schalten IPv6 ab
listen-on { any; };
  • Wir lauschen an allen Schnittstellen

Testen

  • named-checkconf

Restart

  • systemctl restart named

Konfigurations

/etc/bind/named.conf.root-hints

// prime the server with knowledge of the root servers
zone "." {
	type hint;
	file "/usr/share/dns/root.hints";
};

/etc/bind/named.conf.local

 //Standardmässig leer
 //Hier werden die sogenanten Zonen angelegt.
 zone "it2XX.int" {
        type master;
        file "it2XX.int";
        };
  zone "2XX.88.10.in-addr.arpa" {
        type master;
        file "2XX.88.10.in-addr.arpa";
      };

Erklärungen

zone "it2XX.int" {
  • Die beschreibt den authoritiven Bereich den ihr verwaltet
type master;
  • Wir befinden uns auf primären Nameserver
file "it2XX.int";
  • In dieser Datei werden die Zonendaten konfiguriert. Der Pfad ist relativ zur directory Direktive.
};
  • Abschluss des authoritiven Bereich.

Konfigurationsverzeichnis

/var/cache/bind

Forward Zonen Datei ohne Secundary DNS

  • Die Zonendatei enthält die Informationen zu den Adressen, und sieht folgendermaßen aus:
  • vi /var/cache/bind/it2XX.int
$TTL 1      
@                      IN      SOA     ns.int2XX.int. technik.it2XX.int. ( 2026060201 14400 3600 3600000  300 )
                       IN      NS      ns.it2XX.int.
                       IN      MX 10   mail.it2XX.int.     
fw                     IN      A       10.88.2XX.1
ns                     IN      A       10.88.2XX.21
sftp                   IN      A       10.88.2XX.15
proxy                  IN      A       10.88.2XX.4
mail                   IN      A       10.88.2XX.3
www                    IN      A       10.88.2XX.11
revproxy               IN      A       10.88.2XX.41
checkmk                IN      A       10.88.2XX.5 
ntp                    IN      A       10.88.2XX.17
nextcloud              IN      A       10.88.2XX.8
docker                 IN      A       10.88.2XX.9
waf                    IN      A       10.88.2XX.19
dhcp		       IN      A       172.26.2XX.2  
smb		       IN      A       10.2XX.1.2  
ldap		       IN      A       10.2XX.1.3  
kali                   IN      A       172.26.2XX.100

Check

  • named-checkzone it2XX.int /var/cache/bind/it2X.int
zone it2XX.int/IN: loaded serial 2011090204
OK

Reverse Zonen Datei

  • vi /var/cache/bind/2XX.88.10.in-addr.arpa
$TTL 1
@ 		       IN      SOA     ns.it2XX.int. technik.it2XX.int. ( 2026042701 14400 3600 3600000 86400 )
		       IN      NS      ns.it2XX.int.
1                      IN      PTR     fw.it2XX.int.
21                     IN      PTR     ns.it2XX.int.
3                      IN      PTR     mail.it2XX.int.
4                      IN      PTR     proxy.it2XX.int.
17                     IN      PTR     ntp.it2XX.int.
11                     IN      PTR     www.it2XX.int.
15                     IN      PTR     sftp.it2XX.int.
41                     IN      PTR     revproxy.it2XX.int.
5                      IN      PTR     checkmk.it2XX.int.
8                      IN      PTR     docker.it2XX.int.
9                      IN      PTR     nextcloud.it2XX.int.
19                     IN      PTR     waf.it2XX.int.

Check

  • named-checkzone 213.88.10.in-addr.arpa /var/cache/bind/213.88.10.in-addr.arpa
zone 213.88.10.in-addr.arpa/IN: loaded serial 2011090204
OK

Restart

  • systemctl restart named

Finaler Check

Asynchronous Full Zone Transfer

Zone
  • dig @127.0.0.1 it213.int -t axfr
Reverse Zone
  • dig @127.0.0.1 213.88.10.in-addr.arpa -t axfr

ändern der /etc/network/interfaces

dns-nameserver 127.0.0.1
Danach aktivieren
  • ifdown enp0s3 && ifup enp0s3
Kontrolle
  • cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search it213.int

Status

  • systemctl status named

Logs

Aktualisierte Log von named
  • journalctl -fu named
Die letzten 20 Log Zeilen vom named
  • journalctl -n 20 -u named
Aktualisierte Log von named plus grepen nach it213
  • journalctl -fu named -g it213

Sind die Ports geöffnet

  • ss -lntpu | grep named

Tests