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 /dlz_mysqldyn_mod.so [dbhost [dbuser [dbpass]]]"; };