Bind 9.8 + DLZ + MySQL: проблема с authoritative answer

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
shido
проходил мимо
Сообщения: 2
Зарегистрирован: 2011-04-19 15:52:27

Bind 9.8 + DLZ + MySQL: проблема с authoritative answer

Непрочитанное сообщение shido » 2011-04-19 16:15:28

Добрый день. Есть следующая проблема:
на 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
named.conf

Код: Выделить всё

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$'}";
};
MySQL dump

Код: Выделить всё

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


Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Bind 9.8 + DLZ + MySQL: проблема с authoritative answer

Непрочитанное сообщение vadim64 » 2011-05-03 10:28:21

shido писал(а):Сталкивался ли кто-либо с такой проблемой? Есть ли пути ее решения?
в чём проблема то?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

shido
проходил мимо
Сообщения: 2
Зарегистрирован: 2011-04-19 15:52:27

Re: Bind 9.8 + DLZ + MySQL: проблема с authoritative answer

Непрочитанное сообщение shido » 2011-05-03 10:43:49

Проблема в том, что я получаю для зоны забитой в DLZ non-authoritative ответ, хотя он должен быть как раз authoritative.