lpi2:bind
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Vorherige Überarbeitung | |||
| — | lpi2:bind [2026/03/20 15:15] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | Vorraussetzung: | ||
| + | |||
| + | ===== Vorbereiten ===== | ||
| + | === systemd-resolvd === | ||
| + | " | ||
| + | === CentOS 7 === | ||
| + | Paket '' | ||
| + | |||
| + | === DNSSEC temporär abschalten === | ||
| + | ''/ | ||
| + | |||
| + | ''/ | ||
| + | < | ||
| + | options { | ||
| + | … | ||
| + | // In der Praxis ist DNSSEC eine gute Sache ... aber im Intranet zum Lernen erst mal aus: | ||
| + | dnssec-validation no; | ||
| + | … | ||
| + | } | ||
| + | </ | ||
| + | (( mehr zu '' | ||
| + | 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 | ||
| + | |||
| + | -> '' | ||
| + | |||
| + | Unser Nameserver sollte das ad-Flag nicht setzen. | ||
| + | |||
| + | ===== eigene Zonen in bind verwalten ===== | ||
| + | ==== Vorwärts-Zone ==== | ||
| + | === Zonendatei === | ||
| + | |||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | |||
| + | <file txt linuxhotel.de> | ||
| + | $ORIGIN . ; hilft Tippfehler (fehlender . am Ende) zu vermeiden | ||
| + | $TTL 2m ; time to live: 2 Minuten, default wäre 2 Tage | ||
| + | linuxhotel.de. SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. ( | ||
| + | 1 ; Seriennummer | ||
| + | 1h20m ; refresh | ||
| + | 1d12h ; retry / 1,5 Tage | ||
| + | 1w ; expire | ||
| + | 60s ; negative ttl / 60 Sekunden | ||
| + | ) | ||
| + | |||
| + | ; Nameserver: | ||
| + | linuxhotel.de. | ||
| + | |||
| + | ; kanonische IP-Adressen: | ||
| + | notebook22.linuxhotel.de. | ||
| + | notebook05.linuxhotel.de. | ||
| + | notebook20.linuxhotel.de. | ||
| + | notebook06.linuxhotel.de. | ||
| + | notebook09.linuxhotel.de. | ||
| + | |||
| + | notebook22.linuxhotel.de. | ||
| + | notebook05.linuxhotel.de. | ||
| + | notebook20.linuxhotel.de. | ||
| + | notebook06.linuxhotel.de. | ||
| + | notebook09.linuxhotel.de. | ||
| + | |||
| + | ; Aliase: | ||
| + | peter.linuxhotel.de. | ||
| + | lothar.linuxhotel.de. | ||
| + | heribert.linuxhotel.de. | ||
| + | bjoern.linuxhotel.de. | ||
| + | admin.linuxhotel.de. | ||
| + | </ | ||
| + | |||
| + | === Zonendatei überprüfen === | ||
| + | == CentOS == | ||
| + | named-checkzone -D linuxhotel.de. / | ||
| + | |||
| + | == SuSE == | ||
| + | named-checkzone -D linuxhotel.de. / | ||
| + | |||
| + | == Debian == | ||
| + | named-checkzone -D linuxhotel.de. / | ||
| + | |||
| + | === Konfigurationsdatei === | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | < | ||
| + | zone " | ||
| + | type primary; | ||
| + | file " | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Konfigdatei und eingetragene Zonen überprüfen: | ||
| + | named-checkconf -z | ||
| + | |||
| + | === bind die Änderung mitteilen === | ||
| + | rndc reconfig | ||
| + | ((oder | ||
| + | |||
| + | openSuSE, CentOS | ||
| + | service named reload | ||
| + | |||
| + | Debian | ||
| + | service bind9 reload | ||
| + | )) | ||
| + | === im Log prüfen, ob es Fehler gab === | ||
| + | Debian | ||
| + | journalctl -eu named.service | ||
| + | |||
| + | === testen === | ||
| + | host peter.linuxhotel.de ::1 | ||
| + | dig peter.linuxhotel.de @::1 any | ||
| + | |||
| + | === Zonendatei (kürzere Schreibweise) === | ||
| + | Das Format der Zonendatei ((RFC [[rfc> | ||
| + | < | ||
| + | $TTL 2h | ||
| + | @ SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. 1999022301 1d 2h 5w 2d | ||
| + | |||
| + | ; Nameserver: | ||
| + | NS notebook20.linuxhotel.de. | ||
| + | |||
| + | ; kein Mailserver, weder empfangen (RFC 7505), noch senden: | ||
| + | MX 0 . | ||
| + | TXT " | ||
| + | |||
| + | ; kanonische IP-Adressen: | ||
| + | notebook22 | ||
| + | AAAA 2a0f: | ||
| + | notebook05 | ||
| + | AAAA 2a0f: | ||
| + | notebook20 | ||
| + | AAAA 2a0f: | ||
| + | notebook06 | ||
| + | AAAA 2a0f: | ||
| + | notebook09 | ||
| + | AAAA 2a0f: | ||
| + | |||
| + | ; Aliase: | ||
| + | peter CNAME notebook09 | ||
| + | lothar | ||
| + | heribert | ||
| + | bjoern | ||
| + | admin CNAME notebook22 | ||
| + | </ | ||
| + | |||
| + | Hier habe ich die Zeitangaben im SOA entsprechend der Empfehlungen des Ripe (( | ||
| + | https:// | ||
| + | < | ||
| + | example.com. | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | )) gewählt. | ||
| + | |||
| + | Bei jeder Änderung der Zonendatei sollte die Seriennummer hochgezählt werden. | ||
| + | |||
| + | === Zonendatei überprüfen === | ||
| + | == CentOS == | ||
| + | named-checkzone -D linuxhotel.de. / | ||
| + | |||
| + | == SuSE == | ||
| + | named-checkzone -D linuxhotel.de. / | ||
| + | |||
| + | == Debian == | ||
| + | named-checkzone -D linuxhotel.de. / | ||
| + | |||
| + | === bind die Änderung mitteilen === | ||
| + | rndc reload linuxhotel.de | ||
| + | |||
| + | ==== Rückwärts-Zone IPv4 ==== | ||
| + | === Zonendatei === | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | |||
| + | < | ||
| + | $TTL 2h | ||
| + | @ SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. 1999022301 1d 2h 5w 2d | ||
| + | |||
| + | ; Nameserver: | ||
| + | NS notebook20.linuxhotel.de. | ||
| + | |||
| + | ; kanonische IP-Adressen | ||
| + | 205.1.168.192.in-addr.arpa. IN PTR notebook05.linuxhotel.de. | ||
| + | 220.1.168.192.in-addr.arpa. IN PTR notebook20.linuxhotel.de. | ||
| + | 206.1.168.192.in-addr.arpa. IN PTR notebook06.linuxhotel.de. | ||
| + | 209.1.168.192.in-addr.arpa. IN PTR notebook09.linuxhotel.de. | ||
| + | 222.1.168.192.in-addr.arpa. IN PTR notebook22.linuxhotel.de. | ||
| + | </ | ||
| + | |||
| + | === testen === | ||
| + | == CentOS == | ||
| + | named-checkzone -D 1.168.192.in-addr.arpa. / | ||
| + | |||
| + | == SuSE == | ||
| + | named-checkzone -D 1.168.192.in-addr.arpa. / | ||
| + | |||
| + | == Debian == | ||
| + | named-checkzone -D 1.168.192.in-addr.arpa. / | ||
| + | |||
| + | === Konfigurationsdatei === | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | < | ||
| + | zone " | ||
| + | type primary; | ||
| + | file " | ||
| + | }; | ||
| + | </ | ||
| + | == Syntax der Konfigurationsdatei prüfen == | ||
| + | named-checkconf -z | ||
| + | |||
| + | == bind die Änderung mitteilen == | ||
| + | rndc reconfig | ||
| + | === testen === | ||
| + | host 192.168.1.222 ::1 | ||
| + | dig -x 192.168.1.222 @::1 | ||
| + | |||
| + | ==== Rückwärts-Zone IPv6 ==== | ||
| + | Paket: | ||
| + | * Debian (12): '' | ||
| + | === Zonendatei === | ||
| + | ipv6calc --out revnibbles.arpa --in ipv6addr 2a0f: | ||
| + | -> '' | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | |||
| + | < | ||
| + | $TTL 2h | ||
| + | @ SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. 1999022301 1d 2h 5w 2d | ||
| + | |||
| + | ; Nameserver: | ||
| + | NS notebook20.linuxhotel.de. | ||
| + | |||
| + | ; kanonische IP-Adressen | ||
| + | 2.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0. IN PTR notebook05.linuxhotel.de. | ||
| + | 2.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0. IN PTR notebook20.linuxhotel.de. | ||
| + | 2.0.6.0.0.0.0.0.0.0.0.0.0.0.0.0. IN PTR notebook06.linuxhotel.de. | ||
| + | 2.0.9.0.0.0.0.0.0.0.0.0.0.0.0.0. IN PTR notebook09.linuxhotel.de. | ||
| + | 2.2.2.0.0.0.0.0.0.0.0.0.0.0.0.0. IN PTR notebook22.linuxhotel.de. | ||
| + | </ | ||
| + | |||
| + | === testen === | ||
| + | == CentOS == | ||
| + | named-checkzone -D 0.0.6.0.1.0.0.0.0.8.4.6.f.0.a.2.ip6.arpa. / | ||
| + | |||
| + | == SuSE == | ||
| + | named-checkzone -D 0.0.6.0.1.0.0.0.0.8.4.6.f.0.a.2.ip6.arpa. / | ||
| + | == Debian == | ||
| + | named-checkzone -D 0.0.6.0.1.0.0.0.0.8.4.6.f.0.a.2.ip6.arpa. / | ||
| + | |||
| + | === Konfigurationsdatei === | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | < | ||
| + | zone " | ||
| + | type primary; | ||
| + | file " | ||
| + | }; | ||
| + | </ | ||
| + | == Syntax der Konfigurationsdatei prüfen == | ||
| + | named-checkconf -z | ||
| + | |||
| + | == bind die Änderung mitteilen == | ||
| + | rndc reconfig | ||
| + | === testen === | ||
| + | host 2a0f: | ||
| + | dig -x 2a0f: | ||
| + | |||
| + | ===== Zonendateien mit nsupdate bearbeiten ===== | ||
| + | ==== bind konfigurieren ==== | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | mit '' | ||
| + | < | ||
| + | acl " | ||
| + | 127.0.0.1; | ||
| + | }; | ||
| + | |||
| + | zone " | ||
| + | type primary; | ||
| + | allow-update { " | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | zone " | ||
| + | type primary; | ||
| + | allow-update { " | ||
| + | file " | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | oder mit '' | ||
| + | < | ||
| + | zone " | ||
| + | type primary; | ||
| + | update-policy local; | ||
| + | file " | ||
| + | }; | ||
| + | </ | ||
| + | ==== bind Konfigurationsdatei prüfen ==== | ||
| + | named-checkconf | ||
| + | |||
| + | ==== bind Schreibzugriff auf Primary-Zonendateien geben ==== | ||
| + | Debian: | ||
| + | chown bind / | ||
| + | |||
| + | ==== Testen: Eintrag hinzufügen ==== | ||
| + | für '' | ||
| + | < | ||
| + | nsupdate <<EOT | ||
| + | |||
| + | server localhost | ||
| + | |||
| + | update add notebook23.linuxhotel.de 43200 IN A 192.168.1.223 | ||
| + | |||
| + | update add 223.1.168.192.in-addr.arpa 43200 IN PTR notebook23.linuxhotel.de | ||
| + | |||
| + | EOT | ||
| + | </ | ||
| + | |||
| + | für '' | ||
| + | < | ||
| + | nsupdate -l <<EOT | ||
| + | |||
| + | update add notebook23.linuxhotel.de 43200 IN A 192.168.1.223 | ||
| + | |||
| + | update add 223.1.168.192.in-addr.arpa 43200 IN PTR notebook23.linuxhotel.de | ||
| + | |||
| + | EOT | ||
| + | </ | ||
| + | |||
| + | ==== Trotz nsupdate Zonen mit Editor bearbeiten ==== | ||
| + | rndc freeze linuxhotel.de | ||
| + | vim linuxhotel.de | ||
| + | rndc reload linuxhotel.de | ||
| + | rndc thaw linuxhotel.de | ||
| + | |||
| + | Hilfreich ist vielleicht: | ||
| + | |||
| + | '' | ||
| + | <code bash> | ||
| + | function zvi { | ||
| + | cd / | ||
| + | rndc freeze $1 | ||
| + | vim $1 | ||
| + | rndc reload $1 | ||
| + | rndc thaw $1 | ||
| + | cd - | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== mehrere NS für eine Zone ===== | ||
| + | ==== Master? Primary! Slave? Secondary! ;-) ==== | ||
| + | // | ||
| + | |||
| + | masters { ...; }; => primaries { ...; }; | ||
| + | type master; | ||
| + | type slave; | ||
| + | |||
| + | ==== Primary konfigurieren ==== | ||
| + | Erst müssen die Secondary-Nameserver in der Zonendatei des Primarys eingetragen werden: | ||
| + | < | ||
| + | linuxhotel.de. IN NS notebook04.linuxhotel.de. | ||
| + | </ | ||
| + | |||
| + | Bei SuSE muß noch der Eintrag | ||
| + | < | ||
| + | notify yes; | ||
| + | </ | ||
| + | in der Datei ''/ | ||
| + | === testen: funktioniert der Primary? === | ||
| + | == openSuSE 12.3 == | ||
| + | named-checkzone -i local -D linuxhotel.de / | ||
| + | rndc reload linuxhotel.de | ||
| + | tail / | ||
| + | dig @::1 linuxhotel.de NS | ||
| + | |||
| + | == debian 8 == | ||
| + | named-checkzone -i local -D linuxhotel.de / | ||
| + | rndc reload linuxhotel.de | ||
| + | journalctl -eu bind9 | ||
| + | dig @::1 linuxhotel.de NS | ||
| + | |||
| + | ==== Secondary konfigurieren ==== | ||
| + | Vorraussetzung: | ||
| + | dig @< | ||
| + | |||
| + | Ausgabe muss mindestens 2 NS Records enthalten: | ||
| + | - den eigenen Rechner | ||
| + | - den Primary | ||
| + | |||
| + | ''/ | ||
| + | < | ||
| + | zone " | ||
| + | type secondary; | ||
| + | file " | ||
| + | masters { 192.168.1.220; | ||
| + | }; | ||
| + | zone " | ||
| + | type secondary; | ||
| + | file " | ||
| + | masters { 192.168.1.220; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | * ''/ | ||
| + | * ''/ | ||
| + | < | ||
| + | zone " | ||
| + | type secondary; | ||
| + | file " | ||
| + | primaries { 192.168.1.220; | ||
| + | }; | ||
| + | zone " | ||
| + | type secondary; | ||
| + | file " | ||
| + | primaries { 192.168.1.220; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Zonendateien im Binärformat kann man mit: | ||
| + | named-checkzone -D -f raw linuxhotel.de secondary/ | ||
| + | oder | ||
| + | named-compilezone -f raw -F text -o - example.org. / | ||
| + | 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; | ||
| + | … | ||
| + | </ | ||
| + | |||
| + | === bind Schreibzugriff auf Secondary-Zonendateien geben === | ||
| + | Debian: | ||
| + | mkdir / | ||
| + | chown bind / | ||
| + | |||
| + | === testen: funktioniert der Secondary? === | ||
| + | == Debian == | ||
| + | named-checkconf -z | ||
| + | rndc reconfig | ||
| + | journalctl -eu bind9 | ||
| + | ls / | ||
| + | dig @::1 linuxhotel.de AXFR | ||
| + | |||
| + | == OpenSuSE 12.3 == | ||
| + | named-checkconf -z | ||
| + | rcnamed restart | ||
| + | tail / | ||
| + | ls / | ||
| + | dig @::1 linuxhotel.de AXFR | ||
| + | |||
| + | === testen: funktionieren alle verantwortlichen Nameserver? === | ||
| + | dig @141.1.1.1 linuxhotel.de +nssearch | ||
| + | |||
| + | ===== Subdomains delegieren ===== | ||
| + | ==== Übergeordneter DNS ==== | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | < | ||
| + | zone " | ||
| + | type primary; | ||
| + | file " | ||
| + | forwarders | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | :!: Fallstrick: __Unbedingt an **forwarders** denken!__ Und **alle** dnssec Optionen ausschalten :!: | ||
| + | |||
| + | ''/ | ||
| + | < | ||
| + | sub05.linuxhotel.de. | ||
| + | ns1.sub05.linuxhotel.de. | ||
| + | </ | ||
| + | |||
| + | Fallstrick: Seit bind 9.9 werden die empty zones automatisch " | ||
| + | |||
| + | ''/ | ||
| + | < | ||
| + | disable-empty-zone " | ||
| + | </ | ||
| + | |||
| + | Das muss auch auf jedem Delegaten konfiguriert werden :!: | ||
| + | |||
| + | named-checkzone -i local -D linuxhotel.de / | ||
| + | ==== Subdomain DNS ==== | ||
| + | Wie oben, unter " | ||
| + | |||
| + | ===== Zonendatei für Subnetz per Skript erzeugen ===== | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | NAMESERVER=$(hostname -f) | ||
| + | SUBNET=192.168.1 | ||
| + | |||
| + | cat << | ||
| + | \$TTL 2h | ||
| + | @ IN SOA $NAMESERVER. root.$NAMESERVER. ( | ||
| + | $(date ' | ||
| + | 3h ; refresh | ||
| + | 1h ; retry | ||
| + | 1w ; expire | ||
| + | 1h ; negative ttl | ||
| + | ) | ||
| + | |||
| + | IN NS $NAMESERVER. | ||
| + | |||
| + | HEAD | ||
| + | |||
| + | for ip in $(seq 1 254) | ||
| + | do | ||
| + | getent hosts $SUBNET.$ip | ( read ip name && echo -e " | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Dokus & Links ====== | ||
| + | * [[ http:// | ||
| + | * [[ http:// | ||
| + | * [[ http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
