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) |
Verwaltung
CLI
ansible
Web
dnssec
pdnsutil secure-all-zones pdnsutil rectify-all-zones
https://www.sidn.nl/en/modern-internet-standards/dnssec-on-the-powerdns-authoritative-server
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
query log
Queries loggen (erzeugt viele Logseinträge!):
quiet=no
# show last 50 log entries: journalctl -r -n 50 --no-pager -u pdns-recursor.service
dnssec validierung
Standardmäßig führen leider Validierungsfehler nicht zu SRVFAIL, dieses Verhalten lässt sich mit der Option dnssec anpassen:
dnssec validate
IPv6 config
Dual-stack listen
# listen local-address=0.0.0.0:53 [::]:53 # ACL (example: 1.2.3.4 / 1:2:3::4): allow-from=127.0.0.0/8, 1.2.3.4, ::1/128, fe80::/10, 1:2:3::4
IPv6 ausgehend benutzen
Standardmäßig macht der recursor keine queries via IPv6 („When no address of a certain address family is configured, there are no queries sent with that address family. In the default configuration this means that IPv6 is not used for outgoing queries.“), siehe https://doc.powerdns.com/recursor/settings.html#setting-query-local-address bzw. outgoing.source_address
In einer Dualstack-Konfiguration muss daher der Standard „0.0.0.0“ erweitert werden:
query-local-address=::, 0.0.0.0
anschließend macht der recursor auch IPv6-queries. Test mit (Ziel nur per IPv6 erreichbar): dig AAAA aaaa.v6ns.test-ipv6.com
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