Настроить получилось без проблем, все делал по статьям
http://www.lissyara.su/articles/freebsd ... /powerdns/. Возникли вопросы по стартовому скрипту powerdns - действительно ли его нужно было переписывать? При таком как в статье (измененном) варианте скрипта, не работает консоль pdns_control . Сам всего лишь добавил 2 строчки в /usr/local/etc/rc.d/pdns:
Код: Выделить всё
./etc/rc.subr
############################
pdns_uid=120;
pdns_gid=120;
############################
name=pdns
И с логированием были проблемы, но совет clamath в комментах к статье здорово помог!
Powerdns-server исполнял роль авторитарного и разрешал запросы машин внутренней сетки к внешним ресурсам посредством рекурсора. Однако, со временем по необъяснимым причинам эта схема иногда стала давать сбой, разрешение имен либо происходило очень медленно, либо вообще выдавало сообщение, что, дескать, такого хоста нету! И решалось это только рестартом powerdns-recursor. Недолго думая, остановил (а затем и вообще снес) рекурсор и поставил unbound, как было описано в замечательной статье terminus'а
http://www.lissyara.su/articles/freebsd ... s/unbound/. Для всех желающих прилагаю вариант скриптов баз powerdns в mysql:
Код: Выделить всё
SET SESSION sql_mode='ANSI';
CREATE TABLE "domains" (
"id" INTEGER NOT NULL AUTO_INCREMENT,
"name" VARCHAR(255) NOT NULL,
"type" VARCHAR(6) NOT NULL,
"master" VARCHAR(40) NOT NULL DEFAULT '',
"account" VARCHAR(40) NOT NULL DEFAULT '',
"last_check" INTEGER DEFAULT NULL,
"notified_serial" INTEGER DEFAULT NULL,
"auto_serial" INTEGER NOT NULL DEFAULT 0,
"status" CHAR(1) NOT NULL DEFAULT 'A',
CONSTRAINT "pdns_pk_domains_id"
PRIMARY KEY ("id"),
CONSTRAINT "pdns_unq_domains_name"
UNIQUE ("name")
) type=InnoDB;
CREATE INDEX "pdns_idx_domains_status_type" ON "domains" ("status","type");
CREATE TABLE "records" (
"id" INTEGER NOT NULL AUTO_INCREMENT,
"domain_id" INTEGER NOT NULL,
"name" VARCHAR(255) NOT NULL,
"type" VARCHAR(6) NOT NULL,
"content" VARCHAR(255) NOT NULL,
"ttl" INTEGER DEFAULT NULL,
"prio" INTEGER DEFAULT NULL,
"change_date" INTEGER(11) DEFAULT NULL,
CONSTRAINT "pdns_pk_records_id"
PRIMARY KEY ("id"),
CONSTRAINT "pdns_fk_records_domainid"
FOREIGN KEY ("domain_id")
REFERENCES "domains" ("id")
ON UPDATE CASCADE
ON DELETE CASCADE
) type=InnoDB;
CREATE INDEX "pdns_idx_records_name_type" ON "records" ("name","type");
CREATE INDEX "pdns_idx_records_type" ON "records" ("type");
CREATE TABLE "supermasters" (
"ip" VARCHAR(40) NOT NULL,
"nameserver" VARCHAR(255) NOT NULL,
"account" VARCHAR(40) NOT NULL DEFAULT ''
);
CREATE INDEX "pdns_idx_smaster_ip_ns" ON "supermasters" ("ip","nameserver");
GRANT SELECT ON "supermasters" TO "powerdns";
GRANT ALL ON "domains" TO "powerdns";
GRANT ALL ON "records" TO "powerdns";
DELIMITER :
CREATE TRIGGER "pdns_trig_records_insert"
AFTER INSERT ON "records"
FOR EACH ROW BEGIN
UPDATE "domains" d SET d."auto_serial" = d."auto_serial" + 1
WHERE d."id" = NEW."domain_id";
END;:
CREATE TRIGGER "pdns_trig_records_update"
AFTER UPDATE ON "records"
FOR EACH ROW BEGIN
UPDATE "domains" d SET d."auto_serial" = d."auto_serial" + 1
WHERE d."id" = NEW."domain_id";
END;:
CREATE TRIGGER "pdns_trig_records_delete"
AFTER DELETE ON "records"
FOR EACH ROW BEGIN
UPDATE "domains" d SET d."auto_serial" = d."auto_serial" + 1
WHERE d."id" = OLD."domain_id";
END;:
DELIMITER ;