====== PowerDNS authoritative ====== [[wpde>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 ===== * [[http://www.poweradmin.org/|poweradmin]] - ein web interface für PowerDNS * [[https://github.com/PowerDNS-Admin/PowerDNS-Admin|PowerDNS-Admin]] / https://powerdnsadmin.org ([[https://github.com/PowerDNS-Admin/PowerDNS-Admin/issues/1318|Ankündigung des neuen maintainers]]) * [[http://sourceforge.net/projects/izidns/|izidns]] ein web interface für PowerDNS (basiert auf PowerAdmin) * [[https://git.faked.org/jan/powerdns-adblock/|powerdns adblock]] * [[https://blog.powerdns.com/2016/01/19/efficient-optional-filtering-of-domains-in-recursor-4-0-0/|Efficient & optional filtering of domains in Recursor 4.0.0]] ===== 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 ==== https://makarainen.net/PowerDNS-pdnsutil-cheat-sheet ==== ansible ==== * [[https://github.com/kpfleming/ansible-powerdns-auth]] * https://github.com/stuvusIT/pdns-authoritative-api * [[https://jpmens.net/2015/04/15/managing-master-slave-zones-on-powerdns-with-ansible/|Managing master/slave zones on PowerDNS with Ansible]] ==== Web ==== * [[https://github.com/PowerDNS-Admin/PowerDNS-Admin|PowerDNS-Admin]] * [[https://www.poweradmin.org/|Poweradmin]] ===== dnssec ===== [[https://doc.powerdns.com/authoritative/backends/generic-mysql.html#gmysql-dnssec|gmysql-dnssec=yes]] 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} https://doc.powerdns.com/authoritative/http-api/zone.html ===== Lua ===== https://av.tib.eu/media/44248 ====== 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 [[https://docs.powerdns.com/recursor/dnssec.html#validate|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