на FreeBSD 8.2 поднят BIND 9.8 (из портов), собран без тредов с DLZ_MYSQL.
К DLZ написаны свои запросы и своя БД. При попытке запросить ответ через dig/nslookup получаю ответ о том, что ответ Non-authoritative (т.е. не имеет флага aa), что мне соответственно нужно для переноса зоны на secondary.
Да, кстати, если использовать то, что приводится на сайте DLZ в кач-ве примера результат не отличается.
Сталкивался ли кто-либо с такой проблемой? Есть ли пути ее решения?
Ниже привожу конфиг бинда и дамп БД.
uname
Код: Выделить всё
FreeBSD quicksilver 8.2-RELEASE FreeBSD 8.2-RELEASE #1: Thu Apr 14 08:07:52 UTC 2011 shido@quicksilver:/usr/obj/usr/src/sys/ROUTER_64 amd64
Код: Выделить всё
options {
directory "/etc/namedb/working";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
forwarders {
93.100.1.3;
94.19.255.2;
8.8.8.8;
8.8.4.4;
};
};
zone "." { type hint; file "/etc/namedb/named.root"; };
zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "test" { type master; file "/etc/namedb/master/empty.db"; };
zone "example" { type master; file "/etc/namedb/master/empty.db"; };
zone "invalid" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.net" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.org" { type master; file "/etc/namedb/master/empty.db"; };
zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "ip6.int" { type master; file "/etc/namedb/master/empty.db"; };
dlz "MySQL zone" {
database "mysql
{host=127.0.0.1 port=3306 dbname=dns user=bind pass=bind ssl=true}
{SELECT zone FROM soa where zone = '$zone$'}
{SELECT ttl, type, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"') else data end AS data
FROM record JOIN `zone-record` ON (record.recordID = `zone-record`.recordID)
WHERE `host`='$record$' AND `zone` = '$zone$' AND NOT type = 'NS'}
{select ttl, type, NULL, data, NULL, NULL, NULL, NULL,NULL, NULL
from `zone-record` AS jnt LEFT JOIN (soa, record) ON (jnt.recordID = record.recordID AND jnt.zone = soa.zone)
WHERE (soa.zone='$zone$' AND record.type='NS')
UNION ALL (select ttl, 'SOA' as type, origin, NULL, resp_person, serial, refresh, retry, expire, min_ttl
from `zone-record` AS jnt LEFT JOIN (soa, record) ON (jnt.recordID = record.recordID AND jnt.zone = soa.zone)
WHERE soa.zone='$zone$' LIMIT 1)}
{SELECT ttl, type, host, case when lower(type) = 'mx' then mx_priority else NULL end AS mx_prior, data
FROM record JOIN `zone-record` ON (record.recordID = `zone-record`.recordID)
WHERE zone='$zone$' AND not type = 'NS'}
{SELECT zone FROM zone_transfer WHERE zone = '$zone$' and client = '$client$'}
{update soa set count = count + 1 where zone = '$zone$'}";
};
Код: Выделить всё
CREATE DATABASE IF NOT EXISTS `dns` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `dns`;
-- MySQL dump 10.13 Distrib 5.5.9, for Win32 (x86)
--
-- Host: 172.16.0.1 Database: dns
-- ------------------------------------------------------
-- Server version 5.5.11
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `soa`
--
DROP TABLE IF EXISTS `soa`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `soa` (
`zone` varchar(255) NOT NULL,
`refresh` int(10) unsigned NOT NULL DEFAULT '3600',
`retry` int(10) unsigned NOT NULL DEFAULT '600',
`expire` int(10) unsigned NOT NULL DEFAULT '86400',
`min_ttl` int(10) unsigned NOT NULL DEFAULT '3600',
`resp_person` varchar(45) NOT NULL,
`serial` int(10) unsigned NOT NULL DEFAULT '1',
`origin` varchar(45) NOT NULL,
`count` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`zone`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `soa`
--
LOCK TABLES `soa` WRITE;
/*!40000 ALTER TABLE `soa` DISABLE KEYS */;
INSERT INTO `soa` VALUES ('example.com',8600,600,86400,3600,'maint.example.com.',23,'ns.example.com.',219);
/*!40000 ALTER TABLE `soa` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `record_type`
--
DROP TABLE IF EXISTS `record_type`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `record_type` (
`type` varchar(10) NOT NULL,
PRIMARY KEY (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `record_type`
--
LOCK TABLES `record_type` WRITE;
/*!40000 ALTER TABLE `record_type` DISABLE KEYS */;
INSERT INTO `record_type` VALUES ('A'),('NS');
/*!40000 ALTER TABLE `record_type` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `record`
--
DROP TABLE IF EXISTS `record`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `record` (
`recordID` int(11) NOT NULL AUTO_INCREMENT,
`ttl` int(11) NOT NULL,
`type` varchar(10) NOT NULL DEFAULT 'A',
`mx_priority` tinyint(4) DEFAULT NULL,
`host` varchar(255) NOT NULL,
`data` varchar(255) NOT NULL,
PRIMARY KEY (`recordID`),
KEY `type_FK` (`type`),
CONSTRAINT `type_FK` FOREIGN KEY (`type`) REFERENCES `record_type` (`type`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `record`
--
LOCK TABLES `record` WRITE;
/*!40000 ALTER TABLE `record` DISABLE KEYS */;
INSERT INTO `record` VALUES (1,3600,'NS',NULL,'@','ns.example.com.'),(2,3600,'A',NULL,'ns.example.com.','94.19.5.120'),(3,3600,'A',NULL,'@','94.19.5.120'),(4,3600,'NS',NULL,'@','ns2.mastername.ru.'),(5,3600,'NS',NULL,'@','ns2.ppy.ru.');
/*!40000 ALTER TABLE `record` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `zone-record`
--
DROP TABLE IF EXISTS `zone-record`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `zone-record` (
`zone` varchar(255) NOT NULL,
`recordID` int(11) NOT NULL,
PRIMARY KEY (`zone`,`recordID`),
KEY `fk_ZONE_1` (`zone`),
KEY `FK_RECORD_1` (`recordID`),
CONSTRAINT `FK_RECORD_1` FOREIGN KEY (`recordID`) REFERENCES `record` (`recordID`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_ZONE_1` FOREIGN KEY (`zone`) REFERENCES `soa` (`zone`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `zone-record`
--
LOCK TABLES `zone-record` WRITE;
/*!40000 ALTER TABLE `zone-record` DISABLE KEYS */;
INSERT INTO `zone-record` VALUES ('example.com',1),('example.com',2),('example.com',3),('example.com',4),('example.com',5);
/*!40000 ALTER TABLE `zone-record` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `zone_transfer`
--
DROP TABLE IF EXISTS `zone_transfer`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `zone_transfer` (
`zone` varchar(255) NOT NULL,
`client` varchar(45) NOT NULL,
PRIMARY KEY (`zone`,`client`),
KEY `FK_zone_2` (`zone`),
CONSTRAINT `FK_zone_2` FOREIGN KEY (`zone`) REFERENCES `soa` (`zone`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `zone_transfer`
--
LOCK TABLES `zone_transfer` WRITE;
/*!40000 ALTER TABLE `zone_transfer` DISABLE KEYS */;
INSERT INTO `zone_transfer` VALUES ('example.com','127.0.0.1'),('example.com','83.222.1.30'),('example.com','83.68.45.93'),('example.com','ns2.mastername.ru');
/*!40000 ALTER TABLE `zone_transfer` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2011-04-19 17:07:58