Установка · 7 min read · Oct 01, 2025

Установка PowerDNS (с MySQL бэкендом) и Poweradmin на Debian Lenny

Установка PowerDNS (с MySQL бэкендом) и Poweradmin на Debian Lenny

Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter

Эта статья показывает, как вы можете установить сервер имен PowerDNS (с MySQL бэкендом) и панель управления Poweradmin для PowerDNS на системе Debian Lenny. PowerDNS - это высокопроизводительный сервер имен только для авторитетных записей - в описанном здесь настройке он будет читать DNS записи из базы данных MySQL (аналогично MyDNS), хотя также поддерживаются и другие бэкенды, такие как PostgreSQL. Poweradmin - это веб-панель управления для PowerDNS.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

В этом примере я использую хост Debian Lenny с именем хоста server1.example.com и IP-адресом 192.168.0.100, настроенным в соответствии с первыми шестью главами этого учебника: Идеальный сервер - Debian Lenny (Debian 5.0) [ISPConfig 2].

Я настрою только один сервер PowerDNS в этом примере (мастер); добавление слейвов PowerDNS можно легко осуществить с помощью репликации базы данных MySQL от мастера к слейвам, поэтому передача зон не требуется (это снова похоже на MyDNS). Репликацию базы данных MySQL можно настроить в соответствии с этим учебником: Как настроить репликацию базы данных в MySQL (PowerDNS также поддерживает нативные передачи зон (для сценариев, когда вы не можете использовать репликацию MySQL) - см. http://downloads.powerdns.com/documentation/html/replication.html).

2 Установка MySQL

Для установки MySQL мы выполняем

aptitude install mysql-server mysql-client

Вам будет предложено ввести пароль для пользователя root MySQL - этот пароль действителен для пользователя root@localhost, а также для [email protected], поэтому нам не нужно будет указывать пароль root MySQL вручную позже:

Новый пароль для пользователя MySQL “root”: <– вашпарольmysql
Повторите пароль для пользователя MySQL “root”: <– вашпарольmysql

Мы хотим, чтобы MySQL слушал на всех интерфейсах (это важно для репликации базы данных MySQL!), а не только на localhost, поэтому мы редактируем /etc/mysql/my.cnf и комментируем строку bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf

| [...] #bind-address = 127.0.0.1 [...] |

Затем мы перезапускаем MySQL:

/etc/init.d/mysql restart

Теперь проверьте, что сеть включена. Выполните

netstat -tap | grep mysql

Вывод должен выглядеть следующим образом:

server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN     3031/mysqld  
server1:~#

3 Установка PowerDNS

Чтобы установить PowerDNS, мы выполняем

aptitude install pdns-server pdns-backend-mysql

Конфигурация PowerDNS находится в каталоге /etc/powerdns - я к этому вернусь через мгновение.

Теперь мы подключаемся к MySQL:

mysql -u root -p

Введите ваш пароль root MySQL, и вы должны оказаться в оболочке MySQL. В оболочке MySQL мы создаем базу данных для PowerDNS:

CREATE DATABASE powerdns;

Затем мы создаем пользователя базы данных (powerdns) для PowerDNS:

GRANT ALL ON powerdns.* TO 'power_admin'@'localhost' IDENTIFIED BY 'power_admin_password';  
GRANT ALL ON powerdns.* TO 'power_admin'@'localhost.localdomain' IDENTIFIED BY 'power_admin_password';  
FLUSH PRIVILEGES;

(Замените power_admin_password на пароль по вашему выбору.)

Теперь мы создаем таблицы, необходимые для PowerDNS…

USE powerdns;
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)  
);
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)  
);
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  
);

… и, наконец, выходим из оболочки MySQL:

quit;

Теперь мы должны настроить PowerDNS так, чтобы он использовал MySQL бэкенд:

vi /etc/powerdns/pdns.conf

Добавьте строку launch=gmysql в pdns.conf:

| [...] ################################# # launch Which backends to launch and order to query them in # # launch= launch=gmysql [...] |

Затем откройте /etc/powerdns/pdns.d/pdns.local и сделайте его следующим:

vi /etc/powerdns/pdns.d/pdns.local

| # Здесь находятся локальные изменения, которые сделал пользователь, такие как конфигурация # нескольких бэкендов, которые существуют. gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns |

Затем перезапустите pdns:

/etc/init.d/pdns restart

Вот и все, PowerDNS теперь готов к использованию. Чтобы узнать больше об этом, пожалуйста, обратитесь к его документации: http://downloads.powerdns.com/documentation/html/index.html

4 Установка Poweradmin

Теперь давайте установим Poweradmin, веб-панель управления для PowerDNS. Poweradmin написан на PHP, поэтому мы должны установить веб-сервер (в этом примере я использую Apache2) и PHP:

aptitude install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext

Poweradmin также требует следующие два пакета PEAR:

pear install DB  
pear install pear/MDB2#mysql

Теперь все предварительные условия для Poweradmin установлены, и мы можем начать установку Poweradmin (я установлю его в подкаталоге /var/www - /var/www является корнем документа по умолчанию для веб-сайта Apache на Debian; если вы создали виртуальный хост с другим корнем документа, пожалуйста, скорректируйте пути).

Перейдите на https://www.poweradmin.org/trac/wiki/GettingPoweradmin и загрузите последний пакет Poweradmin, например, следующим образом:

cd /tmp  
wget https://www.poweradmin.org/download/poweradmin-2.1.4.tgz

Затем установите его в каталог /var/www/poweradmin следующим образом:

tar xvfz poweradmin-2.1.4.tgz  
mv poweradmin-2.1.4 /var/www/poweradmin  
touch /var/www/poweradmin/inc/config.inc.php  
chown -R www-data:www-data /var/www/poweradmin/

