Bij PowerDNS krijg je geen API-sleutel, je kiest er een. Hij staat in pdns.conf en de API antwoordt pas als de ingebouwde webserver aanstaat. Er is niets om in te loggen. Een tekstbestand en een herstart.
pdns.conf aanpassen
Voeg deze instellingen toe aan de configuratie van de Authoritative Server:
api=yes
api-key=<een lange willekeurige string>
webserver=yes
webserver-address=0.0.0.0
webserver-allow-from=<de adressen die mogen verbinden>
- api-key is het geheim. Genereer hem met
openssl rand -hex 32. Laat hetchangemeuit de documentatie niet staan. - webserver-address staat standaard op
127.0.0.1, dus alleen de server zelf kan verbinden. Zet het op0.0.0.0of het publieke IP van de nameserver voor toegang van buiten. - webserver-allow-from noemt de netmasks die mogen verbinden. Houd het zo smal mogelijk.
Herstart PowerDNS daarna.
Testen
curl -H 'X-API-Key: <je sleutel>' http://127.0.0.1:8081/api/v1/servers/localhost
JSON terug betekent dat de API werkt. De ingebouwde webserver luistert op poort 8081 en spreekt gewoon HTTP.
Zet geen platte HTTP open
Een API-sleutel over gewone HTTP kan iedereen onderweg meelezen. Zet een TLS-proxy zoals nginx of Caddy voor de webserver en laat die op 443 luisteren. PowerDNS adviseert ook webserver-password in te stellen als tweede laag.
Koppelen aan DNSense
Voeg een koppeling toe, kies PowerDNS en vul in:
- Host. Schrijf
https://dns.example.comals hij achter een TLS-proxy staat. Zonder schema wordt gewone HTTP aangenomen. - Port, optioneel. DNSense gebruikt
8081voor HTTP en443voor HTTPS als het veld leeg is. - API key, de waarde van
api-key.
Mislukt de verbinding, kijk dan eerst naar de firewall en webserver-allow-from. Dat is meestal de oorzaak.

