Thema: Konfiguration des DNS-Server

[1.0] [2.0] [3.0] [3.1] [4.0] [5.0]
2. Konfiguration  (überarbeitete Version des Beitrages)

2.1 Vorbereitende Maßnahmen:
Einträge in /etc/hosts Datei:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 dns-server

192.168.0.99 dns-server.intern.lan dns-server

/etc/hostname
dns-server.intern.lan

Test:   Status -> ok
hostname -f      — > dns-server.intern.lan
hostname -d     — > intern.lan

Diese Information liefert uns die /etc/hosts bzw. /etc/hostname Datei.
Ferner erfahren wir durch den Befehl named -v die Version des DNS-Servers.
Aktuelle Version zur Zeit: BIND 9.8.4-rpz2+rl005.12-P1

Einträge in /etc/resolv.conf Datei:
domain intern.lan
search intern.lan
nameserver 192.168.0.99

Als nächstes editieren wir die Datei: nano /etc/bind/named.conf.options und aktivieren :
 //forwarders {
//               0.0.0.0;
 //        };

durch folgende Änderung:
forwarders {
          // 192.168.0.99;      <— feste IP des Rechners, auf dem DNS Server laufen soll
         // Google Public Domain Server

         8.8.8.8;
         8.8.4.4;

         // T-Online Public Server
        217.237.150.97;       # Köln
        217.237.148.70;       # Dortmund
        217.237.151.97 ;      #  München
};

Als letze vorbereitende Maßnahme editieren wir noch : nano /etc/default/bind9

# run resolvconf?
RESOLVCONF=no
# startup options for the server
OPTIONS=“-4 -u bind“    <—– der Eintrag -4 wurde ergänzt

Da im Hausinternen-Netzwerk in Regel noch IP4 zum Einsatz kommt, kann mach die Option um den Parameter ‚-4‘ ergänzen, hierdurch wird die Performance der späteren Names-Auflösung beschleunigt.

2.2 Grunddateien :
Jetzt endlich kommt man zur eigentlichen Konfiguration. Dafür sind folgende Dateien von Bedeutung:

1. Datei
/etc/bind/named.conf.local

In dieser Datei müssen Sie ihre eigenen (usereigenen) festgelegten Zonen-Dateien dem DNS-Server bekannt gemacht werden.

Bei mir sieht die Datei wie folgt aus:
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include „/etc/bind/zones.rfc1918“;

// Eigene Zonendefinition
// Zone zur Auflösung ‚Name nach IP-Adresse‘ ‚forward‘
zone „intern.lan“ {                                 <— Domainname ‚localdomain.local $ORIGIN
   type master;
   file „/etc/bind/db.intern.lan“;     <— Datei: db.Dateiname und Pfad
};

// Zone zur Auflösung ‚IP-Adresse nach Name‘ ‚reverse‘
zone „0.168.192.in-addr.arpa“ {                      <—- IP-Adressen Kreis      $ORIGIN
   type master;
   file „/etc/bind/db.ver.0.168.192“;                <—- Datei: db.Dateiname und Pfad
};

Die Filenamen und Pfadangaben sind frei wählbar, sie sollten aber der Lesbarkeit wegen sinnvolle Namen innehaben.
Der Übersicht wegen ist es besser eine Verzeichnis „/etc/bind/zone“ anzulegen und dort die eigenen Zonendateien abzulegen.
z.B.:

file „/etc/bind/zones/db.intern.lan“;

2. Datei
/etc/bind/db.intern.lan

Diese Datei muss aus einer ‚Dummy-Datei‘ erstellt werden. Dazu kopieren Sie die Datei ‚db.empty‘ und vergeben ihr den neuen Namen ‚db.localdomain‘.

db.localdomain hat folgenden Inhalt:

; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE – it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;

$TTL    86400
@       IN      SOA     localhost. root.localhost. (
                                                1          ; Serial
                               604800        ; Refresh
                                 86400         ; Retry
                           2419200         ; Expire
                               86400 )       ; Negative Cache TTL
;
@       IN      NS      localhost.

Folgende Einträge bzw. Änderungen sind vorzunehmen.

$TTL    86400
;                                |      DomainName    |  Mailadresse Veranwortliche |
@       IN      SOA     dns-server.intern.lan. root.intern.lan. (
                                               20170209         ; Serial
                                                    604800         ; Refresh
                                                      86400          ; Retry
                                                 2419200         ; Expire
                                                     86400 )        ; Negative Cache TTL
;
@                                    IN      NS   dns-server.intern.lan.

; ————————————————–
; – Ab hier die RechnerNamen eintragen –
; ————————————————–
dns-server    IN     A                  192.168.0.99
ns-1                   IN     CNAME    dns-server

