Показаны сообщения с ярлыком PowerDNS. Показать все сообщения
Показаны сообщения с ярлыком PowerDNS. Показать все сообщения

пятница, 2 декабря 2011 г.

Миграция с Bind на PowerDNS на серверах с ISPmanager - часть 2

Первая часть http://paperknight.blogspot.com/2011/12/bind-powerdns.html

Создание slave зон доменов на slave сервере.

Два пути, выполняем экспорт базы данных PowerDNS (только таблицу domains) на master сервере. Импортируем ее в базу данных Mysql на Slave сервере PowerDNS, меняем тип зон на slave (mysql> update domains set type = 'SLAVE' where type = 'MASTER';) и ждем пока по AXFR пройдут все трансферы записей в зонах с master сервера на slave сервер.

Второй вариант это использовать дополнительный функционал PowerDNS под названием supermaster. При его использовании не понадобится создавать зоны на slave сервере для трансфера, просто указывается т.н. supermaster сервер в базе данных на slave сервере и отправляется notify с master сервера.

На slave сервере:

mysql> show tables;
+----------------+
| Tables_in_pdns |
+----------------+
| domains        |
| records        |
| supermasters   |
+----------------+
3 rows in set (0.00 sec)

mysql> desc supermasters;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ip         | varchar(25)  | NO   |     | NULL    |       |
| nameserver | varchar(255) | NO   |     | NULL    |       |
| account    | varchar(40)  | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into supermasters (ip, nameserver, account) values ('85.10.234.195', 'ns1.local.lan', 'test');
Query OK, 1 row affected (0.00 sec)

Теперь с master сервера отправляем notify на slave сервер и целевая зона автоматически создается на slave сервере со всем ее содержимым.

srv-01:/usr/local/ispmgr/etc# pdns_control notify-host domain1.local 78.47.130.43
Added to queue

Смотрим создался ли домен на slave сервере:

root@srv-02:~# mysql -u root -p -e 'select * from pdns.domains'
Enter password:
+----+---------------+---------------+------------+-------+-----------------+---------+
| id | name          | master        | last_check | type  | notified_serial | account |
+----+---------------+---------------+------------+-------+-----------------+---------+
| 13 | domain1.local | 85.10.234.195 | 1322843394 | SLAVE |            NULL | test    |
+----+---------------+---------------+------------+-------+-----------------+---------+

root@srv-02:~# mysql -u root -p -e 'select * from pdns.records'
Enter password:
+-----+-----------+--------------------+------+-------------------------------------------------------------------+------+------+-------------+
| id  | domain_id | name               | type | content                                                           | ttl  | prio | change_date |
+-----+-----------+--------------------+------+-------------------------------------------------------------------+------+------+-------------+
|  95 |        13 | domain1.local      | SOA  | ns1.local.lan. root.local.lan. 2011120200 10800 3600 604800 86400 | 3600 |    0 |        NULL |
|  96 |        13 | domain1.local      | NS   | ns1.local.lan                                                     | 3600 |    0 |        NULL |
|  97 |        13 | domain1.local      | NS   | ns2.local.lan                                                     | 3600 |    0 |        NULL |
|  98 |        13 | domain1.local      | MX   | mail.domain1.local                                                | 3600 |   10 |        NULL |
|  99 |        13 | domain1.local      | MX   | mail.domain1.local                                                | 3600 |   20 |        NULL |
| 100 |        13 | domain1.local      | A    | 85.10.234.195                                                     | 3600 |   20 |        NULL |
| 101 |        13 | ftp.domain1.local  | A    | 85.10.234.195                                                     | 3600 |   20 |        NULL |
| 102 |        13 | mail.domain1.local | A    | 85.10.234.195                                                     | 3600 |   20 |        NULL |
| 103 |        13 | pop.domain1.local  | A    | 85.10.234.195                                                     | 3600 |   20 |        NULL |
| 104 |        13 | smtp.domain1.local | A    | 85.10.234.195                                                     | 3600 |   20 |        NULL |
| 105 |        13 | www.domain1.local  | A    | 85.10.234.195                                                     | 3600 |   20 |        NULL |
| 106 |        13 | domain1.local      | TXT  | "v=spf1 ip4:85.10.234.195 a mx ~all"                              | 3600 |   20 |        NULL |
+-----+-----------+--------------------+------+-------------------------------------------------------------------+------+------+-------------+

Миграция с Bind на PowerDNS на серверах с ISPmanager

На сервере используется панель ISPmanager и задача выполняется с учетом данного факта.

