Новые тарифы на хостинг с PHP 7!

Настраиваем superslave dns-сервер

Если кто не знает, superslave - это dns-сервер, который по axfr-запросам получает зону и создает у себя ее автоматически. Таким образом не нужно синхронизировать зонные файлы по rsync или каким-либо образом обеспечивать передачу зонных файлов на slave-сервер.

Единственное "но" - пока что нормальная поддержк axfr есть только в bind, поэтому необходимо, чтобы master-зона обслуживалась именно bind-ом.

Ставим powerdns:

yum install pdns pdns-backend-mysql

Маленькое замечание: не пытайтесь использовать для superslave sqlite-бакэнд, так как совместное чтение и запись в sqlite  отсутствует, поэтому выбираем mysql.

Редактируем pdns.conf, оставляя там только:

====
setuid=pdns # Пользователь pdns
setgid=pdns # Группа pdns
allow-axfr-ips=11.22.33.44 # Диапазон IP-адресов, откуда мы можем обслуживать axfr-запросы
allow-recursion=11.22.33.44 # Диапазон IP-адресов, которым мы являемся forwarder-ом
default-soa-name=ns2.hostinghutor.com # SOA NS для нашей slave-зоны.
launch=gmysql # mysql-бакенд
gmysql-socket=/var/lib/mysql/mysql.sock # Используем unix-сокет, так как tcp медленнее
gmysql-user=pdns # Пользователь mysql для pdns
gmysql-password=passWorD # Пароль пользователя mysql для pdns
gmysql-dbname=pdns # Название БД pdns
local-address=55.66.77.77 # IP-адрес нашего dns-сервера
recursor=77.77.77.77 # IP-адрес forwarder-а, которому будут передаваться запросы не на наши зоны
slave=yes # Включаем поддержку slave dns
logging-facility=0 # Канал syslog, в который писать логи pdns
====

Можно, конечно, поднастроить кеши и т.п. но приведенного выше конфига вполне хватит для нормальной работы нашего dns-сервера.

Создаем пользователя и базу pdns, для чего выполняем команды:
============
mysql -uroot -p
CREATE DATABASE pdns;
GRANT ALL ON pdns.* TO 'pdns'@'localhost' IDENTIFIED BY 'passWorD';
FLUSH PRIVILEGES;
============

Далее, создаем нужные нам таблицы:
============
mysql -updns -ppassWorD
USE pdns;
create table domains (
 id           INT auto_increment,
 name           VARCHAR(255) NOT NULL,
 master           VARCHAR(128) DEFAULT NULL,
 last_check      INT DEFAULT NULL,
 type           VARCHAR(6) NOT NULL,
 notified_serial INT DEFAULT NULL, 
 account         VARCHAR(40) DEFAULT NULL,
 primary key (id)
)type=InnoDB;
 
CREATE UNIQUE INDEX name_index ON domains(name);
 
CREATE TABLE records (
  id              INT auto_increment,
  domain_id       INT DEFAULT NULL,
  name            VARCHAR(255) DEFAULT NULL,
  type            VARCHAR(6) DEFAULT NULL,
  content         VARCHAR(255) DEFAULT NULL,
  ttl             INT DEFAULT NULL,
  prio            INT DEFAULT NULL,
  change_date     INT DEFAULT NULL,
  primary key(id)
)type=InnoDB;
 
CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
 
create table supermasters (
  ip VARCHAR(25) NOT NULL, 
  nameserver VARCHAR(255) NOT NULL, 
  account VARCHAR(40) DEFAULT NULL
);
 
GRANT SELECT ON supermasters TO pdns;
GRANT ALL ON domains TO pdns;
GRANT ALL ON records TO pdns;
=========

Логи pdns ведем в /var/log/pdns/pdns.log:
mkdir -p /var/log/pdns
touch /var/log/pdns/pdns.log
chown -R pdns:pdns /var/log/pdns
echo "local0.* /var/log/pdns/pdns.log" >>/etc/syslog.conf
service syslog restart

Запускаем и прописываем powerdns в стартовые скрипты:
chkconfig pdns on
service pdns start 

Для прописывания supermaster-а в pdns запускаем следующие команды:
===
mysql -updns -ppassWorD pdns
INSERT INTO supermasters ( ip, nameserver, account ) VALUES ( 'IP.IP.IP.IP', 'ns1.example.com', 'example' );
===
IP.IP.IP.IP - это IP-адрес нашего supermaster-а
ns1.example.com - SOA NS master-сервера
example - идентификатор, того, кому принадлежит домен 

В named.conf bind-а на master-е необходимо добавить наш superslave:
allow-transfer { IP.IP.IP.IP; };
IP.IP.IP.IP - это IP-адрес нашего superslave-сервера

Powerdns сам не удаляет домены, которые были удалены с master-а. Для удаления используем скрипт rmzones.sh, который будет запускаться раз в сутки и чистить с базы pdns удаленные с master-сервера зоны:
======
#!/bin/bash
 
for dom in `grep 'produced a NS record' /var/log/pdns/pdns.log |awk '{print $10}' | cut -d\' -f2 | sort | uniq |grep -v NS`
do
    echo "Delete domain $dom"
    echo "DELETE FROM records WHERE name='$dom';" | mysql -updns -ppassWorD pdns
    echo "DELETE FROM domains WHERE name='$dom';" | mysql -updns -ppassWorD pdns
done
echo -n >/var/log/pdns/pdns.log
service syslog restart
======
Прописываем его в crontab:
crontab -e
=====
0 2 * * * /usr/local/bin/rmzones.sh
=====

 
« Пред.   След. »
Отзывы клиентов
Блог
Основные FTP команды в Linux

FTP (File Transfer Protocol - протокол передачи файлов) — это популярный сетевой протокол, который используется для копирования файлов с одного компьютера на другой в локальной сети, либо в сети Интернет. FTP является од...

Дальше...
 

Не приходит смс от pp.ua для активации домена - есть решение! Как активировать домен pp.ua без sms через бота Telegram?

 В соответствии с правилами домена pp.ua домен делегируется только после подтверждения регистрации на сайте pp.ua. Для подтв...

Дальше...
 

 


код кнопки:
Мы принимаем: Webmoney Яндекс.Деньги RBK.Деньги Visa и MasterCard Счет юр.лицам Приват 24 Z-Payment MoneyBookers Все способы оплаты
                  
© 2008-2017 HostingHutor.com - Украина, Одесса. Тел/факс: +38 048 7017698 3wave - Дизайн сайтов
Хостинг Хутор: землю - крестьянам, хостинг - вебмастерам! | Бесплатный хостинг | Комплекты видеонаблюдения Вебмастеру в помощь - Askwebmaster