内网DNS 结构
10.0.192.13, 10.0.192.17
10.104.73.26,10.104.93.0
vip 10.0.192.32
使用 PowerDNS 全家桶
- PowerDNS-Authoritative 作为权威服务
- PowerDNS-Recursor 作为递归服务(缓存)
- dnsdist 作为边缘节点来提供智能解析(根据请求ip,转发到不同的权威服务 ,缓存)
- PowerDNS-Admin web界面权威服务管理
说明
- 提供友好的web管理界面
- 智能解析(根据来源内外网,解析到不同地址)
- 提供众多的Metrics 等服务状态监控
- 高可用(数据存于Mysql)
结构
权威服务
数据采用Mysql存储
对应内外网两条链路,可部署两套 分别解析
安装及配置
1 2 3 4 5 6 7 8
| 使用官方源 yum 安装 即可 https://repo.powerdns.com/ 如centos7下
yum install epel-release yum-plugin-priorities && curl -o /etc/yum.repos.d/powerdns-auth-master.repo https://repo.powerdns.com/repo-files/centos-auth-master.repo && yum install pdns
根据 https://doc.powerdns.com/authoritative/backends/generic-mysql.html 初始化数据库
|
1 2 3 4 5 6 7 8 9 10 11 12
| api=yes api-key=d37757d0adfa0d3dc26a11119134f92 api-logfile=/var/log/pdns.log launch=gmysql gmysql-host=10.211.55.200 gmysql-user=powerdns gmysql-password=powerdns gmysql-dbname=powerdns webserver=yes webserver-address=0.0.0.0 webserver-allow-from=172.17.0.0/24
|
dnsdist
根据请求的 IP 地址,将请求转发给对应的后端权威服务,实现智能解析
安装及配置
1 2 3
| yum install epel-release yum-plugin-priorities && curl -o /etc/yum.repos.d/powerdns-dnsdist-master.repo https://repo.powerdns.com/repo-files/centos-dnsdist-master.repo && yum install dnsdist
|
1 2 3 4 5 6 7 8 9
| # 配置说明, 如下, 内网走 dns1 解析 . 其他走 dns2解析 addLocal('0.0.0.0:5300') newServer({address="127.0.0.1:53", pool="xiaoying"}) newServer({address="114.114.114.114"}) addAction("10.4.43.0/16", PoolAction("xiaoying")) addAction(AndRule({makeRule("xiaoying.com"),makeRule("10.104.58.0/26")}), PoolAction("xiaoying")) pc = newPacketCache(100000, 86400, 0, 60, 60, false) getPool(""):setCache(pc) setStaleCacheEntriesTTL(1000)
|
PowerDNS-Recursor
把自身的域名直接 Forward 给我们的权威服务 ,其他走 另外的dns服务
安装及配置
1 2 3
| yum install epel-release yum-plugin-priorities && curl -o /etc/yum.repos.d/powerdns-rec-master.repo https://repo.powerdns.com/repo-files/centos-rec-master.repo && yum install pdns-recursor
|
1 2 3 4
| setuid=pdns-recursor setgid=pdns-recursor forward-zones-recurse=域名地址=Dnsdist地址,.=其他的dns服务地址
|
PowerDNS-Admin
web 管理
安装及配置
1 2
| 为python 项目 https://github.com/ngoduykhanh/PowerDNS-Admin
|
监控
可在dnsdist/recursor 取 metrics ,qps ,Queries 等
1 2 3 4
| dnsdist https://dnsdist.org/statistics.html recursor https://docs.powerdns.com/recursor/metrics.html
|
高可用
完全可以用 MySQL 同步实现
其他部署多个即可作为高可用
性能
https://docs.powerdns.com/recursor/
官方介绍 扛得起亿级请求量