PowerDNS, GUI, DNSSEC

  • Guten Abend


    Da ich bei meinem jetzigen NS/DNS Verwalter immer mal wieder an Probleme stosse habe ich mir gedacht ich versuche mal mit einer alten Domain und zwei vServer eigene Nameserver zu erstellen. Dies klappt soweit auch sehr gut. Eine ist der Master, der andere der Slave welcher mittels axfr seine Daten bekommt. Ich habe nun noch ein paar Grundlegende Fragen und hoffe hier finden sich ein paar die mit PowerDNS schon arbeiten.

    Installiert ist es auf debian Stretch mit MariaDB. Ich habe auf beiden Servern die DB Installiert.

    • Welches GUI Empfehlt ihr? Ich habe mal von einem Tutorial aus PowerDNS-Admin verwendet. Dies sieht soweit modern aus.
    • Verwendet ihr ebenfalls axfr? Ich habe schon mehrfach gelesen, dass man lieber ein DB Cluster oder ein DB Master/Slave verwenden soll und der Slave PowerDNS Server auf die selbe Datenbank zugreifen soll. Das sei weniger Problematisch.
    • Was mir aufgefallen ist wenn ich DNSSEC mit pdnsutil secure-zone ZONE aktiviere, ist dies auf dem Slave Server nicht der fall. Wie macht ihr das?
    • Kennt jemand ein Script um einfacher Let's Encrypt Zertifikate zu erstellen mit dem DNS Challenge und power DNS? ggf gibt es ja sogar eins mit dem man gleich DANE integrieren kann.

    Edit: Verstehe ich das richtig, und DNSSEC gilt für die Hauptdomain und alle Subdomains, oder muss ich auch für Subdomains einen Key einfügen?


    Vielen Dank erneut für eure Hilfe.


    Gruss


    Oliver

  • Hi, so ein Setup hatte ich auch.

    1. Als GUI hat sich bei mir PowerDNS-Admin etabliert. Ist leicht zu installieren, lässt sich an LDAP anbinden (kein muss) und du kannst DNSSEC mit einem Klick pro Domain aktivieren.

    2. Mit AXFR hatte ich noch nie Probleme. In meinem Setup gibt es immer einen Hidden Primary Master und 3 Slaves, die per AXFR versorgt werden.


    DNSSEC gilt immer für die Hauptdomain und alle Records darunter, also auch die Subdomains.

  • Vielen Dank für deine wie immer super Antwort.

    1. Als GUI hat sich bei mir PowerDNS-Admin etabliert. Ist leicht zu installieren, lässt sich an LDAP anbinden (kein muss) und du kannst DNSSEC mit einem Klick pro Domain aktivieren.

    Ok das klappt bei mir nicht. Bei mir kommt irgendwas von API-RECTIFY. Weiss aber nicht weshalb. Muss mich da mal mit Beschäftigen. Auf die schnelle habe ich nichts gefunden. Ggf hast ja du eine Idee?


    2. Mit AXFR hatte ich noch nie Probleme. In meinem Setup gibt es immer einen Hidden Primary Master und 3 Slaves, die per AXFR versorgt werden.

    Magst du mir mal erklären was ein Hidden Primary Master ist? Da ergeben sich dann für mich weitere Fragen :)

    1. Hast du vier Nameserver?

    2. Hast du da jeweils nur die PowerDNS Instanz drauf?

    3. Hast du alle bei Netcup?

    4. Haben alle ihre eigene Datenbank

    5. Hast du auf allen PowerDNS-Admin drauf damit du kontrollieren könntest oder nur auf dem Master?

    6. Machst du etwas das die DNSSEC nicht auf den Slaves sind und wenn ja was


    Sorry für die vielen Fragen. Aber du hast da ein Interessantes Setup


    Ich habe damit begonnen vorallem weil ich bei meinem jetzigen Anbieter weder ein *._tcp.domain.tld noch ein *.domain.tld als TLSA einrichten kann. Habe es zwar mit PowerDNS noch nicht getestet bisher gefällt mir aber die Unabhängigkeit.

  • Ok das klappt bei mir nicht. Bei mir kommt irgendwas von API-RECTIFY. Weiss aber nicht weshalb. Muss mich da mal mit Beschäftigen. Auf die schnelle habe ich nichts gefunden. Ggf hast ja du eine Idee?

    Hast du dich an die Anleitung von GitHub gehalten (nGinx, Gunicorn)?


    Wie gesagt, Setup ist seit kurzem nicht mehr aktuell, aber es war wie folgt:

    1. Ja, 1 Hidden Primary Master und 3 Slaves. Der Hidden Primary Master (ns0) ist der Master Server, auf dem die Zonen verwaltet werden. Dieser ist nur aus dem VLAN erreichbar und daher nicht öffentlich zugänglich. Dieser sendet Zonenupdates per AXFR an meine 3 Slaves (ns1, ns2 und ns3), die public erreichbar und bei meiner Domain als Nameserver eingetragen sind.

    2. Jeweils PowerDNS drauf, ja. Der ns0 ist als Master konfiguriert, die anderen als Slave

    3. Alle Server bei netcup 8)

    4. Eine MySQL DB für den Master, die Slaves hatten ihre lokale SQLite DB

    5. PowerDNS Admin nur auf dem Master, auf den Slaves kann man in den logs prüfen ob die AXFRs reinkommen. Ansonsten merkt man auch schnell, wenn was kaputt ist. In der ganzen Laufzeit gab es aber keine Sync issues.

    6. Wie gesagt, die Domains werden auf dem Master verwaltet. Die Slaves sind schnell konfiguriert. Die bekommen in die supermasters Tabelle in ihrer DB einen Eintrag, wer als Supermaster zugelassen ist und fertig. Der Rest läuft über AXFR, die Records für DNSSEC werden also ebenfalls darüber auf die Slaves transferiert und damit public gemacht.

  • Hast du dich an die Anleitung von GitHub gehalten (nGinx, Gunicorn)?

    Habe ich eine Anleitung übersehen? Ich habe hier mal geschaut Github habe aber nichts spezifisches gefunden. DIe Anleitung sieht weitgehenst gleich aus wie die von mir verwendete von hier. Ich verwende nginx.

    1. Ja, 1 Hidden Primary Master und 3 Slaves. Der Hidden Primary Master (ns0) ist der Master Server, auf dem die Zonen verwaltet werden. Dieser ist nur aus dem VLAN erreichbar und daher nicht öffentlich zugänglich. Dieser sendet Zonenupdates per AXFR an meine 3 Slaves (ns1, ns2 und ns3), die public erreichbar und bei meiner Domain als Nameserver eingetragen sind.

    Was hast du oder möchtest du denn daran ändern? WIe verbindest du dich Zuhause denn mit dem VLAN?

    5. PowerDNS Admin nur auf dem Master, auf den Slaves kann man in den logs prüfen ob die AXFRs reinkommen. Ansonsten merkt man auch schnell, wenn was kaputt ist. In der ganzen Laufzeit gab es aber keine Sync issues.

    Ich habe mal im Monitor geschaut. Weisst du grad auswendig welches Logfile das wäre? Dann sehe ich da ggf die vorhandenen Fehler

    Die bekommen in die supermasters Tabelle in ihrer DB einen Eintrag, wer als Supermaster zugelassen ist und fertig. Der Rest läuft über AXFR, die Records für DNSSEC werden also ebenfalls darüber auf die Slaves transferiert und damit public gemacht.

    Das macht es bei mir nicht. Ich habe aber DNSSEC im moment noch per pdnsutil secure-zone aktiviert. Und die Abfrage pdnsutil show-zone zeigt nur auf dem Master die Ausgabe. Ggf ist ja ein Fehler im Log wie du oben gesagt hast.

  • Habe ich eine Anleitung übersehen? Ich habe hier mal geschaut Github habe aber nichts spezifisches gefunden. DIe Anleitung sieht weitgehenst gleich aus wie die von mir verwendete von hier. Ich verwende nginx.

    Schau mal hier, das sieht recht aktuell aus: https://jonaharagon.com/instal…ns-admin-on-ubuntu-18-04/

    Was hast du oder möchtest du denn daran ändern? WIe verbindest du dich Zuhause denn mit dem VLAN?

    Ich evaluiere derzeit einen Windows Server für meine zentralen Dienste. Dieser soll, wenn alles gut läuft, den Hidden Master, den Resolver und den LDAP Server als DC ablösen. Vielleicht steige ich dafür aber auch wieder auf Linux mit Samba als DC um, mal schauen. Ich teste immer gerne rum.

    Mit dem VLAN verbinde ich mich über einen OpenVPN Jumphost.

    Ich habe mal im Monitor geschaut. Weisst du grad auswendig welches Logfile das wäre? Dann sehe ich da ggf die vorhandenen Fehler

    Das syslog lässt sich ganz einfach mit pdns greppen.

    Das macht es bei mir nicht. Ich habe aber DNSSEC im moment noch per pdnsutil secure-zone aktiviert. Und die Abfrage pdnsutil show-zone zeigt nur auf dem Master die Ausgabe. Ggf ist ja ein Fehler im Log wie du oben gesagt hast.

    Sind denn die Zonen auf den Slaves wirklich slave zonen?

  • Ich habe einen PowerDNS Cluster mit MySQL Replikation am laufen. Ich verwende kein GUI sondern nur die Kommandozeile mit pdnsutil edit-zone. Die GUIs sind bei mir alle durchgefallen, da sie teilweise üble Bugs hatten oder das mit dem DNSSEC nicht hin bekommen haben.

  • voja Mit was hast du den PowerDNS Cluster aufgebaut? Einfach mehrere Installationen mit Zugriff auf die selbe DB und die PDNS mit Master/Slave?


    PowerDNS-Admin finde ich bisher sehr angenehm. DNSSEC macht mir da noch Probleme aber das scheint theoretisch auch zu gehen

  • Also DNSSEC kann ich nach wie vor nicht im GUI aktivieren/Deaktivieren da muss ich mal suchen. Das mit dem DNSSEC Replizieren geht nun. Das Problem war die Datenbank. Meine Standardkodierung ist UTF8M4B. Mit dem Charset UTF8 geht es :)

  • Also:


    Ich habe ein MongoDB Cluster (ReplicaSets) für DNS laufen. Dort sind alle Zonendaten abgespeichert. Jeder DNS Server ist Teil des Clusters.

    Über einen Connector fragt der lokale PowerDNS die Datenbank nach den Records ab. Der PowerDNS Daemon weiß aber nichts von seinen Nachbarn.


    Soll:


    Die Zonen werden On-Demand signiert vom PowerDNS Daemon, keine Zone wird bei Änderung vorsigniert.

    Gesteuert wird dies durch eine selbst entwickelte Applikation.

  • voja Mit was hast du den PowerDNS Cluster aufgebaut? Einfach mehrere Installationen mit Zugriff auf die selbe DB und die PDNS mit Master/Slave?


    PowerDNS-Admin finde ich bisher sehr angenehm. DNSSEC macht mir da noch Probleme aber das scheint theoretisch auch zu gehen

    Ich habe einen Master PowerDNS der Schreibzugriffe auf die MySQL Datenbank machen darf. Der ist für die Signierung der Zone zuständig. Die MySQL-Datenbank wird auf vier Slave DNS repliziert (mit TLS, da die Server auf mehrere Standorte verteilt sind). Die MySQL Slave Datenbank ist read-only (my.cfg read-only = 1).

  • Lässt du PowerDNS die mongoDB abfragen? Hast du das selbst geschrieben mit dem Pipe Backend zusammen?


    Ich selbst nutze MySQL Percona als Master-Master mit 2 PowerDNS dahinter, sowie einen "Backup" Nameserver extern im Hintergrund aber nicht aktiv.


    AXFR hatte ich am Anfang im Einsatz aber für meienn Zweck ungeeignet gewesen, da zuviele Änderungen in den Zonen.

  • Aktuell Pipe Backend. Wegen dem kommenden DNSSEC muss ich aber neu implementieren im Remote Backend mit Unix Sockets oder IPC Pipes.

    Genau das hatte mich damals auch abgehalten, gab ein Projekt auf Github aber irgendwie tot seit 2014 und ohne DNSSEC, das hatte mich $damals auch davon abgehalten. Ist dein aktuelles Script vom Pipe Backend OpenSource irgendwo?

  • https://pastebin.com/WjZBjJjF


    Zum Kompilieren brauchst du folgende Abhängigkeit: https://github.com/globalsign/mgo

    Datenstruktur ist auch gelistet.


    Als Serial habe ich eine BSON-ObjectID gespeichert. Aus dieser lässt sich ein Datum ableiten. Ich nutze hier die Unix Timestamp als Serial, kann aber gleichzeit sehen, von welchem Rechner die letzte Änderung geschrieben wurde.


    Hier auch ein Screenshot wie das ganze in der Datenbank aussieht.


    Screenshot at 2019-01-10 23:27:46.png


    Ist noch als Test ausgelegt, deswegen ist der Quelltext auch nicht superb.

  • [...]

    Ist noch als Test ausgelegt, deswegen ist der Quelltext auch nicht superb.

    Hui, danke, schaue ich mir mal an. Sieht aber momentan noch nach viel Overhead aus.


    Generell ist mongoDB super dafür geeignet wie ich finde, muß sich aber zeigen unter Last.

  • Ich habe mich gestern im Thema leider verklickt und haben den Beitrag im falschen erstellt. https://forum.netcup.de/admini…let-s-encrypt/#post109915


    Ich habe dazu nun einiges Gesucht und ich hoffe soweit alles Verstanden zu haben wo die Unterschiede liegen. Bisher hätte ich ja meine 2 - 3 Nameserver für die DNS Verwaltung. So wie ich das verstanden habe kann ich diese nicht für mein Vorhaben verwenden. Ich bräuchte also Separat noch zwei DNS Server (falls einer sich verabschiedet) ähnlich wie man es Zuhause verwenden kann um eine Domain zuhause.local zu verwenden.

    Wenn ich google damit Quälte geht dies am besten mit BIND9. Wie es mit PowerDNS Recursor gehen würde habe ich bisher kaum etwas gefunden. Da ich für die Nameserver schon PowerDNS Einsetze wäre es für mich eigentlich logisch ebenfalls PDNS zu verwenden..

    Diese beiden DNS Server sollen jedoch nur für meine Server erreichbar sein. Ich denke es wäre am einfachsten jeden eingehenden Traffic über die öffentliche IP mit iptables zu Blockieren und die DNS Anfragen von meinen Servern über das Cloud vLAN zu leiten. Aber das wird ein anderes Thema sein :)


    Ich frage mich nun natürlich, ob mein Vorhaben wirklich nur mit zwei kleinen vServern zu erledigen wäre. Eine IPv4 und IPv6 Failover IP kosten auch nicht wenig, so dass ich mit zwei VPS200 preislich interessant fahren würde für die DNS Verwaltung. Ich denke so könnte ich einerseits mein Failoversystem erstellen für die internen IP's, hätte aber auch gleich einen eigenen Resolver z.B: für den E-Mailserver. Dort sind ja die Provider Nameserver nicht so gut wegen Postscreen.


    Nun würde ich gerne wissen wie ich das am besten Umsetzen könnte. Zum PDNS Recursor gibt es leider wirklich kaum Anleitungen, und ich wüsste da noch nicht wie ich es bewerkstellige das z.B. die domain server.local nie gecached wird sondern immer frisch auf dem Resolver abgerufen wird für die Failover Geschichte.


    Ich bedanke mich erneut für jede Hilfestellung.


    Gruss


    Oliver