Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
lpi2:bind [2014/02/14 18:01] ingo_wichmann [Zonendatei] |
lpi2:bind [2020/09/09 08:56] ingo_wichmann [Vorbereiten] |
||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
===== Vorbereiten ===== | ===== Vorbereiten ===== | ||
- | === CentOS 5 === | + | === CentOS 7 === |
Paket ''caching-nameserver'' deinstallieren | Paket ''caching-nameserver'' deinstallieren | ||
- | Paket ''system-config-bind'' installieren | + | === DNSSEC temporär abschalten === |
- | Mit | + | ''/etc/named.conf'' : CentOS (ab 6) |
- | system-config-bind | + | |
- | Default-Konfigurationsdateien erzeugen | + | |
- | === CentOS 6 === | + | ''/etc/bind/named.conf.options'' : Debian (ab 7) |
- | ''/etc/named.conf'' : | + | |
<file> | <file> | ||
options { | options { | ||
- | + | … | |
- | // listen-on port 53 { 127.0.0.1; }; | + | // In der Praxis ist DNSSEC eine gute Sache ... aber zum Lernen erst mal aus: |
- | // listen-on-v6 port 53 { ::1; }; | + | |
- | // allow-query { localhost; }; | + | |
dnssec-enable no; | dnssec-enable no; | ||
dnssec-validation no; | dnssec-validation no; | ||
- | #dnssec-lookaside auto; | + | dnssec-lookaside no; |
+ | … | ||
+ | } | ||
</file> | </file> | ||
(( mehr zu ''allow-query'' weiter unten im Kapitel "Bind absichern" und natürlich unter | (( mehr zu ''allow-query'' weiter unten im Kapitel "Bind absichern" und natürlich unter | ||
man named.conf | man named.conf | ||
)) | )) | ||
+ | named-checkconf | ||
+ | rndc reconfig | ||
+ | |||
+ | == testen == | ||
+ | Eine mit DNSSEC signierte Zone abfragen: | ||
+ | |||
+ | Ein validierender Nameserver sollte bei einer signierten Zone liefern: | ||
+ | dig www.posteo.de @1.1.1.1 | ||
+ | |||
+ | <file> | ||
+ | flags: … ad | ||
+ | </file> | ||
+ | |||
+ | Unser Nameserver sollte das ad-Flag nicht setzen. | ||
+ | |||
====== eigene Zonen in bind verwalten ====== | ====== eigene Zonen in bind verwalten ====== | ||
===== Vorwärts-Zone ===== | ===== Vorwärts-Zone ===== | ||
==== Zonendatei ==== | ==== Zonendatei ==== | ||
- | Unter Debian und CentOS empfehlen wir ein entsprechendes Verzeichnis ''master'' für die Zonendateien noch anlegen ((oder man legt die Zonendateien direkt in /var/cache/bind bzw. /var/named ab)): | + | Unter Debian und CentOS empfehlen wir ein entsprechendes Verzeichnis ''master'' für die Zonendateien noch anzulegen ((oder man legt die Zonendateien direkt in /var/cache/bind bzw. /var/named ab)): |
Debian : | Debian : | ||
mkdir /var/cache/bind/master | mkdir /var/cache/bind/master | ||
- | CentOS 5 : | + | CentOS (ab 5) : |
mkdir /var/named/master | mkdir /var/named/master | ||
- | ''/var/named/master/linuxhotel.de'' : ( CentOS 5 ) | + | ''/var/named/master/linuxhotel.de'' : ( CentOS ab 5 ) |
- | ''/var/lib/named/master/linuxhotel.de'' : ( SuSE 10.0) | + | ''/var/lib/named/master/linuxhotel.de'' : ( SuSE ab 10.0) |
- | ''/var/cache/bind/master/linuxhotel.de'' : ( Debian 3.1 ) | + | ''/var/cache/bind/master/linuxhotel.de'' : ( Debian ab 3.1 ) |
<file> | <file> | ||
- | $TTL 2h | + | $ORIGIN . ; hilft Tippfehler (fehlender . am Ende) zu vermeiden |
+ | $TTL 2m ; time to live: 2 Minuten, default wäre 2 Tage | ||
linuxhotel.de. IN SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. ( | linuxhotel.de. IN SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. ( | ||
1 ; Seriennummer | 1 ; Seriennummer | ||
- | 3h ; refresh | + | 1h20m ; refresh / 1 Stunde 20 Minuten |
- | 1h ; retry | + | 1d12h ; retry / 1,5 Tage |
- | 1w ; expire | + | 1w ; expire / 1 Woche |
- | 1h ; negative ttl | + | 60s ; negative ttl / 60 Sekunden |
) | ) | ||
Zeile 71: | Zeile 82: | ||
=== Zonendatei überprüfen === | === Zonendatei überprüfen === | ||
- | == CentOS 5 == | + | == CentOS (ab 5) == |
- | named-checkzone linuxhotel.de. /var/named/master/linuxhotel.de | + | named-checkzone -D linuxhotel.de. /var/named/master/linuxhotel.de |
- | == SuSE 10.0 == | + | == SuSE (ab 10.0) == |
- | named-checkzone linuxhotel.de. /var/lib/named/master/linuxhotel.de | + | named-checkzone -D linuxhotel.de. /var/lib/named/master/linuxhotel.de |
- | == Debian 3.1 == | + | == Debian (ab 3.1) == |
- | named-checkzone linuxhotel.de. /var/cache/bind/master/linuxhotel.de | + | named-checkzone -D linuxhotel.de. /var/cache/bind/master/linuxhotel.de |
+ | |||
+ | ==== Konfigurationsdatei ==== | ||
+ | ''/etc/named.conf'' : ( SuSE 10.2 ) | ||
+ | |||
+ | ''/etc/named.conf'' : ( CentOS ab 5 ) | ||
+ | |||
+ | ''/etc/bind/named.conf.local'' : ( Debian ab 5.0 ) | ||
+ | <file> | ||
+ | zone "linuxhotel.de" { | ||
+ | type master; | ||
+ | file "master/linuxhotel.de"; | ||
+ | }; | ||
+ | </file> | ||
+ | |||
+ | Konfigdatei und eingetragene Zonen überprüfen: | ||
+ | named-checkconf -z | ||
+ | |||
+ | === bind die Änderung mitteilen === | ||
+ | rndc reconfig | ||
+ | oder | ||
+ | |||
+ | openSuSE, centos (ab 7) | ||
+ | service named reload | ||
+ | |||
+ | Debian (ab 6) | ||
+ | service bind9 reload | ||
+ | |||
+ | ==== testen ==== | ||
+ | host peter.linuxhotel.de 127.0.0.1 | ||
+ | dig peter.linuxhotel.de @127.0.0.1 any | ||
==== Zonendatei (kurze Schreibweise) ==== | ==== Zonendatei (kurze Schreibweise) ==== | ||
Zeile 84: | Zeile 125: | ||
<file> | <file> | ||
$TTL 2h | $TTL 2h | ||
- | @ IN SOA notebook20 root.notebook20 ( | + | @ IN SOA notebook20 root.notebook20 2 3h 1h 1w 1h |
- | 1 ; Seriennummer | + | |
- | 3h ; refresh | + | |
- | 1h ; retry | + | |
- | 1w ; expire | + | |
- | 1h ; negative ttl | + | |
- | ) | + | |
; Nameserver: | ; Nameserver: | ||
Zeile 113: | Zeile 148: | ||
=== Zonendatei überprüfen === | === Zonendatei überprüfen === | ||
- | == CentOS 5 == | + | == CentOS == |
named-checkzone -D linuxhotel.de. /var/named/master/linuxhotel.de | named-checkzone -D linuxhotel.de. /var/named/master/linuxhotel.de | ||
- | == SuSE 10.0 == | + | == SuSE == |
named-checkzone -D linuxhotel.de. /var/lib/named/master/linuxhotel.de | named-checkzone -D linuxhotel.de. /var/lib/named/master/linuxhotel.de | ||
- | == Debian 3.1 == | + | == Debian == |
named-checkzone -D linuxhotel.de. /var/cache/bind/master/linuxhotel.de | named-checkzone -D linuxhotel.de. /var/cache/bind/master/linuxhotel.de | ||
- | ==== Konfigurationsdatei ==== | + | === bind die Änderung mitteilen === |
- | ''/etc/named.conf'' : ( SuSE 10.2 ) | + | rndc reload linuxhotel.de |
- | + | ||
- | ''/etc/named.conf'' : ( CentOS ) | + | |
- | + | ||
- | ''/etc/bind/named.conf.local'' : ( Debian 5.0 ) | + | |
- | <file> | + | |
- | zone "linuxhotel.de" { | + | |
- | type master; | + | |
- | file "master/linuxhotel.de"; | + | |
- | }; | + | |
- | </file> | + | |
- | + | ||
- | Konfigdatei und eingetragene Zonen überprüfen: | + | |
- | named-checkconf -z | + | |
- | + | ||
- | bind die Änderung mitteilen: | + | |
- | + | ||
- | SuSE 11.1 : | + | |
- | /etc/init.d/named reload | + | |
- | + | ||
- | ==== testen ==== | + | |
- | host peter.linuxhotel.de 127.0.0.1 | + | |
- | dig peter.linuxhotel.de @127.0.0.1 any | + | |
===== Rückwärts-Zone ===== | ===== Rückwärts-Zone ===== | ||
Zeile 176: | Zeile 189: | ||
=== testen === | === testen === | ||
- | named-checkzone linuxhotel.de /var/lib/named/master/linuxhotel.de | + | == CentOS (ab 5) == |
- | named-checkzone 1.168.192.in-addr.arpa. /var/lib/named/master/1.168.192.in-addr.arpa | + | named-checkzone -D linuxhotel.de. /var/named/master/linuxhotel.de |
+ | named-checkzone -D 1.168.192.in-addr.arpa. /var/named/master/1.168.192.in-addr.arpa | ||
+ | |||
+ | == SuSE (ab 10.0) == | ||
+ | named-checkzone -D linuxhotel.de. /var/lib/named/master/linuxhotel.de | ||
+ | named-checkzone -D 1.168.192.in-addr.arpa. /var/lib/named/master/1.168.192.in-addr.arpa | ||
+ | |||
+ | == Debian (ab 3.1) == | ||
+ | named-checkzone -D linuxhotel.de. /var/cache/bind/master/linuxhotel.de | ||
+ | named-checkzone -D 1.168.192.in-addr.arpa. /var/cache/bind/master/1.168.192.in-addr.arpa | ||
==== Konfigurationsdatei ==== | ==== Konfigurationsdatei ==== | ||
Zeile 192: | Zeile 214: | ||
</file> | </file> | ||
=== testen === | === testen === | ||
- | named-checkconf | + | named-checkconf -z |
- | ==== testen ==== | + | === bind die Änderung mitteilen === |
- | SuSE 11.1 : | + | rndc reconfig |
- | /etc/init.d/named reload | + | ==== testen ==== |
- | | + | |
host 192.168.1.222 127.0.0.1 | host 192.168.1.222 127.0.0.1 | ||
dig -x 192.168.1.222 @127.0.0.1 | dig -x 192.168.1.222 @127.0.0.1 | ||
- | |||
- | ===== Interne Anfragen abfangen ===== | ||
- | Todo: leere Zonendateien für [[http://linuxhotel.de/teilnehmerinfo/seminar-info.html#Netzwerk|private IP-Adressen]] anlegen | ||
- | |||
- | === Debian 5.0 === | ||
- | Bei debian 5.0 gibt es dazu | ||
- | ''/etc/bind/zones.rfc1918'', | ||
- | ''/etc/bind/db.empty'' | ||
- | und einen Eintrag in ''/etc/bind/named.conf.local'': | ||
- | <file> | ||
- | //include "/etc/bind/zones.rfc1918"; | ||
- | </file> | ||
- | |||
- | Muß man je nach eigenen verwendeten privaten Netzen anpassen. | ||
- | |||
- | === openSuSE 11.4 === | ||
- | ( noch nicht fertig ) | ||
- | |||
- | ''/etc/named.d/zones.rfc1918.conf'' : | ||
- | <file> | ||
- | zone "10.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | |||
- | zone "16.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "17.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "18.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "19.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "20.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "21.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "22.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "23.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "24.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "25.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "26.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "27.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "28.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "29.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "30.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | zone "31.172.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | |||
- | zone "168.192.in-addr.arpa" { type master; file "/var/lib/named/db.empty"; }; | ||
- | </file> | ||
- | |||
- | ''/var/lib/named/db.empty'' : | ||
- | <file> | ||
- | ; 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. | ||
- | </file> | ||
===== Zonendateien mit nsupdate bearbeiten ===== | ===== Zonendateien mit nsupdate bearbeiten ===== | ||
Zeile 311: | Zeile 273: | ||
''~/.bashrc'' : | ''~/.bashrc'' : | ||
- | <file> | + | <code bash> |
function zvi { | function zvi { | ||
cd /var/cache/bind/master | cd /var/cache/bind/master | ||
Zeile 320: | Zeile 282: | ||
cd - | cd - | ||
} | } | ||
- | </file> | + | </code> |
====== bind als slave einrichten ====== | ====== bind als slave einrichten ====== | ||
+ | ===== Master konfigurieren ===== | ||
Erst müssen die Slave-Nameserver in der Zonendatei des Masters eingetragen werden: | Erst müssen die Slave-Nameserver in der Zonendatei des Masters eingetragen werden: | ||
<file> | <file> | ||
Zeile 335: | Zeile 298: | ||
=== testen: funktioniert der Master === | === testen: funktioniert der Master === | ||
== openSuSE 12.3 == | == openSuSE 12.3 == | ||
- | cd /var/lib/named/master | + | named-checkzone -i local -D linuxhotel.de /var/lib/named/master/linuxhotel.de |
- | named-checkzone -i local -D linuxhotel.de linuxhotel.de | + | |
rndc reload linuxhotel.de | rndc reload linuxhotel.de | ||
tail /var/log/messages | tail /var/log/messages | ||
dig @127.0.0.1 linuxhotel.de NS | dig @127.0.0.1 linuxhotel.de NS | ||
+ | == debian 8 == | ||
+ | named-checkzone -i local -D linuxhotel.de /var/cache/bind/master/linuxhotel.de | ||
+ | rndc reload linuxhotel.de | ||
+ | journalctl -eu bind9 | ||
+ | dig @127.0.0.1 linuxhotel.de NS | ||
- | ==== Slave konfigurieren ==== | + | ===== Slave konfigurieren ===== |
Vorraussetzung: Master funktioniert | Vorraussetzung: Master funktioniert | ||
dig @<IP-des-Masters> linuxhotel.de AXFR | dig @<IP-des-Masters> linuxhotel.de AXFR | ||
Zeile 378: | Zeile 345: | ||
masters { 192.168.1.220; }; | masters { 192.168.1.220; }; | ||
}; | }; | ||
+ | </file> | ||
+ | |||
+ | Zonendateien im Binärformat kann man mit: | ||
+ | named-checkzone -D -f raw linuxhotel.de slave/linuxhotel.de | ||
+ | anzeigen. Wenn man die Zonenfiles **lieber im Textformat statt im Binärformat** haben will, kann man in die Zone eintragen: | ||
+ | <file txt> | ||
+ | zone "…" { | ||
+ | … | ||
+ | masterfile-format text; | ||
+ | … | ||
</file> | </file> | ||
Zeile 386: | Zeile 363: | ||
==== testen: funktioniert der Slave? ==== | ==== testen: funktioniert der Slave? ==== | ||
- | === OpenSuSE 12.3 === | + | == Debian == |
+ | named-checkconf -z | ||
+ | rndc reconfig | ||
+ | journalctl -eu bind9 | ||
+ | ls /var/cache/bind/slave/{linuxhotel.de,1.168.192.in-addr.arpa} | ||
+ | dig @127.0.0.1 linuxhotel.de AXFR | ||
+ | |||
+ | == OpenSuSE 12.3 == | ||
+ | named-checkconf -z | ||
rcnamed restart | rcnamed restart | ||
tail /var/log/messages | tail /var/log/messages | ||
Zeile 392: | Zeile 377: | ||
dig @127.0.0.1 linuxhotel.de AXFR | dig @127.0.0.1 linuxhotel.de AXFR | ||
- | ====== Zonentransfer signieren ====== | + | ==== testen: funktionieren alle verantwortlichen Nameserver? ==== |
- | Schlüsselpaar erstellen: (( Todo: eigentlich sollte das immer mit -n HOST funktionieren. Aber ich hatte Situationen, wo ich | + | dig @141.1.1.1 linuxhotel.de +nssearch |
- | dnssec-keygen -a hmac-md5 -b 128 -n ZONE zonentransfer | + | |
- | benutzt habe )) | + | |
- | cd | + | |
- | dnssec-keygen -a hmac-md5 -b 512 -n HOST zonentransfer | + | |
- | + | ||
- | Dadurch werden zwei Dateien erstellt: | + | |
- | ls Kzonentransfer.+157+* | + | |
- | + | ||
- | Die darin angegebenen Schlüssel und Verschlüsselungsverfahren müssen in die Konfigurationsdateien von master und slave eingetragen werden. | + | |
- | + | ||
- | ===== master ===== | + | |
- | ''/etc/named.conf'' : ( CentOS 5, Debian 5.0 ) | + | |
- | <file> | + | |
- | key "zonentransfer" { | + | |
- | algorithm hmac-md5; | + | |
- | secret "Ur7+TU8m24L9q24AWgNd4g=="; | + | |
- | }; | + | |
- | + | ||
- | zone "linuxhotel.de" { | + | |
- | type master; | + | |
- | file "master/linuxhotel.de"; | + | |
- | allow-transfer { key zonentransfer; }; | + | |
- | }; | + | |
- | + | ||
- | zone "1.168.192.in-addr.arpa" { | + | |
- | type master; | + | |
- | file "master/1.168.192.in-addr.arpa"; | + | |
- | allow-transfer { key zonentransfer; }; | + | |
- | }; | + | |
- | </file> | + | |
- | + | ||
- | ==== testen ==== | + | |
- | Todo: Achtung: unsicher da so der Schlüssen in ''ps ax'' Ausgabe und in der history landet. Mit ''-k'' wäre sicherer | + | |
- | dig @192.168.53.103 signed03.dnslab.org AXFR -y "zonentransfer:Ur7+TU8m24L9q24AWgNd4g==" | + | |
- | + | ||
- | ===== slave ===== | + | |
- | ''/etc/named.conf'' : ( CentOS 5, Debian 5.0 ) | + | |
- | <file> | + | |
- | key "zonentransfer" { | + | |
- | algorithm hmac-md5; | + | |
- | secret "Ur7+TU8m24L9q24AWgNd4g=="; | + | |
- | }; | + | |
- | + | ||
- | server 192.168.1.220 { | + | |
- | keys { zonentransfer; }; | + | |
- | }; | + | |
- | + | ||
- | zone "linuxhotel.de" { | + | |
- | type slave; | + | |
- | file "slaves/linuxhotel.de"; | + | |
- | masters { 192.168.1.220; }; | + | |
- | }; | + | |
- | + | ||
- | zone "1.168.192.in-addr.arpa" { | + | |
- | type slave; | + | |
- | file "slaves/1.168.192.in-addr.arpa"; | + | |
- | masters { 192.168.1.220; }; | + | |
- | }; | + | |
- | </file> | + | |
====== Subdomains delegieren ====== | ====== Subdomains delegieren ====== | ||
===== Übergeordneter DNS ===== | ===== Übergeordneter DNS ===== | ||
- | ''/etc/named.conf.local'' : ( Debian 5.0 ) | + | ''/etc/named.conf.local'' : ( Debian ab 5.0 ) |
- | ''/etc/named.conf'' : ( CentOS 5 ) | + | ''/etc/named.conf'' : ( CentOS ab 5 ) |
<file> | <file> | ||
zone "linuxhotel.de" IN { | zone "linuxhotel.de" IN { | ||
Zeile 466: | Zeile 392: | ||
}; | }; | ||
</file> | </file> | ||
+ | |||
+ | :!: Fallstrick: __Unbedingt an **forwarders** denken!__ Und **alle** dnssec Optionen ausschalten :!: | ||
''/var/named/master'' : ( CentOS 5 ) | ''/var/named/master'' : ( CentOS 5 ) | ||
Zeile 472: | Zeile 400: | ||
ns1.sub05.linuxhotel.de. IN A 192.168.150.110 | ns1.sub05.linuxhotel.de. IN A 192.168.150.110 | ||
</file> | </file> | ||
+ | |||
+ | Fallstrick: Seit bind 9.9 werden die empty zones automatisch "aufgefüllt". Dadurch werden aber PTR-RR für nicht eigene Netze nicht mehr geforwarded :!: | ||
+ | |||
+ | ''/etc/named.conf.options'' : ( Debian 8 ) | ||
+ | <file> | ||
+ | disable-empty-zone "168.192.in-addr.arpa"; | ||
+ | </file> | ||
+ | |||
+ | Das muss auch auf jedem Delegaten konfiguriert werden :!: | ||
named-checkzone -i local -D linuxhotel.de /var/named/master/linuxhotel.de | named-checkzone -i local -D linuxhotel.de /var/named/master/linuxhotel.de |