; ————————————–
; – NAS Geräte
; ————————————–
server-01       IN      A                     192.168.0.245
srv-1                  IN      CNAME      server-01

server-02       IN      A                    192.168.0.243
srv-2                  IN      CNAME     server-02

; ————————————–
; – Drucker 
; ————————————–

MFC-7460DN       IN     A                 192.168.0.50
drucker-1                  IN    CNAME    MFC-7460DN
HL-2250DN            IN     A                 192.168.0.51
drucker-2                  IN    CNAME   HL-2250DN
Konica-2430DL   IN     A                  192.168.0.53
color-1                         IN    CNAME    Konica-2430DL

; ————————————–
; – Web-Anwendungen –
; ————————————–

lpt-rechnung       IN   A     192.168.0.200    
rvu-rechnung      IN   A     192.168.0.200
time                           IN   A     192.168.0.200

3. Datei
/etc/bind/db.rev.0.168.192

Diese Datei sollte aus einer ‚Dummy-Datei‘ erstellt werden. Dazu kopieren die Datei ‚db.empty‘ in ‚db.0.168.192‘ um.

Ich bin etwas bequem und habe als Vorlage für die ‚Reverse‘ Datei die ‚Forward‘ Datei ‚db.intern.lan verwendet und die entsprechenden Anpassungen vorgenommen.
Im Normalfall sollte hier alle Einträge auftauchen, wie sie man auch in Forward-Datei findet Aber es macht z.B.: meiner Meinung wenig Sinn für die Drucker oder NAS Geräte entsprechende Einträge vorzunehmen .
Gleiches gilt auch für die Webanwendungen, da der Web-Server die Programme über „virtuelle Hosteinträge“ verwaltet und eine „Reverse-Auflösung“ zwar immer alle möglichen Namen der Web-Server zurück liefert aber der Web-Server mit dieser Information bei den „virtuellen Hosts“ nichts anfangen kann.
Aber der Rechner-Name bzw. die IP-Adresse des Server, worauf der Dienst „Web-Server“ läuft, sollte unbedingt dort eingetragen werden.
So sieht meine Datei aus:

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA dns-server.intern.lan. root.localhost. (
                                                                          2                         ; Serial
                                                                         604800         ; Refresh
                                                                         86400            ; Retry
                                                                         2419200      ; Expire
                                                                        604800 )      ; Negative Cache TTL
;
@                     IN         NS               dns-server.intern.lan.
99                  IN         PTR           dns-server.intern.lan.

; ————————————–
; – Server –
; ————————————–
250     IN     PTR   gw-firewall.
199      IN    PTR   email.
249     IN    PTR    ns-2.
; ————————————–
; – NAS Geräte –
; ————————————–
245     IN   PTR   server-01.
243     IN   PTR   server-02.
247     IN   PTR   server-03.
247     IN   PTR   lpt-rechnung.
247     IN   PTR   rvu-rechnung.
247     IN   PTR   time.

TESTEINGABEN:
1. Test
server ~ $ nslookup 192.168.0.247
Server: 192.168.0.99
Address: 192.168.0.99#53

247.0.168.192.in-addr.arpa name = time.
247.0.168.192.in-addr.arpa name = rvu-rechnung.
247.0.168.192.in-addr.arpa name = server-03.
247.0.168.192.in-addr.arpa name = lpt-rechnung.

2. Test
server ~ $ nslookup server-02
Server: 192.168.0.99
Address: 192.168.0.99#53

server-02.intern.lan canonical name = server-02.intern.lan.
Name: server-02.intern.lan
Address: 192.168.0.243

3.Test
server ~ $ nslookup srv-1 
Server: 192.168.0.99
Address: 192.168.0.99#53

srv-1.intern.lan canonical name = server-01.intern.lan.
Name: server-01.intern.lan
Address: 192.168.0.245

4. Test
server ~ $ ping srv-1
PING server-01.intern.lan (192.168.0.245) 56(84) bytes of data.
64 bytes from server-01 (192.168.0.245): icmp_req=1 ttl=64 time=0.346 ms
64 bytes from server-01 (192.168.0.245): icmp_req=2 ttl=64 time=0.279 ms

5. Test
server ~ $dig 192.168.247

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> 192.168.247
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 32068
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;192.168.247. IN A

;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017021101 1800 900 604800 86400

;; Query time: 43 msec
;; SERVER: 192.168.0.99#53(192.168.0.99)
;; WHEN: Sat Feb 11 20:47:30 2017
;; MSG SIZE rcvd: 104

Hier geht es weiter:   [Erläuterungen zu Konfiguration]