PowerDNS dient als authoritativer DNS-Server für die eigene Internet-Domäne. DNSSEC bildet eine Vertrauenskette von den Root-Servern über den Nameserver des Registrars bis zum eigenen Host. DANE verifiziert die von Mail- und Webservern vorgezeigten Zertifikate. DKIM beweist die Herkunft gesendeter Nachrichten.
Wir installieren den authoritativen Server, PostgreSQL als Datenbank sowie Werkzeuge für die Verwaltung von Domänen, Schlüsseln und Zertifikaten.
apt install pdns{-server,-backend-pdns-pgsql} dnsutils certbot
Bei der Installation wird auch eine SQLite3-Datenbank mit Tabellen für Domänen, Einträge, Metadaten und Schlüssel angelegt.
zone=illusioni.de master=81.92.164.69 slave=81.92.164.70
Die bei der Installation angelegten Konfigurationsdateien unter
/etc/powerdns
können gelöscht oder als Referenz aufbewahrt
werden.
Schlüssel, Domänen und Einträge speichern wir in PostgreSQL und erzeugen dafür einen Benutzer, eine Datenbank sowie das Schema.
su postgres -c "createuser --pwprompt pdns" su postgres -c "createdb --owner pdns pdns" psql --host localhost --user pdns --password --dbname pdns \ --file /usr/share/pdns-backend-pgsql/schema/schema.pgsql.sql"
Sowohl der primäre als auch die sekundären Server werden – bis auf die Adresse der jeweiligen Partner – identisch konfiguriert. So bestimmt die Domäne, welcher Server die Rolle des Masters und welcher die des Slaves übernimmt. Der eingebaute Webserver bietet eine einfache Webanwendung für Statusabfragen.
/etc/powerdns/pdns.confallow-axfr-ips=::1, 81.92.164.70 #allow-axfr-ips=::1, 81.92.164.69 dnsupdate=yes #launch=gsqlite3 #gsqlite3-database=/var/lib/powerdns/pdns.sqlite3 #gsqlite3-dnssec=on launch=gpgsql #gpgsql-host=/run/postgresql # if PostgreSQL is listening to unix socket gpgsql-host=127.0.0.1 gpgsql-port=5432 gpgsql-dbname=pdns gpgsql-user=pdns gpgsql-password=pdnssecret master=yes slave=yes webserver=yes webserver-password=Password webserver-address=127.0.0.1 webserver-port=8053
Nach Änderungen an der Konfiguration ist ein Neustart des Daemonen fällig.
systemctl restart pdns
Am Anfang der Zonendatei definiert man den Namen der Domäne und einen Vorgabewert für die Vorhaltezeit. Der erste echte Eintrag (SOA) nennt den primären Nameserver und die Elektropost-Adresse für den administrativen Kontakt, wobei der erste Punkt den Klammeraffen ersetzt. Bei Änderungen darf man nicht vergessen, die Seriennummer zu inkrementieren.
/etc/powerdns/illusioni.de.zone$ORIGIN illusioni.de. $TTL 3600 ;origin ttl class type content @ IN SOA durmstrang.illusioni.de. hostmaster.illusioni.de. ( 2017081001 ; serial 14400 ; refresh (4 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 1800 ; minimum (30 minutes) )
# | Selektor | Name |
1 | IN | Internet |
3 | CH | Chaos (MIT Artificial Intelligence Lab, 1981) |
4 | HS | Hesiod (MIT Projekt Athena, 1987) |
254 | NONE | Keine (Anfrage) |
255 | * | Alle (Anfrage) |
# | Typ | Beschreibung |
1 | A | Zuordnung einer IPv4-Adresse |
2 | NS | Authoritativer Nameserver |
5 | CNAME | Kanonischer Name, z.B. www oder mail |
6 | SOA | Administrativer Kontakt und Seriennummer |
15 | MX | Server für elektronische Post, zeigt auf Eintrag vom Typ A . |
16 | TXT | Öffentlicher Schlüssel für gesendete Nachrichten |
28 | AAAA | Zuordnung einer IPv6 Adresse |
33 | SRV | Allgemeine Dienste, zeigt auf Eintrag vom Typ A |
46 | RSSIG | Prüfsumme für einen anderen Datensatz |
48 | DNSKEY | Öffentlicher Zonenschlüssel |
50 | NSEC3 | Beweis der Nicht-Existenz eines Names |
52 | TLSA | Prüfsumme für Zertifikat |
257 | CAA | Erlaubte Zertifizierungsstellen |
Es folgen für die gesamt Domäne relevanten Name- und Mailserver.
; Service prio host @ IN NS durmstrang.illusioni.de. @ IN NS ilvermorny.illusioni.de. @ IN MX 10 durmstrang.illusioni.de. @ IN MX 20 ilvermorny.illusioni.de.
Der SPF-Eintrag legt in unserem Fall fest, das nur Hosts Nachrichten versenden dürfen, die auch einen MX-Eintrag haben.
@ IN TXT v=spf1 mx -all
Die CAA-Einträge legen fest, dass wir ausschlißelich Zertifikate von Let's Encrypt verwenden.
@ IN CAA 0 iodef "mailto:hostmaster@illusioni.de" @ IN CAA 0 issue "letsencrypt.org" @ IN CAA 0 issuewild "letsencrypt.org"
Zuordnung von Hostnamen zu IPv4- und IPv6-Adressen ist der ursprünglicher Zweck.
; IPv4-Address @ IN A 81.92.164.69 @ IN AAAA 2001:1b18:a1::69 durmstrang IN A 81.92.164.69 durmstrang IN AAAA 2001:1b18:a1::69 ilvermorny IN A 81.92.164.70 ilvermorny IN AAAA 2001:1b18:a1::70
Kanonische Hostnamen haben sich für bestimmte Dienste eingebürgert.
; Alias mail IN CNAME durmstrang www IN CNAME durmstrang
Service-Einträge legen fest, wo welche Dienste laufen. Es dürfen nur echte Hostnamen (A) angegeben werden. Aliase (CNAME) sind nicht erlaubt.
; Service prio weight port host _ldap._tcp IN SRV 0 0 389 durmstrang.illusioni.de. _smtp._tcp IN SRV 0 0 25 durmstrang.illusioni.de. _imap._tcp IN SRV 0 0 143 durmstrang.illusioni.de. _submission._tcp IN SRV 0 1 587 durmstrang.illusioni.de. _http._tcp IN SRV 0 0 80 durmstrang.illusioni.de. _https._tcp IN SRV 0 0 443 durmstrang.illusioni.de. _kerberos-adm._tcp IN SRV 1 0 749 durmstrang _kerberos._udp IN SRV 0 0 88 durmstrang.illusioni.de. _kerberos._tcp IN SRV 0 0 88 durmstrang.illusioni.de. _kerberos._udp IN SRV 0 0 88 ilvermorny.illusioni.de. _kerberos._tcp IN SRV 0 0 88 ilvermorny.illusioni.de. _kpasswd._udp IN SRV 0 0 464 durmstrang.illusioni.de. _kerberos IN TXT ILLUSIONI.DE
Zuletzt hinterlegen die Hostschlüssel für die Secure Shell
und ersparen uns so die Pflege und Verteilung einer
known_hosts
-Datei.
ssh-keygen -r durmstrang >> /etc/powerdns/$zone.zone durmstrang.illusioni.de. IN SSHFP 1 1 deef2f21c9cd27987461b5044b5ae4b52eee7902 …
# | Schlüssel |
1 | RSA |
2 | DSS |
3 | ECDSA |
4 | ED25519 |
# | Prüfsumme |
1 | SHA-1 |
2 | SHA-256 |
Nun importieren wir die vorbereitete Zonendatei in die Datenbank.
pdnsutil load-zone $zone /etc/powerdns/$zone.zone
Alle weitern Änderungen nehmen wir direkt in der Datenbank vor oder verwenden das Werkzeug, um sie im Texteditor zu bearbeiten.
pdnsutil edit-zone $zone
Nun wollen wir die Zone per
DNSSEC
absichern. Folgender Aufruf erzeugt alle benötigten Schlüssel
und speichert sie in der Tabelle cryptokeys
.
pdnsutil secure-zone $zone pdnsutil set-nsec3 $zone '1 0 1 ab'
ab
= Salt (-
für Keines)Der Daemon synthetisiert für alle Einträge die zugehörigen RSSIG- und NSEC3-Einträge und liefert DNSKEY-Einträge für ZSK und KSK.
pdnsutil show-zone $zone KSK, tag = 24111, algo = 13, bits = 256 DNSKEY = illusioni.de. IN DNSKEY 257 3 13 baSE64enC0dEdPuBl1cK3y; ( ECDSAP256SHA256 ) DS = illusioni.de. IN DS 24111 13 1 sHa1diGEsT ; ( SHA1 digest ) DS = illusioni.de. IN DS 24111 13 2 Sha256dIg3st ; ( SHA256 digest ) DS = illusioni.de. IN DS 24111 13 3 g0sTr34d1geSt ; ( GOST R 34.11-94 digest ) DS = illusioni.de. IN DS 24111 13 4 ShA384diGesT ; ( SHA-384 digest )
# | Flag |
256 | ZSK |
257 | KSK |
# | Protokoll |
1 | TLS |
2 | Elektropost |
3 | DNSSEC |
4 | IPsec |
255 | Alle |
# | Verschlüsselungsverfahren |
1 | RSA/MD5 |
2 | Diffie Hellman |
3 | DSA/SHA-1 |
4 | Elliptische Kurven |
5 | RSA/SHA-1 |
6 | DSA/SHA-1/NSEC3 |
7 | RSA/SHA-1/NSEC3 |
8 | RSA/SHA-256 |
10 | RSA/SHA-512 |
12 | ECC-GOST |
13 | ECDSA/Curve P-256/SHA-256 |
14 | ECDSA/Curve P-384/SHA-384 |
Um die Vertrauenskette zu vervollständigen, hinterlegen wir die Prüfsumme des
KSK in Form von
DS-Einträgen
beim Registrar, der dafür eine Webanwendung zur Verfügung stellen sollte.
Wenn alles funktioniert, enthalten Antworten das
ad
-Flag.
dig @localhost $zone DNSKEY ;; flags: qr aa ad; QUERY: 1, ANSWER: 2, AUTHORITY: 7, ADDITIONAL: 1
Global | Default | Beschreibung | |
---|---|---|---|
aa | authoritative answer | Antwort direkt vom authoritativen Server | |
ad | authenticated data | Nameserver hatte Trust Anchor | |
do | dnssec ok | Antwort ist valide | |
rd | recursion desired | Client fragt rekursive Auflösung an | |
ra | recursion available | Server ermöglicht rekursive Auflösung |
Certbot
automatisiert die Verwaltung von Zertifikaten.
Let's Encrypt
stellt sogenannte Wildcard-Zertifikate aber nur per
DNS-Challenge aus.
Dazu übergibt certbot
den Domainnamen und ein zufälliges Token an ein Skript,
welches per dynamischem nsupdate
einen entsprechenden Text-Einträg anlegt.
/etc/powerdns/lets-encrypt.shnsupdate << . server 127.0.0.1 update delete _acme-challenge.$CERTBOT_DOMAIN TXT update add _acme-challenge.$CERTBOT_DOMAIN 60 TXT $CERTBOT_VALIDATION send . sleep 30
Nun beantragen wir das eigentliche Zertifikat. Die Domäne selbst wird als Subject eingetragen und alle Subdomänen per Wildcard als Subject Alternative Name.
certbot certonly \ --manual \ --preferred-challenges=dns \ --manual-auth-hook /etc/powerdns/lets-encrypt.sh \ -d "$zone,*.$zone"
Damit Besucher unserer Webseiten das vorgezeigte Zertifikat via DANE verifizieren können, bilden wir eine Prüfsumme und stellen diese in einem TLSA-Eintrag zur Verfügung.
cert=/etc/letsencrypt/live/$zone/cert.pem hash=$(openssl x509 -in $cert -outform DER | openssl sha256 -r) add-record $zone _25._tcp.mail IN TLSA 3 0 1 ${hash% *} add-record $zone _443._tcp.www IN TLSA 3 0 1 ${hash% *}
# | Name | Verwendung |
0 | PKIX-TA | Zertifikat muss in der Kette auftauchen |
1 | PKIX-EE | Wurzelzertifikat, gegen das die CA-Kette validiert |
2 | DANE-TA | Zertifikat, mit dem der Schlüssel signiert sein muß |
3 | DANE-EE | Öffentlicher Schlüssel des Servers |
# | Selektor |
0 | Das ganze Zertifikat |
1 | Der öffentliche Schlüssel |
# | Selektor |
0 | Die selektierten Daten selbst |
1 | SHA-256 Prüfsumme |
2 | SHA-512 Prüfsumme |
Ausgehende Nachrichten werden später per
DKIM mit einem
RSA-Schlüssel
signiert. Den öffentlichen Schlüssel stellen wir als Text-Eintrag zur Verfügung.
Die Nummer des Selektors (mail1
) wird hochgezählt,
wenn wir neue Schlüssel erzeugen.
openssl genrsa -out /etc/ssl/dkim.key 2048
openssl rsa -in /etc/ssl/dkim.key -pubout -outform PEM
-----BEGIN PUBLIC KEY-----
dK1mpUbl1ck3Y…
-----END PUBLIC KEY-----
add-record $zone mail1._domainkey IN TXT "v=dkim1; h=sha256; k=rsa; p=dK1mpUbl1ck3Y…"
Damit wir auch vom Büro aus oder auf Reisen unser Heimnetzwerk
unter einem schönen Namen wie fnord.illusioni.de
erreichen,
registrieren wir dynamisch zugewiesene Adressen durch Aufruf eines Skripts.
/etc/powerdns/ddns-update.shtype=A [[ "$REMOTE_ADDR" =~ ^2...: ]] && type=AAAA nsupdate << . server 127.0.0.1 update delete $QUERY_STRING $type update add $QUERY_STRING 60 $type $REMOTE_ADDR send .
Authentifizierung erfolgt durch den Apache Webserver, indem man diese Konfiguration einbindet:
/etc/powerdns/apache.confScriptAlias /ddns /etc/powerdns/ddns-update.sh <Location /ddns> Require valid-user AuthName "Dynamic DNS" AuthType Basic AuthBasicProvider ldap AuthLDAPURL "ldap://localhost/ou=users,dc=illusioni,dc=de?uid" AuthLDAPBindDN "cn=apache,ou=daemons,dc=illusioni,dc=de" AuthLDAPBindPassword "Password" </Location>
Diese Auflistung soll nur einen Überblick über die
verfügbaren Kommandos und Optionen vermitteln
und erhebt keinen Anspruch auf Vollständigkeit.
Als authoritative Quelle gelten nur die Manpages und
die offizielle Dokumentation. Alle Direktiven werden in
pdns.conf(5)
ausführlich beschrieben.
Global | Default | Beschreibung | |
---|---|---|---|
8bit-dns | = | no | Nicht-ASCII erlauben |
allow-axfr-ips | = | 127.0.0.0/8, ::1 | Partner für Domänen-Transfers |
allow-notify-from | = | 0.0.0.0/0, ::/0 | Partner für Benachrichtigungen |
allow-recursion | = | 0.0.0.0/0 | (obsolet) |
allow-unsigned-notify | = | yes | Benachrichtigung ohne TSIG erlauben |
allow-unsigned-supermaster | = | yes | |
also-notify | = | Weitere Hosts benachrichtigen | |
any-to-tcp | = | yes | |
api | = | no | HTTP-API aktivieren |
api-key | = | Uuid | API-Schlüssel |
api-logfile | = | /var/log/pdns.log | Pfad der Protokolldatei |
api-readonly | = | no | Änderungen verbieten |
cache-ttl | = | 20 | Vorhaltezeit für Einträge im Cache |
carbon-interval | = | 30 | Wartezeit zwischen Aktualisierungen |
carbon-ourname | = | Host | Name der Instanz |
carbon-server | = | IpAddress | Adresse des Servers |
chroot | = | Dir | Changeroot verwenden |
config-dir | = | /etc/powerdns | Verzeichnis der Konfiguration |
config-name | = | Name | Virtuelle Konfiguration |
control-console | = | no | Debugging |
daemon | = | no | Prozess daemonisieren |
default-ksk-algorithms | = | ecdsa256 | Algorithmus für Zonenschlüssel |
default-ksk-size | = | 0 | Bits passend zum Algorithmus wählen |
default-soa-edit | = | Metadaten für SOA-EDIT setzen | |
default-soa-edit-signed | = | Dito für signierte Zonen | |
default-soa-mail | = | Vorgabe für Elektropost | |
default-soa-name | = | a.misconfigured.powerdns.server | |
default-ttl | = | 3600 | Vorgabe für Vorhaltezeit |
default-zsk-algorithms | = | Algorithmus für Zonenschlüssel | |
default-zsk-size | = | 0 | Bits passend zum Algorithmus wählen |
direct-dnskey | = | no | Weitere Zonenschlüssel aus DNSKEY -Einträgen lesen |
disable-axfr | = | no | Zonentransfers unterbinden |
disable-axfr-rectify | = | no | Automatische Korrektur unterbinden |
disable-syslog | = | no | Nur auf Standardausgabe protokollieren |
disable-tcp | = | no | Nur UDP-Pakete senden |
distributor-threads | = | 3 | Anzahl der Hintergrund-Threads |
dname-processing | = | no | CNAME- aus DNAME-Einträgen bilden |
dnssec-key-cache-ttl | = | 30 | Vorhaltezeit für Zonenschlüssel |
dnsupdate | = | no | Dynamische Aktualisierung erlauben |
allow-dnsupdate-from | = | 127.0.0.0/8, ::1 | Partner für dynamische Aktualisierung |
forward-dnsupdate | = | yes | Master benachrichtigen |
do-ipv6-additional-processing | = | yes | Zusätzlich immer AAAA -Einträge mitsenden |
domain-metadata-cache-ttl | = | 60 | Vorhaltezeit für Metadaten |
edns-subnet-processing | = | no | |
entropy-source | = | /dev/urandom | Enropiequelle |
guardian | = | no | Überwachungsprozess starten |
gsqlite3-database | = | File | Pfad der SQLite Datenbank |
gsqlite3-dnssec | = | on | |
include-dir | = | Dir | Weitere .conf -Dateien laden |
launch | = | backend | Datenbank-Prozesse starten |
load-modules | = | File[, …] | Datenbank-Module laden |
local-address | = | 0.0.0.0 | Auf diesen IPv4-Adressen lauschen |
local-address-nonexist-fail | = | yes | Prozess gegebenenfalls beenden |
local-ipv6 | = | :: | Auf diesen IPv6-Adressen lauschen |
local-ipv6-nonexist-fail | = | yes | Prozess gegebenenfalls beenden |
local-port | = | 53 | Auf diesem Port lauschen |
log-dns-details | = | no | Details protokollieren |
log-dns-queries | = | no | Anfragen protokollieren |
logging-facility | = | facility | Syslog-Einrichung |
loglevel | = | 4 | Syslog-Loglevel |
lua-prequery-script | = | File | |
master | = | no | Betrieb als Master ermöglichen |
slave | = | no | Betrieb als Slave ermöglichen |
slave-cycle-interval | = | 60 | |
max-cache-entries | = | 1000000 | Ein Million Anfragen speichern |
max-ent-entries | = | 100000 | Obergrenze für Begriffe pro Zone |
max-nsec3-iterations | = | 500 | Obergrenze für NSEC3-Iterationen |
max-queue-length | = | 5000 | Obergrenze für Datenbankanfragen |
max-signature-cache-entries | = | Obergrenze für Einträge im Signatur-Cache | |
max-tcp-connections | = | 20 | Obergrenze für Anfragen per TCP |
module-dir | = | $PKGLIBDIR | Verzeichnis für Module |
negquery-cache-ttl | = | 60 | Vorhaltezeit für negative Antworten |
no-shuffle | = | off | Antworten nicht mischen |
non-local-bind | = | no | |
only-notify | = | 0.0.0.0/0,::/0 | Nur bestimmte Hosts benachrichtigen |
outgoing-axfr-expand-alias | = | no | |
overload-queue-length | = | 0 | |
prevent-self-notification | = | yes | Nicht sich selbst benachrichtigen |
query-cache-ttl | = | 20 | Vorhaltezeit für Antworten |
query-local-address | = | 0.0.0.0 | IPv4-Adresse für ausgehende Anfragen |
query-local-address6 | = | :: | IPv6-Adresse für ausgehende Anfragen |
query-logging | = | no | Ausgehende Anfragen protokollieren |
queue-limit | = | 1500 | Millisekunden |
receiver-threads | = | 1 | Initiale Anzahl Threads |
recursor | = | no | Rekursive Anfragen senden |
recursive-cache-ttl | = | 10 | |
retrieval-threads | = | 2 | Anzahl Threads für AXFR |
reuseport | = | no | |
security-poll-suffix | = | secpoll.powerdns.com. | Quelle für Sicherheits-Benachrichtigungen |
server-id | = | Host | Eigener Hostname |
setgid | = | Uid | Gruppe ändern |
setuid | = | Gid | Benutzer ändern |
signing-threads | = | 3 | Anzahl Threads |
slave-renotify | = | no | |
soa-expire-default | = | 604800 | |
soa-minimum-ttl | = | 3600 | Kleinstmögliche Vorhaltezeit für SOA-Einträge |
soa-refresh-default | = | 10800 | |
soa-retry-default | = | 3600 | |
socket-dir | = | /var/run | Verzeichnis für Sockets |
tcp-control-address | = | IpAddress | Adresse der Kontrollinstanz |
tcp-control-port | = | 53000 | Portnummer der Kontrollinstanz |
tcp-control-range | = | 127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10 | Zulässige Adressbereiche |
tcp-control-secret | = | Password | Passwort für pdns_control |
traceback-handler | = | yes | |
trusted-notification-proxy | = | IpAddress | Proxy für eingehende Benachrichtigungen |
udp-truncation-threshold | = | 1680 | |
version-string | = | full | |
webserver | = | no | Eingebauten HTTP-Server aktivieren |
webserver-address | = | 127.0.0.1 | Adresse des Webservers |
webserver-port | = | 8081 | Port des Webservers |
webserver-allow-from | = | 0.0.0.0/0, ::/0 | Zulässige Netzwerke |
webserver-password | = | Password | Passwort für die Anmeldung |
webserver-print-arguments | = | no | |
write-pid | = | yes | PID in Datei schreiben |
xfr-max-received-mbytes | = | 100 | Obergrenze für AXFR in Megabytes |
bind
gmysql
remote
DAEMON
USER
AUTH
LOCAL[0-7]
QUIET
FATAL
ERROR
INFO
VERBOSE
DEBUG
DEBUG1
DEBUG2
DEBUG3
Referenz für pdns_control
Kommando | Argument | Parameter | Beschreibung |
---|---|---|---|
ccounts | Cache-Statisituken ausgeben | ||
current-config | Aktuelle Konfiguration ausgeben | ||
list-zones | [Kind] | Zonen auflisten | |
notify | Zone | Slaves benachrichtigen | |
notify-host | Zone | Host | Host benachrichtigen |
policy | [Command] | Kommando in Policy Engine ausführen | |
purge | [Record] | Zwischenspeicher löschen | |
qtypes | QType Statistiken abfragen | ||
quit | Daemon beenden | ||
rediscover | Neue Zonen autoamtisch finden | ||
reload | Zonen neu laden | ||
remotes | Wichtigste Partner ausgeben | ||
respsizes | Histogramm der Antwortgrößen ausgeben | ||
retrieve | Zone | Zone vom Master abrufen | |
rping | Instanz anpingen | ||
set | Name | Value | Variable in Konfiguration setzen |
show | Statistic | Statistik anzeigen, * für Liste | |
token-login | Module | Slot Pin | Bei einer PKCS#11 Karte anmelden |
uptime | Laufzeit ausgeben | ||
version | Version ausgeben |
Referenz für pdnsutil
Kommando | Argument | Parameter | Beschreibung |
---|---|---|---|
Einträge | |||
list-zone | Zone | Einträge ausgeben | |
add-record | Zone | Name Type [Ttl] Content … |
Eintrag hinzufügen |
edit-zone | Zone | Einträge mit $EDITOR bearbeiten | |
clear-zone | Zone | Alle Einträge löschen | |
increase-serial | Zone | Seriennummer im SOA-Eintrag hochzählen | |
Zonen | |||
create-zone | Zone | [NsName] | Neue Zone erzeugen |
delete-zone | Zone | Zone löschen | |
list-all-zones | [Kind] | Zonen auflisten | |
load-zone | Zone | File | Zone aus Datei importieren |
create-slave-zone | Zone | IpAddress … | Neue Slave-Zone erzeugen |
set-kind | Zone | Kind | Zone zum Master oder Slave erklären |
get-meta | Zone | [Kind …] | Metadaten der Zone ausgeben |
set-meta | Zone | Kind [Value] … | Metadaten setzen, No zum Löschen |
check-zone | Zone | Zone auf Korrektheit prüfen | |
check-all-zones | [exit-on-error] | Alle Zonen prüfen | |
Transfer | |||
list-tsig-keys | Transferschlüssel auflisten | ||
generate-tsig-key | Name | Algorithm | Transferschlüssel generieren |
import-tsig-key | Name | Algorithm Key | Transferschlüssel importieren |
delete-tsig-key | Name | Transferschlüssel löschen | |
[de]activate-tsig-key | Zone | Name Kind | Transferschlüssel (de)aktivieren |
Zonenschlüssel | |||
show-zone | Zone | Öffentlichen Zonenschlüssel ausgeben | |
secure-zone | Zone… | DNSSEC aktivieren | |
secure-all-zones | [increase-serial] | Alle Zonen signieren (und Seriennummer hochzählen) | |
add-zone-key | Zone | zsk|ksk [Bits] [active|inactive] [Algorithm] |
Zonenschlüssel erzeugen und hinzufügen |
list-keys | [Zone] | Zonenschlüssel ausgeben | |
generate-zone-key | zsk|ksk | [Algorithm] [Bits] | Zonenschlüssel erzeugen und ausgeben |
[de]activate-zone-key | Zone | KeyId | Zonenschlüssel (de)aktivieren |
remove-zone-key | Zone | KeyId | (Inaktiven) Zonenschlüssel entfernen |
import-zone-key | Zone | File | Zonenschlüssel aus Datei importieren |
export-zone-key | Zone | KeyId | Privaten Zonenschlüssel ausgeben |
export-zone-dnskey | Zone | KeyId | Öffentlichen Zonenschlüssel ausgeben |
list-algorithms | [with-backend] | Unterstützte Algorithmen ausgeben | |
hash-zone-record | Zone | Rname | NSEC3 Prüfsummen berechnen |
disable-dnssec | Zone | Alle Zonenschlüssel deaktivieren | |
rectify-zone | Zone… | DNSSEC-Einträge korrigieren | |
rectify-all-zones | Einträge aller Zonen korrigieren | ||
[un]set-nsec3 | Zone | ['Params' [narrow]] | NSEC3 aktivieren |
[un]set-presigned | Zone | RRSIG berechnen | |
[un]set-publish-cdnskey | Zone | CDNSKEY senden | |
[un]set-publish-cds | Zone | [DigestAlgorithm …] | CDS senden |
Unterbau | |||
backend-cmd | Backend | Command … | Kommando ausführen |
b2b-migrate | Old | New | Daten verschieben |
bench-db | [File] | ||
test-schema | Zone | Schema testen | |
delete-rrset | Zone | Name Type | RRSET löschen |
replace-rrset | Zone | Name Type [Ttl] | RRSET ersetzen |
master
slave
native
Kind | Parameter | Beschreibung | |
---|---|---|---|
ALLOW-AXFR-FROM | IpAddress | Partner für Zonentransfers | |
API-RECTIFY | 1 | Einträge nach Änderungen durch die HTTP-API automatisch korrigieren | |
AXFR-SOURCE | IpAddress | Ausgehende Adresse für Zonentransfers | |
ALLOW-DNSUPDATE-FROM | IpAddress | Partner für dynmische Aktualisierung | |
TSIG-ALLOW-DNSUPDATE | Key | ||
FORWARD-DNSUPDATE | |||
NOTIFY-DNSUPDATE | |||
ALSO-NOTIFY | IpAddress | Weitere Hosts benachrichtigen | |
AXFR-MASTER-TSIG | Key | Transferschlüssel | |
GSS-ALLOW-AXFR-PRINCIPAL | Host@Realm | Prinzipal für Zonentransfer | |
GSS-ACCEPTOR-PRINCIPAL | Host@Realm | Prinzipal für Kontextdaten | |
IXFR | 1 | Inkrementellen Zonentransfer versuchen | |
LUA-AXFR-SCRIPT | File|NONE | Skript um Zonendaten zu bearbeiten | |
NSEC3NARROW | 1 | NSEC3 im narrow -Modus betreiben | |
NSEC3PARAM | 1 0 1 ab | NSEC3PARAM -Eintrag synthetisieren | |
PRESIGNED | 1 | ||
PUBLISH-CDNSKEY | 1 | CDNSKEY -Eintrag senden | |
PUBLISH-CDS | 1 | CDS -Eintrag senden | |
SLAVE-RENOTIFY | 1 | ||
SOA-EDIT | Regeln für Seriennummer | ||
SOA-EDIT-API | … per HTTP-API | ||
SOA-EDIT-DNSUPDATE | … per dynamischer Aktualisierung | ||
TSIG-ALLOW-AXFR | Key | Transferschlüssel für Zonentransfers | |
TSIG-ALLOW-DNSUPDATE | Key | … für dynamische Aktualisierung |
hmac-sha512
…
# | Name | Name | |
---|---|---|---|
5 | rsasha1 | RSASHA1 | |
7 | RSASHA1-NSEC3-SHA1 | ||
8 | rsasha256 | RSASHA256 | |
10 | rsasha512 | RSASHA512 | |
13 | ecdsa256 | ECDSAP256SHA256 | |
14 | ecdsa384 | ECDSAP384SHA384 | |
15 | ED25519 |