Теперь откройте браузер и запустите веб-установщик Poweradmin (http://server1.example.com/poweradmin/install/index.php или http://192.168.0.100/poweradmin/install/index.php).

Выберите ваш язык (английский или голландский):

Нажмите кнопку Перейти к шагу 3, чтобы продолжить:

Теперь заполните данные вашей базы данных. Важно, чтобы вы заполнили данные для пользователя root MySQL, а не для пользователя MySQL powerdns, которого мы создали ранее! Также укажите пароль для пользователя admin для веб-интерфейса Poweradmin (это пароль, который пользователь admin будет использовать для входа в Poweradmin позже):

На следующей странице установщик просит вас выполнить запрос MySQL. Нам не нужно этого делать, потому что мы уже сделали что-то подобное в главе 3 (две GRANT инструкции), так что мы готовы. Нажмите Перейти к шагу 6:

Нажмите Перейти к шагу 7: ![](/files/477ce083-3b1b-484d-b278-bbb687471d1f.png) Установка теперь завершена... ![](/files/7e99ac27-89d2-41e0-be3f-597ce25af296.png) ... но по соображениям безопасности мы должны удалить каталог установки:

rm -fr /var/www/poweradmin/install/


Теперь вы можете перейти на http://server1.example.com/poweradmin или http://192.168.0.100/poweradmin и войти с именем пользователя admin и паролем, который вы создали во время установки:

![](/files/187028cf-3e53-4d47-8327-2d7177b53329.png)

Вот как выглядит веб-интерфейс Poweradmin:

![](/files/9e2931fb-0f8d-4d89-a82e-1af59cad4078.png)

Чтобы создать зону, перейдите в Добавить мастер-зону и заполните имя домена (например, example.com). Вы уже можете заполнить IP-адреса для записи A www ("веб-сервер") и записи MX ("почтовый сервер") для этой зоны. Если вы оставите флажок Создать зону без применения шаблона записей не отмеченным, Poweradmin автоматически создаст некоторые NS, A (например, www) и MX записи для этой зоны:

![](/files/e0fc75f0-c517-430c-979a-deb8d805a366.png)

Затем перейдите к Списку зон. Теперь вы должны увидеть новую зону там, и у нее уже есть восемь записей. Нажмите на значок редактирования, чтобы увидеть эти восемь записей:

![](/files/cb4f069e-b061-4b46-9943-d22394a9dd8d.png)

Это записи, которые создаются автоматически, если вы не отметите флажок Создать зону без применения шаблона записей при создании зоны. Теперь вы можете редактировать их или добавлять и удалять записи:

![](/files/17cd6418-5205-46a2-abf5-380569ec004e.png)

Конечно, вы также можете создать все записи по одной вручную - просто оставьте поля IP-адресов пустыми и отметьте флажок Создать зону без применения шаблона записей на странице Добавить мастер-зону:

![](/files/bcb04e27-2c8e-46cb-86f7-14fd60541a94.png)

На странице Список зон вы увидите, что новая зона имеет только одну запись (запись SOA). Нажмите на значок редактирования...

![](/files/6362e931-6844-492c-a3c7-2b4cf235195d.png)

... а затем на Добавить запись, чтобы добавить дополнительные записи, ...

![](/files/2ba33f58-7b75-48ce-ac27-ae921e6568a0.png)

..., например, NS записи...

![](/files/3e97957a-7505-4c69-b485-57bdd09f47b9.png)

... и A записи (например, для mydomain.com (оставьте поле Имя пустым!) и www.mydomain.com)...

![](/files/5d60687b-78eb-48a3-9421-af01ea0aba7f.png)

![](/files/d857e828-1f3e-4ebc-8a2d-277243545810.png)

... и MX записи:

![](/files/9f8c0537-fa9b-4c40-826a-3fdb8683eb29.png)

Чтобы создать PTR записи, перейдите на страницу Добавить мастер-зону и создайте зону с именем in-addr.arpa (оставьте поля IP-адресов пустыми и отметьте флажок Создать зону без применения шаблона записей):

![](/files/47d461ae-19da-4b1f-ab23-042805b3d065.png)

Чтобы создать PTR запись, которая указывает с IP 1.2.3.4 на server1.example.com, создайте запись в разделе Список зон и заполните 4.3.2.1 в поле Имя (это IP в обратном порядке) и server1.example.com в поле Содержимое:

![](/files/bd59392f-1137-4155-9471-fcb51cc6470f.png)

После того как вы создали свои записи, вы можете проверить их с помощью команды dig (см.

man dig


для получения дополнительных сведений), например, следующим образом:

dig @localhost mx example.com

server1:~# dig @localhost mx example.com

; <> DiG 9.3.4 <> @localhost mx example.com
; (1 сервер найден)
;; глобальные параметры: printcmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37939
;; флаги: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; ВОПРОС СЕКЦИЯ:
;example.com. IN MX

;; ОТВЕТ СЕКЦИЯ:
example.com. 86400 IN MX 10 mail.example.com.

;; ДОПОЛНИТЕЛЬНАЯ СЕКЦИЯ:
mail.example.com. 86400 IN A 1.2.3.4

;; Время запроса: 9 мс
;; СЕРВЕР: 127.0.0.1#53(127.0.0.1)
;; КОГДА: Пн Янв 12 19:56:46 2009
;; MSG SIZE рсд: 66

server1:~#


### 5 Ссылки

- PowerDNS: http://www.powerdns.com/
- Документация PowerDNS: http://downloads.powerdns.com/documentation/html/index.html
- Poweradmin: http://www.poweradmin.org/
- Debian: http://www.debian.org/
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.