Миграция мастер-зон доменов Bind'а в Mysql базу данных PowerDNS, в данном примере используются тестовые домены domain1.local, domain1.local, domain1.local. Сам DNS сервер содержит только мастер зоны.

zone2sql - это утилита для конвертирования Bind зон в sql

srv-01:~# zone2sql --named-conf=/etc/bind/named.conf --gmysql > domains_from_bind.sql
100% done
Parsed 79 records

srv-01:~# mysql -u root -p pdns < domains_from_bind.sql

Бэкапим конфиг панели ISPmanager /usr/local/ispmgr/etc/ispmgr.conf (можно не весь, а только строчки где определяются пользователи и их владением, теми или иными доменами)

Проверяем результат:

srv-01:/opt/backup# mysql -u root -p -e 'select * from pdns.domains'
Enter password:
+----+------------------+--------+------------+--------+-----------------+---------+
| id | name             | master | last_check | type   | notified_serial | account |
+----+------------------+--------+------------+--------+-----------------+---------+
| 20 | 127.in-addr.arpa | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 18 |                  | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 19 | localhost        | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 21 | 0.in-addr.arpa   | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 22 | 255.in-addr.arpa | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 23 | domain1.local    | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 24 | domain2.local    | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 25 | domain3.local    | NULL   |       NULL | NATIVE |            NULL | NULL    |
+----+------------------+--------+------------+--------+-----------------+---------+

