Files
powerdns-proxy/README.md
2023-07-24 21:52:00 +02:00

2.0 KiB

PowerDNS Proxy

PowerDNS Proxy is a Python script that acts as a proxy between your PowerDNS server and external DNS providers, such as Hetzner and OVH. It allows you to automatically synchronize DNS records between your PowerDNS server and the supported external DNS providers. Mainly aimed at proxying RDNS/PTR records.

Features

  • Synchronize DNS records between PowerDNS and supported external DNS providers.
  • Automatically track changes in PowerDNS zones and update corresponding records in external DNS providers.
  • Supports multiple backend providers, including Hetzner and OVH.

Installation

  1. Install the required Python dependencies:
pip3 install -r requirements.txt
  1. Configure the PowerDNS Proxy by editing the config.ini file:

Replace values x with the appropriate values for your PowerDNS server and backend providers. You can also change the synchronization frequency (in seconds) by modifying the frequency parameter. Backend servers will only get called on zone change.

  1. Define the zones and their corresponding backend providers in the zones.ini file:
[1.2.3.4.in-addr.arpa.]
backend = hetzner

[5.6.7.8.in-addr.arpa.]
backend = ovh

[2.4.6.8.in-addr.arpa.]
backend = hetzner

Each section in the zones.ini file corresponds to a zone in your PowerDNS server. The backend parameter specifies the backend provider to use for that zone (currently supporting hetzner and ovh).

Usage

Run the PowerDNS Proxy script using the following command:

python3 main.py

Supported Backends

Hetzner Robot

  • Supports creating, updating, and deleting DNS records using the Hetzner Robot API.

Credentials

To get credentials, go to this link here: https://robot.hetzner.com/preferences/index, then click the "Webservice and app settings" tab and generate a credential pair.

OVH

  • Work in progress

Contributing

Contributions to the PowerDNS Proxy project are welcome! If you find any issues or have suggestions for improvements, feel free to open an issue or submit a pull request.