mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-15 22:09:31 -04:00
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]
60 lines
2.2 KiB
Text
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]]]";
|
|
};
|