Настраиваем superslave dns-сервер PowerDNS
Если кто не знает, superslave - это dns-сервер, который по axfr-запросам получает зону и создает у себя ее автоматически. Таким образом не нужно синхронизировать зонные файлы по rsync или каким-либо образом обеспечивать передачу зонных файлов на slave-сервер.
Установка PowerDNS
Ставим powerdns:
yum install pdns pdns-backend-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
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
Последние новости
Скидка на все домены Украины до 21.10.2022!
Уважаемые пользователи! Целую неделю у нас скидка -15% на регистрацию всех украинских доменов по промокоду defendersday22!Подорожание ряда украинских доменов UA ccTLD!
Уважаемые пользователи! С 1 октября 2022 нас ждет подорожание в ряде украинских доменов - in.ua, od.ua, mk.ua!Важные изменения в работе ряда украинских доменных имен!
Уважаемые пользователи! В некоторых украинских доменных зонах увеличен срок периода Redemption с 30 до 60 дней.Существенное подорожание выделенных IP-адресов (IPv4) в Германии!
Уважаемые пользователи! В Германии существенно подорожали дополнительные выделенные IP-адреса (IPv4) и IP-сети.Последнее в блоге