srv-01:/opt/backup# mysql -u root -p -e 'select * from pdns.records'
Enter password:
+-----+-----------+------------------------+------+-----------------------------------------------------------------+---------+------+-------------+
| id  | domain_id | name                   | type | content                                                         | ttl     | prio | change_date |
+-----+-----------+------------------------+------+-----------------------------------------------------------------+---------+------+-------------+
| 283 |        22 | 255.in-addr.arpa       | SOA  | localhost root.localhost 1 604800 86400 2419200 604800          |  604800 |    0 |        NULL |
| 282 |        21 | 0.in-addr.arpa         | NS   | localhost                                                       |  604800 |    0 |        NULL |
| 281 |        21 | 0.in-addr.arpa         | SOA  | localhost root.localhost 1 604800 86400 2419200 604800          |  604800 |    0 |        NULL |
| 279 |        20 | 127.in-addr.arpa       | NS   | localhost                                                       |  604800 |    0 |        NULL |
| 280 |        20 | 1.0.0.127.in-addr.arpa | PTR  | localhost                                                       |  604800 |    0 |        NULL |
| 277 |        19 | localhost              | AAAA | ::1                                                             |  604800 |    0 |        NULL |
| 278 |        20 | 127.in-addr.arpa       | SOA  | localhost root.localhost 1 604800 86400 2419200 604800          |  604800 |    0 |        NULL |
| 276 |        19 | localhost              | A    | 127.0.0.1                                                       |  604800 |    0 |        NULL |
| 275 |        19 | localhost              | NS   | localhost                                                       |  604800 |    0 |        NULL |
| 274 |        19 | localhost              | SOA  | localhost root.localhost 2 604800 86400 2419200 604800          |  604800 |    0 |        NULL |
| 273 |        18 | m.root-servers.net     | AAAA | 2001:dc3::35                                                    | 3600000 |    0 |        NULL |
| 272 |        18 | m.root-servers.net     | A    | 202.12.27.33                                                    | 3600000 |    0 |        NULL |
| 270 |        18 | l.root-servers.net     | A    | 199.7.83.42                                                     | 3600000 |    0 |        NULL |
| 271 |        18 |                        | NS   | M.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 269 |        18 |                        | NS   | L.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 268 |        18 | k.root-servers.net     | AAAA | 2001:7fd::1                                                     | 3600000 |    0 |        NULL |
| 267 |        18 | k.root-servers.net     | A    | 193.0.14.129                                                    | 3600000 |    0 |        NULL |
| 266 |        18 |                        | NS   | K.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 265 |        18 | j.root-servers.net     | AAAA | 2001:503:C27::2:30                                              | 3600000 |    0 |        NULL |
| 264 |        18 | j.root-servers.net     | A    | 192.58.128.30                                                   | 3600000 |    0 |        NULL |
| 263 |        18 |                        | NS   | J.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 262 |        18 | i.root-servers.net     | A    | 192.36.148.17                                                   | 3600000 |    0 |        NULL |
| 261 |        18 |                        | NS   | I.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 260 |        18 | h.root-servers.net     | AAAA | 2001:500:1::803f:235                                            | 3600000 |    0 |        NULL |
| 242 |        18 |                        | NS   | A.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 243 |        18 | a.root-servers.net     | A    | 198.41.0.4                                                      | 3600000 |    0 |        NULL |
| 244 |        18 | a.root-servers.net     | AAAA | 2001:503:BA3E::2:30                                             | 3600000 |    0 |        NULL |
| 245 |        18 |                        | NS   | B.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 246 |        18 | b.root-servers.net     | A    | 192.228.79.201                                                  | 3600000 |    0 |        NULL |
| 247 |        18 |                        | NS   | C.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 248 |        18 | c.root-servers.net     | A    | 192.33.4.12                                                     | 3600000 |    0 |        NULL |
| 249 |        18 |                        | NS   | D.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 250 |        18 | d.root-servers.net     | A    | 128.8.10.90                                                     | 3600000 |    0 |        NULL |
| 251 |        18 |                        | NS   | E.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 252 |        18 | e.root-servers.net     | A    | 192.203.230.10                                                  | 3600000 |    0 |        NULL |
| 253 |        18 |                        | NS   | F.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 254 |        18 | f.root-servers.net     | A    | 192.5.5.241                                                     | 3600000 |    0 |        NULL |
| 255 |        18 | f.root-servers.net     | AAAA | 2001:500:2f::f                                                  | 3600000 |    0 |        NULL |
| 256 |        18 |                        | NS   | G.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 257 |        18 | g.root-servers.net     | A    | 192.112.36.4                                                    | 3600000 |    0 |        NULL |
| 258 |        18 |                        | NS   | H.ROOT-SERVERS.NET                                              | 3600000 |    0 |        NULL |
| 259 |        18 | h.root-servers.net     | A    | 128.63.2.53                                                     | 3600000 |    0 |        NULL |
| 284 |        22 | 255.in-addr.arpa       | NS   | localhost                                                       |  604800 |    0 |        NULL |
| 285 |        23 | domain1.local          | SOA  | ns1.local.lan root.local.lan 2011120200 10800 3600 604800 86400 |    3600 |    0 |        NULL |
| 286 |        23 | domain1.local          | NS   | ns1.local.lan                                                   |    3600 |    0 |        NULL |
| 287 |        23 | domain1.local          | NS   | ns2.local.lan                                                   |    3600 |    0 |        NULL |
| 288 |        23 | domain1.local          | MX   | mail.domain1.local                                              |    3600 |   10 |        NULL |
| 289 |        23 | domain1.local          | MX   | mail.domain1.local                                              |    3600 |   20 |        NULL |
| 290 |        23 | domain1.local          | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 291 |        23 | ftp.domain1.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 292 |        23 | mail.domain1.local     | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 293 |        23 | pop.domain1.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 294 |        23 | smtp.domain1.local     | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 295 |        23 | www.domain1.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 296 |        23 | domain1.local          | TXT  | "v=spf1 ip4:85.10.234.195 a mx ~all"                            |    3600 |    0 |        NULL |
| 297 |        24 | domain2.local          | SOA  | ns1.local.lan root.local.lan 2011120200 10800 3600 604800 86400 |    3600 |    0 |        NULL |
| 298 |        24 | domain2.local          | NS   | ns1.local.lan                                                   |    3600 |    0 |        NULL |
| 299 |        24 | domain2.local          | NS   | ns2.local.lan                                                   |    3600 |    0 |        NULL |
| 300 |        24 | domain2.local          | MX   | mail.domain2.local                                              |    3600 |   10 |        NULL |
| 301 |        24 | domain2.local          | MX   | mail.domain2.local                                              |    3600 |   20 |        NULL |
| 302 |        24 | domain2.local          | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 303 |        24 | ftp.domain2.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 304 |        24 | mail.domain2.local     | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 305 |        24 | pop.domain2.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 306 |        24 | smtp.domain2.local     | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 307 |        24 | www.domain2.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 308 |        24 | domain2.local          | TXT  | "v=spf1 ip4:85.10.234.195 a mx ~all"                            |    3600 |    0 |        NULL |
| 309 |        25 | domain3.local          | SOA  | ns1.local.lan root.local.lan 2011120200 10800 3600 604800 86400 |    3600 |    0 |        NULL |
| 310 |        25 | domain3.local          | NS   | ns1.local.lan                                                   |    3600 |    0 |        NULL |
| 311 |        25 | domain3.local          | NS   | ns2.local.lan                                                   |    3600 |    0 |        NULL |
| 312 |        25 | domain3.local          | MX   | mail.domain3.local                                              |    3600 |   10 |        NULL |
| 313 |        25 | domain3.local          | MX   | mail.domain3.local                                              |    3600 |   20 |        NULL |
| 314 |        25 | domain3.local          | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 315 |        25 | ftp.domain3.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 316 |        25 | mail.domain3.local     | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 317 |        25 | pop.domain3.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 318 |        25 | smtp.domain3.local     | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 319 |        25 | www.domain3.local      | A    | 85.10.234.195                                                   |    3600 |    0 |        NULL |
| 320 |        25 | domain3.local          | TXT  | "v=spf1 ip4:85.10.234.195 a mx ~all"                            |    3600 |    0 |        NULL |
+-----+-----------+------------------------+------+-----------------------------------------------------------------+---------+------+-------------+

