美文网首页
powerdns zone配置

powerdns zone配置

作者: 一瓶多先生 | 来源:发表于2020-10-28 11:19 被阅读0次

    Zone Settings

    概述

    根据10.1 PowerDNS安装部署 中内容进行配置zone, 建立好powerdns集群后根据需要的域名进行如下配置, 下文的测试域名为example.com, 根据节点的状态分别进行配置。 配置DNS之前需要明白[DNS Modes of Operation](#DNS Modes of Operation) [SOA and NS记录区别](#SOA and NS记录区别) 还有powerdns私用zone递归查询

    DNS Modes of Operation

    Powerdns总体来说有Master/SlaveNative replication 两个模式, 其中Native replication 数据库主从复制。 考虑使用数据库主从复制的维护成本比较高, 所以使用Master/Slave模式, 当启用Master/Slave模式时需要注意如下配置:

    • Master/Slave状态必须在 /etc/powerdns/pdns.conf 配置文件中指定
    • Master/Slave的状态存在数据库中的domains表中, 表中的type字段必须生命为Master 或者Slave, 如果type为Slave那么表中的Master字段需要存Master节点的IP地址
    • Nameserver必须设置为NS记录

    主要工作原理如下:

    ​ 提到Master和Slave的记录同步就不得不说到SOA记录中的序列号记录和dns的全量更新协议(AXFR)/dns的增量更新协议(IXFR) 。 DNS的区域复制只会发生在如下的情况:

    • 当区域的刷新间隔到期时
    • 当其Master服务器主动向Slave服务器通知区域更改时
    • 启动区域的Slave服务器时
    • 在区域的Slave服务器使用DNS控制台以便手动启动来自其master服务器的传送时

    区域复制的主要流程如下:

    • Slave像Master发出请求查询SOA
    • Master 响应请求并回复SOA资源记录的给Slave, Slave进行序列号对比如果这个number比当前存储的高那就说明master服务器存在改变
    • Slave服务器向Master DNS服务器发送初始“所有区域”传送(AXFR)区域传输请求。
    • Master服务器作出响应并将全量或者增量信息发送给Slave服务器
    • 根据SoA记录中refresh的间隔, slave服务器从新进行上面的操作

    有关DNS Notify的更多内容请查看https://tools.ietf.org/html/rfc1996.html

    SOA and NS记录区别

    ​ 在任何 DNS 记录文件(Domain Name System (DNS) Zone file)中, 都是以SOA(Start of Authority)记录开始。SOA 资源记录表明此 DNS 名称服务器是为该 DNS 域中的数据的信息的最佳来源。SOA 记录与 NS 记录的区别:简单讲,NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间的信息.

    SOA

    ​ SOA记录表明了DNS服务器之间的关系。SOA记录表明了谁是这个区域的所有者。比如51CTO.COM这个区域。一个DNS服务器安装后,需要创建一个区域,以后这个区域的查询解析,都是通过DNS服务器来完成的。现在来说一下所有者,我这里所说的所有者,就是谁对这个区域有修改权利。常见的DNS服务器只能创建一个标准区域,然后可以创建很多个辅助区域。标准区域是可以读写修改的。而辅助区域只能通过标准区域复制来完成,不能在辅助区域中进行修改。而创建标准区域的DNS就会有SOA记录,或者准确说SOA记录中的主机地址一定是这个标准区域的服务器IP地址。

    存储格式为:

    primary hostmaster serial refresh retry expire default_ttl
    

    dig查询出的格式如下

    ns1.a.shifen.com. baidu_dns_master.baidu.com. 2003200012 5 5 2592000 3600
    
    • primary: default-soa-name 表示该Zone的解析服务器
    • hostmaster: hostmaster@domain-name 表示该域名的所有者, 该信息的第一个点表示为@
    • serial(序列号): 是域名记录的版本,每更改一次域名的任何DNS记录,版本号就会自动加一,这时secondary dns就会知道DNS记录发生更改,以便重新同步。
    • refresh(刷新时间): 告诉secondary dns多久应该查询primary dns,看看DNS记录是否有更新。每次查询时,secondary dns会向primary dns请求SOA记录。如果记录中的serial number跟secondary dns已有的序列号不一样,则会向primary dns请求传送域名的当前的DNS记录。
    • retry(重试时间): 如果想primary dns请求传送域名当前的DNS记录失败后,间隔重试时间后再次重试请求。一般来说,retry小于refresh。
    • expire:(过期时间): 在过期时间之前,secondary dns会继续请求DNS记录,并且在此时间里,secondary dns会根据已有的记录应答相关的DNS查询。如果到了过期时间后,secondary dns会停止应答该域名的DNS查询。
    • default_ttl 域名所有记录的最小生存时间值。当用户DNS查询到记录后,将存在缓存中,直到至少过了这个时间才将缓存刷新重新查询。

    powerdns私用zone递归查询

    如下图所示当使用powerdns做为私有zone解析时, recursor将私有zone的转发到authoritative Server, 将不是私有zone的转发到其它dns服务器上, recursor的配置请看 [Recursor Node](#Recursor Node)

    zone配置实例

    Master Node

    建立zone与解析

    本文Master node的backend为Mysql,可以直接执行如下SQL建立zone与records, 也另外一种方法使用Powerdns-admin进行相关配置,还有一种方式使用pdnsutil 命令行工具, 建立完成后使用dig验证解析是否生效

    mysql> INSERT INTO domains (name, type) values ('example.com', 'Master');
    mysql> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'example.com','localhost admin.example.com 1 10380 3600 604800 3600','SOA',86400,NULL);
    mysql> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'example.com','dns-us1.powerdns.net','NS',86400,NULL);
    mysql>  INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'example.com','dns-eu1.powerdns.net','NS',86400,NULL);
    mysql>  INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'www.example.com','192.0.2.10','A',120,NULL);
    

    以上SQL的主要内容解析如下:

    • 第1行为建立example.com的zone, 由于为Master使用所以type=Master
    • 第2行设置example.com的SOA记录
    • 第3,4行设置zone的nameserver, 一般为powerdns_slave地址
    • 第5行为设置·www.example.com的A记录

    pdnsutil

    创建zone, 但是创建出来的zone的类型为native,要求为master
    # pdnsutil create-zone example.com ns1.example.com.    
    添加A 记录record
    # pdnsutil add-record example.com www  A '10.40.58.153'
    New rrset:
    www  example.com. 3600 IN A 10.40.58.153
    添加NS的A记录
    # pdnsutil add-record example.com ns1  A '10.40.58.153'
    New rrset:
    www  example.com. 3600 IN A 10.40.58.153
    

    设置zone的metadata

    登录Master节点使用powerdns的命令行工具设置metadata, 由于/etc/powerdns/pdns.conf没有设置default notify

    # pdnsutil set-meta example.com ALSO-NOTIFY 10.40.58.153
    
    • 其中example.com为zone的名称, 实际情况根据建立zone与解析 SQL中第一行插入的zone为准
    • ALSO-NOTIFY 10.40.58.153 当这个zone发生通知时通知到10.40.58.15310.40.58.153为Slave节点的IP地址

    查看zone的metadata

    pdnsutil get-meta example.com
    

    验证解析是否生效

    dig A www.example.com @127.0.0.1   #验证A记录是否正常
    dig SOA example.com  @127.0.0.1    #验证SOA记录是否正常
    dig NS example.com @127.0.0.1      #验证NS记录是否正常
    

    Slave Node

    创建slave zone

    # pdnsutil create-slave-zone example.com 10.40.58.116
    Creating slave zone 'example.com', with master(s) '10.40.58.116:53'
    
    从master上拉取所有的record
    # pdns_control retrieve example.com
    
    删除slave zone
    # pdnsutil delete-zone example.com
    
    从master从新拉取记录
    
    

    Recursor Node

    编辑/etc/powerdns/recursor.conf 添加如下信息

    forward-zones=example.com.=10.40.58.153:53
    forward-zones-recurse=.=100.100.2.136:53;100.100.2.138:53
    
    • 其中forward-zones=example.com 表示将所有该zone的解析交给10.40.58.153这个地址进行解析
    • forward-zones-recurse 表示将不是example.com zone的解析全部交给这两个IP地址解析

    配置完成后重新启动recursor根据解析进行测试, 请参考 验证解析是否生效

    Q&A

    1. Unable to AXFR zone 'example.com' from remote '10.40.61.116:53' (PDNSException): GSQLBackend unable to feed record: CANTOPEN error in sqlite3, often caused by unwritable sqlite3 db _directory_: unable to open database file

      是因为 /var/lib/powerdbns 目录所属用户和组为root, 执行chown -R pdns:pdns /var/lib/powerdns可以解决此问题

    2. pdns_server: Notification for example.com to 10.40.58.154:53 failed after retries

      查看10.40.58.154主机发现没有任何的日志输出, 也没有触发AXFR, 查看example.com 的metadata发现没有配置also-notify, NS记录也配置错误

    3. Request to queue notification for domain 'example.com' was processed, but no valid nameservers or ALSO-NOTIFYs found. Not notifying!

      zone不存在有效的NS记录也没有配置ALSO-NOTIFYs

    相关文章

      网友评论

          本文标题:powerdns zone配置

          本文链接:https://www.haomeiwen.com/subject/geqamktx.html