PowerDNS authoritative
PowerDNS Server ist ein unter der GNU General Public License veröffentlichter Nameserver der auf allen verbreiteten Betriebsystemen eingesetzt werden kann. PowerDNS Recursor ist ein rekursiver bzw. caching-only Nameserver der seperat erhältlich ist, aber auch im Hauptpaket enthalten ist.
Links
- poweradmin - ein web interface für PowerDNS
- izidns ein web interface für PowerDNS (basiert auf PowerAdmin)
backends
Verfügbare Backends:
name | Funktion |
---|---|
bind und bind2 | Liest Zonendaten aus einer Zonendatei des weit verbreiteten BIND Nameservers |
db2 | Kann Anfragen aus einer IBM DB2-Datenbank beantworten |
geo | Erlaubt je nach IP-Adressen Bereich oder geographischer Herkunft der IP-Adresse verschiedene Antworten zurückzusenden |
gmysql | Verwendet MySQL als Datenbank |
gpgsql | Verwendet PostgreSQL als Datenbank |
goracle | Verwendet Oracle als Datenbank |
gsqlite | Verwendet SQLite als Datenbank |
ldap | Holt Informationen aus einem hierarchisch strukturierten LDAP-Verzeichnis |
odbc | Greift auf Zoneninformationen in einer von ODBC unterstützten Datenbank zu. Diese Methode ist nur mit Windows als Betriebssystem möglich] |
opendbx | Ein auf Geschwindigkeit, Lastverteilung und Ausfallsicherheit optimiertes Datenbank Backend, das auf der OpenDBX Bibliothek aufbaut und MySQL, PostgreSQL, SQLite, Firebird, Interbase, Microsoft SQL Server und Sybase ASE Datenbanken unterstützt |
pipe | Fragt einen Koprozess nach Antworten auf DNS-Anfragen |
random | Generiert zufällige Antworten (nur zum Testen sinnvoll) |
management von der CLI
dnssec
pdnsutil secure-all-zones pdnsutil rectify-all-zones
https://www.sidn.nl/en/modern-internet-standards/dnssec-on-the-powerdns-authoritative-server
management aus ansible heraus
zone export
pdnsutil list-all-zones [master|slave|native]
https://real-activities.com/~phrank/host/powerdns.html
Schleife mit „dig -t axfr $Zone @$DNS:
#!/bin/bash axfr_from="127.0.0.1" zone_backup_file="pdns_fullbackup.txt" set -e -o pipefail function cleanup { EXIT_CODE=$? set +e # disable termination on error rm "$exportfile" rm "$exportfile_sorted" exit $EXIT_CODE } trap cleanup EXIT exportfile=$(mktemp) exportfile_sorted=$(mktemp) # old versions: # pdnssec list-all-zones > "$exportfile" pdnsutil list-all-zones > "$exportfile" cat "$exportfile" | grep -v "All zonecount" | sort > "$exportfile_sorted" while read -r zeile ; do dig -t axfr "$zeile" @$axfr_from >> "$zone_backup_file" done < "$exportfile_sorted"
via API:
GET /servers/{server_id}/zones GET /servers/{server_id}/zones/{zone_id}
Lua
PowerDNS recursor
recursor flush zone
rec_control wipe-cache $domain
recursor dump cache into file
rec_control dump-cache /tmp/dns-cache
dnssec validierung
Standardmäßig führen leider Validierungsfehler nicht zu SRVFAIL, dieses Verhalten lässt sich mit der Option dnssec anpassen:
dnssec validate
dnsdist
Statistiken anzeigen
powerdns config:
- controlSocket("127.0.0.1")
- setKey("your_secret_key")
dnsdist -c dumpStats()
Split-DNS
- switch pools via lua (depending on source IP of client)
- rewrite queries with static values (lua)
- delegate to a different (internal?) DNS-Server depending on asked domain