15.01.2010

Налаштовуємо superslave dns-сервер

Налаштовуємо 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!
14.10.2022
Знижка на всі домени України до 21.10.2022!
Шановні користувачі! Цілий тиждень у нас знижка -15% на реєстрацію всіх українських доменів за промокодом defendersday22!
Подорожчання низки українських доменів UA ccTLD!
28.09.2022
Подорожчання низки українських доменів UA ccTLD!
Шановні користувачі! З 1 жовтня 2022 року на нас чекає подорожчання низки українських доменів - in.ua, od.ua, mk.ua!
Важливі зміни у роботі низки українських доменів!
09.03.2022
Важливі зміни у роботі низки українських доменів!
Шановні користувачі! У деяких українських доменних зонах збільшено термін періоду Redemption з 30 до 60 днів.
Подорожчання виділених IP-адрес (IPv4) у Німеччині!
09.08.2021
Подорожчання виділених IP-адрес (IPv4) у Німеччині!
Шановні користувачі! У Німеччині істотно подорожчали додаткові виділені IP-адреси (IPv4) та IP-мережі.

Останні записи з блогу

Коронавірус Coronavirus (COVID-19) та кібершахраї в мережі Інтернет
02.03.2020
Коронавірус Coronavirus (COVID-19) та кібершахраї в мережі Інтернет
Паніку навколо коронавірусу COVID-19 використовують у мережі Інтернет кібершахраї - фішинг, продаж масок, вакцин і тестів.
Не відправляється пошта - перевіряємо чи не блокує провайдер 25 порт
11.01.2020
Не відправляється пошта - перевіряємо чи не блокує провайдер 25 порт
Перевіряємо чи блокує провайдер 25 порт за допомогою командного рядка в ОС Windows. Як відправляти пошту якщо 25 порт заблокований.
Як встановити Clam AntiVirus (ClamAV) на VPS або сервер з ОС CentOS
11.11.2019
Як встановити Clam AntiVirus (ClamAV) на VPS або сервер з ОС CentOS
Встановлюємо Clam AntiVirus (ClamAV) на VPS / VDS або виділений сервер з ОС CentOS і налаштовуємо щоденне сканування сервера.
ISPmanager більше не підтримує резервне копіювання на Яндекс.Диск
20.10.2019
ISPmanager більше не підтримує резервне копіювання на Яндекс.Диск
Протягом тижня Яндекс.Диск зникне зі списку сховища для резервного копіювання в панелі ISPmanager та інших продуктах ISPsystem.