lpi2:bind
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| lpi2:bind [2018/10/09 12:19] – Externe Bearbeitung 127.0.0.1 | lpi2:bind [2026/03/20 15:15] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| ===== Vorbereiten ===== | ===== Vorbereiten ===== | ||
| + | === systemd-resolvd === | ||
| + | " | ||
| === CentOS 7 === | === CentOS 7 === | ||
| Paket '' | Paket '' | ||
| - | |||
| === DNSSEC temporär abschalten === | === DNSSEC temporär abschalten === | ||
| - | ''/ | + | ''/ |
| - | ''/ | + | ''/ |
| < | < | ||
| options { | options { | ||
| … | … | ||
| - | // In der Praxis ist DNSSEC eine gute Sache ... aber zum Lernen erst mal aus: | + | // In der Praxis ist DNSSEC eine gute Sache ... aber im Intranet |
| - | dnssec-enable no; | + | |
| dnssec-validation no; | dnssec-validation no; | ||
| - | dnssec-lookaside no; | ||
| … | … | ||
| } | } | ||
| Zeile 23: | Zeile 22: | ||
| man named.conf | man named.conf | ||
| )) | )) | ||
| + | named-checkconf | ||
| rndc reconfig | rndc reconfig | ||
| Zeile 31: | Zeile 31: | ||
| dig www.posteo.de @1.1.1.1 | dig www.posteo.de @1.1.1.1 | ||
| - | <file> | + | -> '' |
| - | flags: … ad | + | |
| - | </ | + | |
| Unser Nameserver sollte das ad-Flag nicht setzen. | 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 '' | + | |
| - | + | ||
| - | Debian : | + | |
| - | mkdir / | + | |
| - | CentOS (ab 5) : | + | |
| - | mkdir / | + | |
| - | + | ||
| - | ''/ | + | |
| - | ''/ | + | * ''/ |
| + | * ''/ | ||
| + | * ''/ | ||
| - | ''/ | + | <file txt linuxhotel.de> |
| - | <file> | + | |
| $ORIGIN . ; hilft Tippfehler (fehlender . am Ende) zu vermeiden | $ORIGIN . ; hilft Tippfehler (fehlender . am Ende) zu vermeiden | ||
| $TTL 2m ; time to live: 2 Minuten, default wäre 2 Tage | $TTL 2m ; time to live: 2 Minuten, default wäre 2 Tage | ||
| - | linuxhotel.de. | + | linuxhotel.de. SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. ( |
| 1 ; Seriennummer | 1 ; Seriennummer | ||
| 1h20m ; refresh | 1h20m ; refresh | ||
| Zeile 64: | Zeile 55: | ||
| ; Nameserver: | ; Nameserver: | ||
| - | linuxhotel.de. | + | linuxhotel.de. |
| ; kanonische IP-Adressen: | ; kanonische IP-Adressen: | ||
| - | notebook22.linuxhotel.de. | + | notebook22.linuxhotel.de. |
| - | notebook05.linuxhotel.de. | + | notebook05.linuxhotel.de. |
| - | notebook20.linuxhotel.de. | + | notebook20.linuxhotel.de. |
| - | notebook06.linuxhotel.de. | + | notebook06.linuxhotel.de. |
| - | notebook09.linuxhotel.de. | + | notebook09.linuxhotel.de. |
| + | |||
| + | notebook22.linuxhotel.de. | ||
| + | notebook05.linuxhotel.de. | ||
| + | notebook20.linuxhotel.de. | ||
| + | notebook06.linuxhotel.de. | ||
| + | notebook09.linuxhotel.de. | ||
| ; Aliase: | ; Aliase: | ||
| - | peter.linuxhotel.de. | + | peter.linuxhotel.de. |
| - | lothar.linuxhotel.de. | + | lothar.linuxhotel.de. |
| - | heribert.linuxhotel.de. | + | heribert.linuxhotel.de. |
| - | bjoern.linuxhotel.de. | + | bjoern.linuxhotel.de. |
| - | admin.linuxhotel.de. | + | admin.linuxhotel.de. |
| </ | </ | ||
| === Zonendatei überprüfen === | === Zonendatei überprüfen === | ||
| - | == CentOS | + | == CentOS == |
| - | named-checkzone -D linuxhotel.de. /var/named/master/ | + | named-checkzone -D linuxhotel.de. / |
| - | == SuSE (ab 10.0) == | + | == SuSE == |
| - | named-checkzone -D linuxhotel.de. / | + | named-checkzone -D linuxhotel.de. / |
| - | == Debian | + | == Debian == |
| - | named-checkzone -D linuxhotel.de. / | + | named-checkzone -D linuxhotel.de. / |
| - | + | ||
| - | ==== Konfigurationsdatei ==== | + | |
| - | ''/ | + | |
| - | + | ||
| - | ''/ | + | |
| - | ''/ | + | === Konfigurationsdatei === |
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| < | < | ||
| zone " | zone " | ||
| - | type master; | + | type primary; |
| - | file "master/linuxhotel.de"; | + | file " |
| }; | }; | ||
| </ | </ | ||
| Zeile 109: | Zeile 104: | ||
| === bind die Änderung mitteilen === | === bind die Änderung mitteilen === | ||
| rndc reconfig | rndc reconfig | ||
| - | oder | + | ((oder |
| - | openSuSE, | + | openSuSE, |
| service named reload | service named reload | ||
| - | Debian | + | Debian |
| service bind9 reload | service bind9 reload | ||
| + | )) | ||
| + | === im Log prüfen, ob es Fehler gab === | ||
| + | Debian | ||
| + | journalctl -eu named.service | ||
| - | ==== testen | + | === testen === |
| - | host peter.linuxhotel.de | + | host peter.linuxhotel.de |
| - | dig peter.linuxhotel.de @127.0.0.1 any | + | dig peter.linuxhotel.de @::1 any |
| - | ==== Zonendatei (kurze Schreibweise) | + | === Zonendatei (kürzere |
| - | Das Format der Zonendatei (([[http:// | + | Das Format der Zonendatei ((RFC [[rfc>1035]])) läßt es auch zu, diese Datei kürzer zu schreiben: |
| < | < | ||
| $TTL 2h | $TTL 2h | ||
| - | @ IN SOA notebook20 root.notebook20 | + | @ SOA notebook20.linuxhotel.de. |
| ; Nameserver: | ; Nameserver: | ||
| - | IN NS notebook20 | + | NS notebook20.linuxhotel.de. |
| + | |||
| + | ; kein Mailserver, weder empfangen (RFC 7505), noch senden: | ||
| + | MX 0 . | ||
| + | TXT " | ||
| ; kanonische IP-Adressen: | ; kanonische IP-Adressen: | ||
| - | notebook22 | + | notebook22 |
| - | notebook05 | + | AAAA 2a0f: |
| - | notebook20 | + | notebook05 |
| - | notebook06 | + | AAAA 2a0f: |
| - | notebook09 | + | notebook20 |
| + | AAAA 2a0f: | ||
| + | notebook06 | ||
| + | AAAA 2a0f: | ||
| + | notebook09 | ||
| + | AAAA 2a0f: | ||
| ; Aliase: | ; Aliase: | ||
| - | peter | + | peter CNAME notebook09 |
| - | lothar | + | lothar |
| - | heribert | + | heribert |
| - | bjoern | + | bjoern |
| - | admin | + | 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. | Bei jeder Änderung der Zonendatei sollte die Seriennummer hochgezählt werden. | ||
| Zeile 149: | Zeile 169: | ||
| === Zonendatei überprüfen === | === Zonendatei überprüfen === | ||
| == CentOS == | == CentOS == | ||
| - | named-checkzone -D linuxhotel.de. /var/named/master/ | + | named-checkzone -D linuxhotel.de. / |
| == SuSE == | == SuSE == | ||
| - | named-checkzone -D linuxhotel.de. / | + | named-checkzone -D linuxhotel.de. / |
| == Debian == | == Debian == | ||
| - | named-checkzone -D linuxhotel.de. / | + | named-checkzone -D linuxhotel.de. / |
| === bind die Änderung mitteilen === | === bind die Änderung mitteilen === | ||
| rndc reload linuxhotel.de | rndc reload linuxhotel.de | ||
| - | ===== Rückwärts-Zone | + | ==== Rückwärts-Zone |
| - | ==== Zonendatei | + | === Zonendatei === |
| - | ''/ | + | |
| - | + | | |
| - | ''/ | + | |
| - | + | ||
| - | ''/ | + | |
| < | < | ||
| $TTL 2h | $TTL 2h | ||
| - | 1.168.192.in-addr.arpa. IN SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. | + | @ SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. |
| - | | + | |
| - | 3h ; refresh | + | ; Nameserver: |
| - | 1h ; retry | + | |
| - | 1w ; expire | + | |
| - | 1h ; negative ttl | + | |
| - | ) | + | |
| - | ; Nameserver | + | |
| - | 1.168.192.in-addr.arpa. IN NS notebook20.linuxhotel.de. | + | |
| ; kanonische IP-Adressen | ; kanonische IP-Adressen | ||
| Zeile 189: | Zeile 202: | ||
| === testen === | === testen === | ||
| - | == CentOS | + | == CentOS == |
| - | named-checkzone -D linuxhotel.de. / | + | named-checkzone -D 1.168.192.in-addr.arpa. / |
| - | named-checkzone -D 1.168.192.in-addr.arpa. /var/named/master/ | + | |
| - | == SuSE (ab 10.0) == | + | == SuSE == |
| - | named-checkzone -D linuxhotel.de. / | + | named-checkzone -D 1.168.192.in-addr.arpa. / |
| - | named-checkzone -D 1.168.192.in-addr.arpa. / | + | |
| - | == Debian | + | == Debian == |
| - | named-checkzone -D linuxhotel.de. / | + | named-checkzone -D 1.168.192.in-addr.arpa. / |
| - | named-checkzone -D 1.168.192.in-addr.arpa. / | + | |
| - | ==== Konfigurationsdatei | + | === 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: | ||
| + | -> '' | ||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * ''/ | ||
| - | ''/ | ||
| < | < | ||
| - | zone "1.168.192.in-addr.arpa" { | + | $TTL 2h |
| - | type master; | + | @ SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. 1999022301 1d 2h 5w 2d |
| - | file "master/1.168.192.in-addr.arpa"; | + | |
| + | ; 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 "0.0.6.0.1.0.0.0.0.8.4.6.f.0.a.2.ip6.arpa" { | ||
| + | type primary; | ||
| + | file "0.0.6.0.1.0.0.0.0.8.4.6.f.0.a.2.ip6.arpa"; | ||
| }; | }; | ||
| </ | </ | ||
| - | === | + | == |
| named-checkconf -z | named-checkconf -z | ||
| - | === bind die Änderung mitteilen | + | == bind die Änderung mitteilen == |
| rndc reconfig | rndc reconfig | ||
| - | ==== testen | + | === testen === |
| - | host 192.168.1.222 127.0.0.1 | + | host 2a0f:6480:1:600::222 ::1 |
| - | dig -x 192.168.1.222 @127.0.0.1 | + | dig -x 2a0f:6480:1:600::222 @::1 |
| ===== Zonendateien mit nsupdate bearbeiten ===== | ===== Zonendateien mit nsupdate bearbeiten ===== | ||
| ==== bind konfigurieren ==== | ==== bind konfigurieren ==== | ||
| - | ''/ | + | * ''/ |
| - | + | | |
| - | ''/ | + | mit '' |
| < | < | ||
| acl " | acl " | ||
| Zeile 233: | Zeile 294: | ||
| zone " | zone " | ||
| - | type master; | + | type primary; |
| allow-update { " | allow-update { " | ||
| - | file "master/linuxhotel.de"; | + | file " |
| }; | }; | ||
| zone " | zone " | ||
| - | type master; | + | type primary; |
| allow-update { " | allow-update { " | ||
| - | file "master/1.168.192.in-addr.arpa"; | + | file " |
| }; | }; | ||
| </ | </ | ||
| + | oder mit '' | ||
| + | < | ||
| + | zone " | ||
| + | type primary; | ||
| + | update-policy local; | ||
| + | file " | ||
| + | }; | ||
| + | </ | ||
| ==== bind Konfigurationsdatei prüfen ==== | ==== bind Konfigurationsdatei prüfen ==== | ||
| named-checkconf | named-checkconf | ||
| - | ==== bind Schreibzugriff auf Master-Zonendateien geben ==== | + | ==== bind Schreibzugriff auf Primary-Zonendateien geben ==== |
| Debian: | Debian: | ||
| - | chown -R bind / | + | chown bind / |
| ==== Testen: Eintrag hinzufügen ==== | ==== Testen: Eintrag hinzufügen ==== | ||
| - | nsupdate <<EOF | + | für '' |
| < | < | ||
| + | nsupdate <<EOT | ||
| + | |||
| server localhost | server localhost | ||
| Zeile 261: | Zeile 332: | ||
| update add 223.1.168.192.in-addr.arpa 43200 IN PTR notebook23.linuxhotel.de | 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 | ||
| </ | </ | ||
| - | EOF | ||
| ==== Trotz nsupdate Zonen mit Editor bearbeiten ==== | ==== Trotz nsupdate Zonen mit Editor bearbeiten ==== | ||
| Zeile 273: | Zeile 355: | ||
| '' | '' | ||
| - | <file> | + | <code bash> |
| function zvi { | function zvi { | ||
| - | cd / | + | cd / |
| rndc freeze $1 | rndc freeze $1 | ||
| vim $1 | vim $1 | ||
| Zeile 282: | Zeile 364: | ||
| cd - | cd - | ||
| } | } | ||
| - | </file> | + | </code> |
| + | |||
| + | ===== mehrere NS für eine Zone ===== | ||
| + | ==== Master? Primary! Slave? Secondary! ;-) ==== | ||
| + | // | ||
| + | |||
| + | masters { ...; }; => primaries { ...; }; | ||
| + | type master; | ||
| + | type slave; | ||
| - | ====== bind als slave einrichten ====== | + | ==== Primary |
| - | ===== Master | + | Erst müssen die Secondary-Nameserver in der Zonendatei des Primarys |
| - | Erst müssen die Slave-Nameserver in der Zonendatei des Masters | + | |
| < | < | ||
| linuxhotel.de. IN NS notebook04.linuxhotel.de. | linuxhotel.de. IN NS notebook04.linuxhotel.de. | ||
| Zeile 296: | Zeile 385: | ||
| </ | </ | ||
| in der Datei ''/ | in der Datei ''/ | ||
| - | === testen: funktioniert der Master | + | === testen: funktioniert der Primary? |
| == openSuSE 12.3 == | == openSuSE 12.3 == | ||
| - | named-checkzone -i local -D linuxhotel.de / | + | named-checkzone -i local -D linuxhotel.de / |
| rndc reload linuxhotel.de | rndc reload linuxhotel.de | ||
| tail / | tail / | ||
| - | dig @127.0.0.1 linuxhotel.de NS | + | dig @::1 linuxhotel.de NS |
| == debian 8 == | == debian 8 == | ||
| - | named-checkzone -i local -D linuxhotel.de / | + | named-checkzone -i local -D linuxhotel.de / |
| rndc reload linuxhotel.de | rndc reload linuxhotel.de | ||
| journalctl -eu bind9 | journalctl -eu bind9 | ||
| - | dig @127.0.0.1 linuxhotel.de NS | + | dig @::1 linuxhotel.de NS |
| - | ===== Slave konfigurieren | + | ==== Secondary |
| - | Vorraussetzung: | + | Vorraussetzung: |
| - | dig @< | + | dig @< |
| Ausgabe muss mindestens 2 NS Records enthalten: | Ausgabe muss mindestens 2 NS Records enthalten: | ||
| - den eigenen Rechner | - den eigenen Rechner | ||
| - | - den Master | + | - den Primary |
| ''/ | ''/ | ||
| < | < | ||
| zone " | zone " | ||
| - | type slave; | + | type secondary; |
| - | file "slaves/ | + | file "secondary/ |
| masters { 192.168.1.220; | masters { 192.168.1.220; | ||
| }; | }; | ||
| zone " | zone " | ||
| - | type slave; | + | type secondary; |
| - | file "slaves/ | + | file "secondary/ |
| masters { 192.168.1.220; | masters { 192.168.1.220; | ||
| }; | }; | ||
| </ | </ | ||
| - | ''/ | + | * ''/ |
| - | + | | |
| - | ''/ | + | |
| < | < | ||
| zone " | zone " | ||
| - | type slave; | + | type secondary; |
| - | file "slave/ | + | file "secondary/ |
| - | | + | |
| }; | }; | ||
| zone " | zone " | ||
| - | type slave; | + | type secondary; |
| - | file "slave/ | + | file "secondary/ |
| - | | + | |
| }; | }; | ||
| </ | </ | ||
| Zonendateien im Binärformat kann man mit: | Zonendateien im Binärformat kann man mit: | ||
| - | named-checkzone -D -f raw linuxhotel.de | + | named-checkzone -D -f raw linuxhotel.de |
| + | 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: | anzeigen. Wenn man die Zonenfiles **lieber im Textformat statt im Binärformat** haben will, kann man in die Zone eintragen: | ||
| <file txt> | <file txt> | ||
| Zeile 357: | Zeile 447: | ||
| </ | </ | ||
| - | ==== bind Schreibzugriff auf Slave-Zonendateien geben ==== | + | === bind Schreibzugriff auf Secondary-Zonendateien geben === |
| Debian: | Debian: | ||
| - | mkdir / | + | mkdir / |
| - | chown bind / | + | chown bind / |
| - | ==== testen: funktioniert der Slave? ==== | + | === testen: funktioniert der Secondary? === |
| == Debian == | == Debian == | ||
| named-checkconf -z | named-checkconf -z | ||
| rndc reconfig | rndc reconfig | ||
| journalctl -eu bind9 | journalctl -eu bind9 | ||
| - | ls / | + | ls / |
| - | dig @127.0.0.1 linuxhotel.de AXFR | + | dig @::1 linuxhotel.de AXFR |
| == OpenSuSE 12.3 == | == OpenSuSE 12.3 == | ||
| Zeile 374: | Zeile 464: | ||
| rcnamed restart | rcnamed restart | ||
| tail / | tail / | ||
| - | ls / | + | ls / |
| - | dig @127.0.0.1 linuxhotel.de AXFR | + | dig @::1 linuxhotel.de AXFR |
| - | ==== testen: funktionieren alle verantwortlichen Nameserver? | + | === testen: funktionieren alle verantwortlichen Nameserver? === |
| dig @141.1.1.1 linuxhotel.de +nssearch | dig @141.1.1.1 linuxhotel.de +nssearch | ||
| - | ====== Subdomains delegieren | + | ===== Subdomains delegieren ===== |
| - | ===== Übergeordneter DNS ===== | + | ==== Übergeordneter DNS ==== |
| - | ''/ | + | |
| - | + | | |
| - | ''/ | + | |
| < | < | ||
| zone " | zone " | ||
| - | type master; | + | type primary; |
| - | file "master/linuxhotel.de"; | + | file " |
| forwarders | forwarders | ||
| }; | }; | ||
| </ | </ | ||
| - | Fallstrick: | + | :!: Fallstrick: |
| - | ''/ | + | ''/ |
| < | < | ||
| sub05.linuxhotel.de. | sub05.linuxhotel.de. | ||
| Zeile 410: | Zeile 499: | ||
| Das muss auch auf jedem Delegaten konfiguriert werden :!: | Das muss auch auf jedem Delegaten konfiguriert werden :!: | ||
| - | named-checkzone -i local -D linuxhotel.de /var/named/master/ | + | named-checkzone -i local -D linuxhotel.de / |
| - | ===== Subdomain DNS ===== | + | ==== Subdomain DNS ==== |
| Wie oben, unter " | Wie oben, unter " | ||
| - | ====== Zonendatei für Subnetz per Skript erzeugen | + | ===== Zonendatei für Subnetz per Skript erzeugen ===== |
| <code bash> | <code bash> | ||
| #!/bin/bash | #!/bin/bash | ||
lpi2/bind.1539087563.txt.gz · Zuletzt geändert: 2018/12/18 15:08 (Externe Bearbeitung)
