版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/signmem/article/details/86163581
说明
1. 环境为 pdns_server 4.1 版本下测试
2. 本文只提供部分再主从同步过程中出现的问题
3. 具体主从同步方法参考下面文档
文档参考
架构图参考
服务说明
1. pdns-recursor 自身不提供 DNS 解析, 只提供转发功能
2. pdns-server 利用了 backend (例如 mysql) 进行了 zone 管理,并提供 dns 管理服务
架构参考
1. 当前对外支持 DNS (53) 端口为 pdns-recursor 服务
2. 可以配置 pdns-recursor 上游 DNS 服务器例如大家熟悉的 8.8.8.8
3. 自主管理的 pdns 服务器监听在 (5300) 端口
4. 必须在 pdns-recursor 中定义指定那些 ZONE 需要转发到自主管理的 pdns 服务进行解析 (ex: 163.com=10.199.212.241:5300)
example 说明
1. 当 user 访问 pdns-recursor 希望解析 www.redhat.com
2. 由于 pdns-recursor 没有在 zone 定义管理 redhat.com, 那么将会 forward 请求至 8.8.8.8, 再转发结果至 user
3. 当 user 访问 pdns-recursor 希望解析 www.163.com
4. 由于 pdns-recursor 在 zone 定义了自行管理 163.com, 那么将会 forward 请求至 pdns-server (5300),再转发结果至 user
常见问题
master slave 同是 4.1.X, 如何 notify 到 slave
> 在 pdns 3.x, 2.x 下, 当 master upload 了 serial number 后
> 根据 master pdns.conf 配置 also-notify=1.1.1.1 参数即可主动通知从服务器
> 当 pdns 4.x notify slave 时候,同样也只会通知 53 端口, 无法做到通知 pdns-server 服务
解决方法
> 无需再 /etc/pdns/pdns.conf 中配置 also-notify=1.1.1.1 (无法指定端口)
> 在 master 的 database 中,插入下面的 item
语法
MariaDB [pdns]> insert into domainmetadata (domain_id, kind, content) values (1, 'ALSO-NOTIFY', 'slavednsipaddr:5300');
Query OK, 1 row affected (0.00 sec)
同步过程中遇到权限问题
当主从同步出现下面错误
(master)
Jan 9 16:48:33 pdns_server: AXFR of domain 'XXX.com' initiated by slaveip
Jan 9 16:48:33 pdns_server: AXFR of domain 'XXX.com' denied: client IP slaveip has no permission
Jan 9 16:48:33 pdns_server: AXFR of domain 'XXX.com' failed: slaveip cannot request AXFR
(slave)
Jan 9 16:49:07 pdns_server: Domain 'xxx.com' is stale, master serial 5, our serial 3
Jan 9 16:49:07 pdns_server: Initiating transfer of 'xxx.com' from remote 'master:5300'
Jan 9 16:49:07 pdns_server: Starting AXFR of 'xxx.com' from remote master:5300
Jan 9 16:49:07 pdns_server: Unable to AXFR zone 'xxx.com' from remote 'master:5300' (resolver): AXFR chunk error: Server Not Authoritative for zone / Not Authorized
因为当前需要全量同步 (AXFR) 则需要在 master 中允许 slave 访问
解决办法
针对每个域名 (注意, 这里只需要指定IP, 不需要指定端口)
MariaDB [pdns]> insert into domainmetadata (domain_id, kind, content) values (1, 'ALLOW-AXFR-FROM', 'slaveip');
Query OK, 1 row affected (0.00 sec)
针对所有域名
/etc/pdns/pdns.conf
allow-axfr-ips=x.x.x.x 指定 ip 就可以
同步时间问题
master, slave 都可以通过 slave-cycle-interval 定义
控制检测 serial number 变更的时间