bind9/contrib/dlz/modules/mysqldyn/README
Evan Hunt aefb3e308b [master] better DDNS in DLZ; mysqldyn
3821.	[contrib]	Added a new "mysqldyn" DLZ module with dynamic
			update and transaction support. Thanks to Marty
			Lee for the contribution. [RT #35656]

3820.	[func]		The DLZ API doesn't pass the database version to
			the lookup() function; this can cause DLZ modules
			that allow dynamic updates to mishandle prerequisite
			checks. This has been corrected by adding a
			'dbversion' field to the dns_clientinfo_t
			structure. [RT #35656]
2014-04-25 13:06:30 -07:00

60 lines
2.2 KiB
Text

BIND 9 DLZ MySQL module with support for dynamic DNS (DDNS)
Adapted from code contributed by Marty Lee, Maui Systems Ltd.
This is a dynamically loadable zone (DLZ) plugin that uses a fixed-
schema MySQL database for back-end storage. It allows zone data
to be updated via dynamic DNS updates, and sends DNS NOTIFY packets
to other name servers when appropriate.
The database for this module uses the following schema:
CREATE TABLE `Zones` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`domain` varchar(128) NOT NULL DEFAULT '',
`host` varchar(128) NOT NULL DEFAULT '',
`admin` varchar(128) NOT NULL DEFAULT '',
`serial` int(11) NOT NULL DEFAULT '1',
`expire` int(11) NOT NULL DEFAULT '86400',
`refresh` int(11) NOT NULL DEFAULT '86400',
`retry` int(11) NOT NULL DEFAULT '86400',
`minimum` int(11) NOT NULL DEFAULT '86400',
`ttl` int(11) NOT NULL DEFAULT '86400',
`writeable` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `domain_idx` (`domain`)
);
CREATE TABLE `ZoneData` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`zone_id` int(11) NOT NULL,
`name` varchar(128) NOT NULL DEFAULT '',
`type` varchar(16) NOT NULL DEFAULT '',
`ttl` int(11) NOT NULL DEFAULT '86400',
`data` varchar(128) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `zone_idx` (`zone_id`),
KEY `name_idx` (`zone_id`, `name`),
KEY `type_idx` (`type`)
);
'Zones' contains information about specific zones:
- domain: the zone name
- admin: the zone administrator
- serial, expire, reresh, retry, minimum: values in the SOA record
- ttl: default zone TTL
- writeable: set to true if the zone can be updated via DDNS
'ZoneData' contains the individual records within the zone:
- zone_id: the 'id' from the corresponding record in Zones
- name: domain name, relative to the zone apex. (Data at the zone
apex itself may use a blank name or "@".)
- type: the RR type, expressed as text
- ttl: the record's TTL
- data: the records rdata, expressed as text.
To configure this module in named.conf:
dlz "mysqldlz" {
database "dlopen <path to>/dlz_mysqldyn_mod.so <dbname> [dbhost [dbuser [dbpass]]]";
};