nsnotifyd: scripted DNS NOTIFY handler
The nsnotifyd daemon monitors a set of DNS zones and runs a command
when any of them change. It listens for DNS NOTIFY messages so it can
respond to changes promptly. It also uses each zone's SOA refresh and
retry parameters to poll for updates if nsnotifyd does not receive
NOTIFY messages more frequently.
Anywhere you currently have a cron job which is monitoring updates to
DNS zones, you might want to run it under nsnotifyd instead of cron,
so your script runs as soon as the zone changes instead of running at
fixed intervals.
There is also a client program nsnotify for sending notify messages.
There are four example scripts described in the manual:
metazone allows you to use standard DNS mechanisms - AXFR, IXFR,
NOTIFY, UPDATE - to control the configuration of multiple name
servers, instead of using a separate out-of-band distribution system.
nsnotify2git records the history of changes to a set of zones.
nsnotify2stealth uses nsnotify-liststealth and nsnotify to
notify stealth secondaries so they get updates faster.
nsnotify2update uses nsdiff and nsupdate as part of a bump-in-the-wire
DNSSEC signer.
To read the nsnotifyd manual, run
$ man ./nsnotifyd.1
There are an HTML versions of the manual pages:
metazone example scriptmetazone file formatdumpaxfr debugging utilityThe nsnotifyd homepage is https://dotat.at/prog/nsnotifyd/
To install in your home directory,
$ ./configure
$ make all
$ make install
See the top of the Makefile for variables that control the install location, for example,
$ sudo make prefix=/usr/local install
On FreeBSD, use the nsnotifyd port or package
The main requirement is the BIND-8 stub resolver. Most BSDs (including Mac OS) ship with a suitable resolver. Otherwise, the configure script will download libbind and build and link with it statically.
You can build with libbind instead of the system resolver with
$ ./configure --with-libbind
Download the full source archives:
You can clone or browse the repository from:
nsnotifydAnd in other media...
Please send bug reports or patches by email to me. I accept contributions made under the terms of 0BSD or MIT-0. Thanks to Adam Augustine, Athanasius, Gavin Brown, Mark Felder, Niels Haarbo, Jonathan Hewlett, Dan Langille, Lars-Johann Liman, JP Mens, and Richard James Salts for helpful feedback and encouragement.
Many thanks to DK Hostmaster for sponsoring the 2.0 release.
Written by Tony Finch <dot@dotat.at> in Cambridge.
Permission is hereby granted to use, copy, modify, and/or distribute this software for any purpose with or without fee.
This software is provided 'as is', without warranty of any kind. In no event shall the authors be liable for any damages arising from the use of this software.
SPDX-License-Identifier: 0BSD OR MIT-0