У меня проблема при попытке перенести полную зону с сервера PowerDNS на сервер Bind9. Странная часть состоит в том, что на сервере PowerDNS есть несколько зон, которые служат скрытым мастером (с серверной частью MySQL), но только одна зона не может быть перенесена на сервер Bind9.
Два сервера работают под управлением Ubuntu 16.04 LTS. С участием:
Подчиненная зона Bind9 настроена следующим образом:
zone "example.net" {
type slave;
file "/var/lib/bind/slaves/db.example.net";
masters {
10.0.0.1;
};
};
А зона DNS от PowerDNS:
% sudo pdnsutil show-zone example.net
This is a Master zone
Last SOA serial number we notified: 2016050801 == 2016050801 (serial in the database)
Zone is not actively secured
Metadata items: None
No keys for zone 'example.net.'.
% sudo pdnsutil list-zone example.net
example.net. 10800 IN MX 10 mx1.example.org.
example.net. 10800 IN MX 50 mx2.example.org.
example.net. 10800 IN NS ns1.example.org.
example.net. 10800 IN NS ns2.example.org.
example.net. 86400 IN SOA ns1.example.org. hostmaster.example.org. 2016050801 28800 7200 604800 86400
...
Обратите внимание на разницу между .сеть и .org в этом выходе. А вот вывод PowerDNS в журнале при попытке предоставить зону для Bind.
May 9 00:44:14 hdns01 pdns[40494]: AXFR of domain 'example.net.' initiated by 10.0.0.2
May 9 00:44:14 hdns01 pdns[40494]: AXFR of domain 'example.net.' allowed: client IP 10.0.0.2 is in allow-axfr-ips
May 9 00:44:14 hdns01 pdns[40494]: AXFR of domain 'example.net.' failed: not authoritative
И соответствующие журналы, предоставленные Bind.
May 9 00:44:14 rdns01 named[32973]: zone example.net/IN: refresh: unexpected rcode (REFUSED) from master 10.0.0.1#53 (source 0.0.0.0#0)
May 9 00:44:14 rdns01 named[32973]: zone example.net/IN: Transfer started.
May 9 00:44:14 rdns01 named[32973]: transfer of 'example.net/IN' from 10.0.0.1#53: connected using 10.0.0.2#55376
May 9 00:44:14 rdns01 named[32973]: transfer of 'example.net/IN' from 10.0.0.1#53: failed while receiving responses: NOTAUTH
May 9 00:44:14 rdns01 named[32973]: transfer of 'example.net/IN' from 10.0.0.1#53: Transfer status: NOTAUTH
May 9 00:44:14 rdns01 named[32973]: transfer of 'example.net/IN' from 10.0.0.1#53: Transfer completed: 0 messages, 0 records, 0 bytes, 0.004 secs (0 bytes/sec)
Итак, Bind9 говорит, что сервер не является авторитетным. Это странно. Итак, давайте использовать копать землю чтобы немного прояснить ситуацию.
% dig @10.0.0.1 example.net. SOA
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @10.0.0.1 example.net. SOA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47002
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1680
;; QUESTION SECTION:
;example.net. IN SOA
;; ANSWER SECTION:
example.net. 86400 IN SOA ns1.example.org. hostmaster.example.org. 2016050801 28800 7200 604800 86400
;; Query time: 2 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Mon May 09 00:53:51 CEST 2016
;; MSG SIZE rcvd: 104
Мне кажется довольно авторитетным. После этого я попытался сделать AXFR с помощью dig. И удивительно, что это работает ...
% dig -t axfr example.net @10.0.0.1
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t axfr example.net @10.0.0.1
;; global options: +cmd
example.net. 86400 IN SOA ns1.example.org. hostmaster.example.org. 2016050801 28800 7200 604800 86400
...
;; Query time: 73 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Mon May 09 00:56:42 CEST 2016
;; XFR size: 58 records (messages 3, bytes 1952)
Я больше не знаю, где искать.
Спасибо за вашу помощь.
ОБНОВИТЬ:
Журналы захвата пакетов:
1 0.000000 10.0.0.2 10.0.0.1 DNS 82 Standard query 0xe0dd SOA example.net OPT
2 0.002902 10.0.0.1 10.0.0.2 DNS 82 Standard query response 0xe0dd Refused SOA example.net OPT
6 0.004506 10.0.0.2 10.0.0.1 DNS 97 Standard query 0x205c AXFR example.net
8 0.006432 10.0.0.1 10.0.0.2 DNS 97 Standard query response 0x205c Not authoritative AXFR example.net
Журналы PowerDNS из успешного ручного AXFR:
May 9 08:19:51 hdns01 pdns[40494]: AXFR of domain 'example.net.' initiated by 10.0.0.2
May 9 08:19:51 hdns01 pdns[40494]: AXFR of domain 'example.net.' allowed: client IP 10.0.0.2 is in allow-axfr-ips
May 9 08:19:52 hdns01 pdns[40494]: AXFR of domain 'example.net.' to 10.0.0.2 finished
Файл конфигурации PowerDNS:
#################################
# allow-axfr-ips Allow zonetransfers only to these subnets
#
allow-axfr-ips=127.0.0.0/8,::1,10.0.0.2
#################################
# also-notify When notifying a domain, also notify these nameservers
#
also-notify=10.20.1.78,10.0.0.2
#################################
# daemon Operate as a daemon
#
daemon=yes
#################################
# include-dir Include *.conf files from this directory
#
# include-dir=
include-dir=/etc/powerdns/pdns.d
#################################
# launch Which backends to launch and order to query them in
#
# launch=
launch=
#################################
# master Act as a master
#
master=yes
#################################
# setgid If set, change group id to this gid for more security
#
setgid=pdns
#################################
# setuid If set, change user id to this uid for more security
#
setuid=pdns
И часть конфигурации серверной части MySQL внутри /etc/powerdns/pdns.d/ каталог.
# MySQL Configuration
#
# Launch gmysql backend
launch+=gmysql
# gmysql parameters
gmysql-host=127.0.0.1
gmysql-port=
gmysql-dbname=pdns
gmysql-user=MYUSER
gmysql-password=MYPASSWORD
gmysql-dnssec=yes
# gmysql-socket=
По моей просьбе плакат попал в наш IRC-канал #powerdns, где мы быстро выяснили, что на самом деле между доменными именами на главном и подчиненном серверах есть опечатка, скрытая за счет обфускации, которая была сделана, чтобы задать вопрос здесь.
Я здесь догадываюсь, потому что вы в основном скрывали все, что было полезно. Вы нарочно пытаетесь усложнить вам помощь?
Похоже, у вас есть example.net
запись в вашем domains
стол, но под этим domain_id
в records
стол, ты положишь example.org
записи. pdnsutil check-all-zones
(или pdnssec
если вы используете 3.x), вероятно, заметите это для вас.