avatar

PowerDNS 使用

内网DNS 结构

10.0.192.13, 10.0.192.17
10.104.73.26,10.104.93.0
vip 10.0.192.32

使用 PowerDNS 全家桶

  1. PowerDNS-Authoritative 作为权威服务
  2. PowerDNS-Recursor 作为递归服务(缓存)
  3. dnsdist 作为边缘节点来提供智能解析(根据请求ip,转发到不同的权威服务 ,缓存)
  4. PowerDNS-Admin web界面权威服务管理

说明

  • 提供友好的web管理界面
  • 智能解析(根据来源内外网,解析到不同地址)
  • 提供众多的Metrics 等服务状态监控
  • 高可用(数据存于Mysql)

结构

dns

权威服务

数据采用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
# /etc/pdns/pdns.conf
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
# /etc/pdns-recursor/recursor.conf 
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/

官方介绍 扛得起亿级请求量

文章作者: 喵九命
文章链接: http://blog.ik3s.top/2020/04/05/PowerDNS-%E4%BD%BF%E7%94%A8/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 远方除了遥远一无所有
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论