Корректируем тип зон (так как утилита zone2sql в процессе конвертирования, задает тип зон как NATIVE)

mysql> select * from domains;
+----+------------------+--------+------------+--------+-----------------+---------+
| id | name             | master | last_check | type   | notified_serial | account |
+----+------------------+--------+------------+--------+-----------------+---------+
| 20 | 127.in-addr.arpa | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 18 |                  | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 19 | localhost        | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 21 | 0.in-addr.arpa   | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 22 | 255.in-addr.arpa | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 23 | domain1.local    | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 24 | domain2.local    | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 25 | domain3.local    | NULL   |       NULL | NATIVE |            NULL | NULL    |
+----+------------------+--------+------------+--------+-----------------+---------+
8 rows in set (0.00 sec)

mysql> update domains set type = 'MASTER' where type = 'NATIVE';
Query OK, 8 rows affected (0.00 sec)
Rows matched: 8  Changed: 8  Warnings: 0

mysql> select * from domains;
+----+------------------+--------+------------+--------+-----------------+---------+
| id | name             | master | last_check | type   | notified_serial | account |
+----+------------------+--------+------------+--------+-----------------+---------+
| 20 | 127.in-addr.arpa | NULL   |       NULL | MASTER |            NULL | NULL    |
| 18 |                  | NULL   |       NULL | MASTER |            NULL | NULL    |
| 19 | localhost        | NULL   |       NULL | MASTER |            NULL | NULL    |
| 21 | 0.in-addr.arpa   | NULL   |       NULL | MASTER |            NULL | NULL    |
| 22 | 255.in-addr.arpa | NULL   |       NULL | MASTER |            NULL | NULL    |
| 23 | domain1.local    | NULL   |       NULL | MASTER |            NULL | NULL    |
| 24 | domain2.local    | NULL   |       NULL | MASTER |            NULL | NULL    |
| 25 | domain3.local    | NULL   |       NULL | MASTER |            NULL | NULL    |
+----+------------------+--------+------------+--------+-----------------+---------+
8 rows in set (0.00 sec)

Проверяем корректность пользовательских аккаунтов в том плане, что каждый пользователь является владельцем именно своих доменов в ISPmanager

srv-01:/usr/local/ispmgr/etc# tail -n4 /usr/local/ispmgr/etc/ispmgr.conf
Domain domain1.local 500
Domain domain2.local 503
Domain domain3.local 504

Заходим в панель ISPmanager и проверяем все ли в порядке.

PowerDNS на серверах с ISPmanager

В новых версиях панель ISPmanager теперь штатно умеет поддерживать работу с PowerDNS, помимо BIND.

Имеем два сервера с DNS на базе PowerDNS и панелью ISPmanager. Первый master, второй slave в контексте DNS.

Некоторые заметки:

На мастер-сервере в панели ISPmanager настраиваем стандартную поддержку slave DNS серверов "Домены" -> "Вторичные серверы имен"

При создании на мастер-сервере нового домена на слейв-сервере в Mysql базу данных PowerDNS панелью ISPmanager добавляется новый домен, при удалении соответственно удаляется:

root@srv-02:/var/log/mysql# grep -i insert mysql.log | grep -i fastvps.local
                   44 Query     insert into domains (name, master, type) values ('fastvps.local', '85.10.234.195', 'SLAVE')

mysql> select * from domains;
+----+---------------+---------------+------------+-------+-----------------+---------+
| id | name          | master        | last_check | type  | notified_serial | account |
+----+---------------+---------------+------------+-------+-----------------+---------+
|  6 | fastvps.local | 85.10.234.195 |       NULL | SLAVE |            NULL | NULL    |
+----+---------------+---------------+------------+-------+-----------------+---------+
1 row in set (0.00 sec)

Для работы трансфера зон подправить дефолтные конфиги PowerDNS, те что кладет ISPmanager

На мастер-сервере

/etc/powerdns/pdns.conf

allow-axfr-ips=<IP_адрес_slave_сервера>
master=yes
disable-axfr=no

На слейв-сервере

/etc/powerdns/pdns.conf

slave=yes