Установка PowerDNS на Centos7

В этом уроке я покажу вам, как установить PowerDNS и PDNSManager на CentOS 7 VPS с Nginx, MariaDB и PHP-FPM. PowerDNS — это высокопроизводительный и надежный DNS-сервер, написанный на C ++ и используемый в качестве альтернативы BIND. Это руководство должно работать и на других системах Linux VPS, но было протестировано и написано для CentOS 7 VPS
Подключаю Epel и провожу обновление системы

1
2
yum install epel-release
yum -y update

Установка MariaDB

1
yum install mariadb-server mariadb

Запуск и установка Mariadb в автозагрузку

1
2
systemctl start mariadb.service
systemctl enable mariadb.service

Очень важно защитить ваш сервер MariaDB, запустить следующий скрипт перед созданием и заполнением баз данных.

1
mysql_secure_installation

После того, как вы закончите с вышеприведенным шагом, войдите в систему в качестве root MariaDB и создайте новую базу данных и таблицы:

1
mysql -uroot -p

и создайте базу, и пользователя нашей базы

1
2
CREATE DATABASE powerdns;
GRANT ALL PRIVILEGES ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'powerdnsPassword';

Перейдем к установке и настройке последней версии PowerDNS

1
yum install pdns-backend-mysql pdns

Ниже приведен мой конфиг pdns.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
setuid=pdns
setgid=pdns
launch=bind
allow-axfr-ips=1.1.1.1 #IP Slave сервера
config-dir=/etc/pdns
daemon=yes
disable-axfr=no
guardian=yes
local-address=0.0.0.0
local-port=53
master=yes
module-dir=/lib64/pdns
socket-dir=/var/run
version-string=IT-SVCDNS
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerBD
gmysql-user=powerUSER
gmysql-password=powerPASS
gmysql-dnssec=no

Далее есть 2 варианта использования
1. Установить web panel на подобии PManager, Power Admin ип.
Устанавливаются в основном панели через инсталяторы, поэтому все необходимые таблицы будут экспортированы в mysql
2. Управлять через phpmyadmin
Если вы захотели делать все ручками, то дамп прилагается:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
CREATE TABLE `domainmetadata` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `domain_id` INT(11) NOT NULL,
  `kind` VARCHAR(32) DEFAULT NULL,
  `content` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `domains` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL,
  `master` VARCHAR(128) DEFAULT NULL,
  `last_check` INT(11) DEFAULT NULL,
  `type` VARCHAR(6) NOT NULL,
  `notified_serial` INT(11) DEFAULT NULL,
  `account` VARCHAR(40) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_index` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

CREATE TABLE `options` (
  `name` VARCHAR(255) NOT NULL,
  `value` VARCHAR(2000) DEFAULT NULL,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `permissions` (
  `user` INT(11) NOT NULL,
  `domain` INT(11) NOT NULL,
  PRIMARY KEY (`user`,`domain`),
  KEY `domain` (`domain`),
  CONSTRAINT `permissions_ibfk_1` FOREIGN KEY (`domain`) REFERENCES `domains` (`id`) ON DELETE CASCADE,
  CONSTRAINT `permissions_ibfk_2` FOREIGN KEY (`user`) REFERENCES `user` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `records` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `domain_id` INT(11) DEFAULT NULL,
  `name` VARCHAR(255) DEFAULT NULL,
  `type` VARCHAR(6) DEFAULT NULL,
  `content` VARCHAR(255) DEFAULT NULL,
  `ttl` INT(11) DEFAULT NULL,
  `prio` INT(11) NOT NULL DEFAULT '0',
  `change_date` INT(11) DEFAULT NULL,
  `disabled` tinyint(1) DEFAULT '0',
  `auth` tinyint(1) DEFAULT '1',
  PRIMARY KEY (`id`),
  KEY `rec_name_index` (`name`),
  KEY `nametype_index` (`name`,`type`),
  KEY `domain_id` (`domain_id`),
  CONSTRAINT `records_ibfk_1` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;

CREATE TABLE `remote` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `record` INT(11) NOT NULL,
  `description` VARCHAR(255) NOT NULL,
  `type` VARCHAR(20) NOT NULL,
  `security` VARCHAR(2000) NOT NULL,
  `nonce` VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `record` (`record`),
  CONSTRAINT `remote_ibfk_1` FOREIGN KEY (`record`) REFERENCES `records` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;