Налаштовуємо superslave dns-сервер
Якщо хтось не знає, 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-мережі.Останні записи з блогу