DNS-Manager

A CLI toolset to manage Bind DNS zones and dynamic records. Zones are updated live via DDNS/TSIG, zone contents are read via AXFR zone transfers, and Bind itself is driven through named-checkconf and rndc.

Configuration is keyed by Bind view and supports multiple views as well as automatic management of catalog zones.

Requirements

A running Bind server and a config file are required to run any command.

Installation

Install directly from the git repository:

pip install git+ssh://git@git.ccc-rheintal.ch/spacefreak/dns-manager.git

Configuration

By default the tools read /etc/dns-manager/config.yml (override with -c). A documented example config is provided in files/config.yml.

The configuration is keyed by Bind view; the default view is _default. A TSIG key file is mandatory for any non-default view (and for any zone that requires a key to transfer or update). A view may also define a catalog zone, which is then managed automatically when zones are added or deleted.

Commands

Command Description
dns-list-zones List zones (view, status, managed).
dns-zone-add Add a zone (and its catalog member, if configured).
dns-zone-delete Delete a zone (and its catalog member, if configured).
dns-zone-list Show the records of a zone.
dns-record-add Add a record via DDNS.
dns-record-delete Delete a record via DDNS.
dns-confgen Regenerate per-view Bind config and run rndc reconfig.

All commands support --help for the full list of options.

Commands prompt interactively when arguments are omitted and ask for confirmation before applying changes. Pass -b/--batch to require all arguments and skip prompts for non-interactive use.

Usage

Zones are addressed as ZONE[@VIEWS], where VIEWS is a comma-separated list of views or * for all views. Omitting @VIEWS only works when the target is unambiguously in the default view. In record names, @ refers to the zone apex.

# List all managed zones
dns-list-zones

# Add a zone
dns-zone-add example.tld

# Show the records of a zone
dns-zone-list example.tld

# Add an A record
dns-record-add example.tld www 3600 A 192.0.2.1
S
Description
Manage DNS zones and dynamic records.
Readme GPL-3.0 203 KiB
Languages
Python 98%
Shell 2%