powerdns 系列之二 PowerDNS Authoritative Server
PowerDNS Authoritative Server
权威服务器,直接查询数据库去尝试解析,数据库中若不存在此记录,则直接返回空结果。
os: centos 7.8.2003
pnds: 4.7.3
安装 pdns
安装 pdns auth
yum install epel-release yum-plugin-priorities
curl -o /etc/yum.repos.d/powerdns-auth-47.repo https://repo.powerdns.com/repo-files/el-auth-47.repo
yum install pdns
安装 pdns backend
使用 postgresql 作为存储数据库,需要安装 pdns-backend-postgresql
这里有个小细节需要注意下
依赖安装 postgresql-libs 的版本较低,登录 pgsql 10 及以上会提示 SCRAM authentication requires libpq version 10 or above 。
需要 postgresql-libs 最低为 10 版本,可提前下载这两个 rpm 包 。
postgresql10.x86_64 10.23-1PGDG.rhel7 @pgdg10
postgresql10-libs.x86_64 10.23-1PGDG.rhel7 @pgdg10
安装 pdns backend
yum install pdns-backend-geoip \
pdns-backend-ldap \
pdns-backend-lmdb \
pdns-backend-lua2 \
pdns-backend-mysql \
pdns-backend-odbc \
pdns-backend-pipe \
pdns-backend-postgresql \
pdns-backend-remote \
pdns-backend-sqlite \
pdns-backend-tinydns
登录数据库 创建 user、database,参考 https://doc.powerdns.com/authoritative/backends/generic-postgresql.html#settings
create user pdns with password 'xxxxx';
create database pdns_db with owner='pdns';
创建表,参考 https://doc.powerdns.com/authoritative/backends/generic-postgresql.html#settings
CREATE TABLE domains (id SERIAL PRIMARY KEY,name VARCHAR(255) NOT NULL,master VARCHAR(128) DEFAULT NULL,last_check INT DEFAULT NULL,type TEXT NOT NULL,notified_serial BIGINT DEFAULT NULL,account VARCHAR(40) DEFAULT NULL,options TEXT DEFAULT NULL,catalog TEXT DEFAULT NULL,CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
);CREATE UNIQUE INDEX name_index ON domains(name);
CREATE INDEX catalog_idx ON domains(catalog);CREATE TABLE records (id BIGSERIAL PRIMARY KEY,domain_id INT DEFAULT NULL,name VARCHAR(255) DEFAULT NULL,type VARCHAR(10) DEFAULT NULL,content VARCHAR(65535) DEFAULT NULL,ttl INT DEFAULT NULL,prio INT DEFAULT NULL,disabled BOOL DEFAULT 'f',ordername VARCHAR(255),auth BOOL DEFAULT 't',CONSTRAINT domain_existsFOREIGN KEY(domain_id) REFERENCES domains(id)ON DELETE CASCADE,CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
);CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops);CREATE TABLE supermasters (ip INET NOT NULL,nameserver VARCHAR(255) NOT NULL,account VARCHAR(40) NOT NULL,PRIMARY KEY(ip, nameserver)
);CREATE TABLE comments (id SERIAL PRIMARY KEY,domain_id INT NOT NULL,name VARCHAR(255) NOT NULL,type VARCHAR(10) NOT NULL,modified_at INT NOT NULL,account VARCHAR(40) DEFAULT NULL,comment VARCHAR(65535) NOT NULL,CONSTRAINT domain_existsFOREIGN KEY(domain_id) REFERENCES domains(id)ON DELETE CASCADE,CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
);CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);CREATE TABLE domainmetadata (id SERIAL PRIMARY KEY,domain_id INT REFERENCES domains(id) ON DELETE CASCADE,kind VARCHAR(32),content TEXT
);CREATE INDEX domainidmetaindex ON domainmetadata(domain_id);CREATE TABLE cryptokeys (id SERIAL PRIMARY KEY,domain_id INT REFERENCES domains(id) ON DELETE CASCADE,flags INT NOT NULL,active BOOL,published BOOL DEFAULT TRUE,content TEXT
);CREATE INDEX domainidindex ON cryptokeys(domain_id);CREATE TABLE tsigkeys (id SERIAL PRIMARY KEY,name VARCHAR(255),algorithm VARCHAR(50),secret VARCHAR(255),CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
);CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
配置
cp /etc/pdns/pdns.conf /etc/pdns/pdns.conf.bak
> /etc/pdns/pdns.confvi /etc/pdns/pdns.conf
#启用 rest api
api=yes
api-key=aabbccdd112233009988#默认配置
daemon=no
guardian=no
setgid=pdns
setuid=pdns#数据库设置
launch=gpgsql
gpgsql-host=xxx.xxx.xxx.xxx
gpgsql-port=5432
gpgsql-dbname=pdns_db
gpgsql-user=pdns
gpgsql-password=xxxxx#DNS服务监听设置
local-address=0.0.0.0
local-port=53 #启用 webserver 监控
webserver=yes
webserver-address=0.0.0.0
webserver-allow-from=0.0.0.0/0
webserver-port=8081#域名动态解析
enable-lua-records=yes
启动
chmod -R 755 /etc/pdns/pdns.conf
systemctl enable pdns
systemctl start pdns
systemctl status pdns
如果碰到启动错误,是端口 53 被占用的话,可以参考这篇文章处理下
<<CentOS 7 中关闭删除 virbr0 虚拟网>>
日常配置
建议通过 PowerDNS-Admin 来完成
安装UI界面
如果全部使用命令行,操作缺失比较麻烦,可以通过第三方 PowerDNS-Admin 实现界面管理。参考 https://github.com/PowerDNS-Admin/PowerDNS-Admin
安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable docker
systemctl start docker
docker run -d \-e SECRET_KEY='a-very-secret-key' \-v pda-data:/data \-p 9191:80 \ngoduykhanh/powerdns-admin:latest
查看启动效果
docker psnetstat -natp
访问 http://localhost:9191/login
第一次访问需要创建个账号
按照操作一步步进行。
日常配置
登录PowerDNS-Admin,左侧选择 +New Domain,即可添加新的域,点击提交
点击域名 Action 的 Manage
增加两条记录后,点击右上 Apply Changes 生效。
参考:
https://repo.powerdns.com/
https://doc.powerdns.com/
https://doc.powerdns.com/authoritative/backends/generic-postgresql.html#settings
powerdns 系列之二 PowerDNS Authoritative Server相关推荐
- Microsoft Hyper-V Server 2008 R2和SCVMM2012部署XenDesktop 5.6桌面虚拟化系列之二准备虚拟桌面模板...
Microsoft Hyper-V Server 2008 R2和SCVMM2012 部署XenDesktop 5.6桌面虚拟化系列 之二准备虚拟桌面模板 接着上一篇文章内容<Microsoft ...
- Debezium报错处理系列之二十九:Make sure that an instance of SQL Server is running on the host and accepting TCP
Debezium报错处理系列之二十九:Make sure that an instance of SQL Server is running on the host and accepting TCP ...
- Skype for business混合部署系列之二自定义拓扑信息
Skype for business混合部署系列之二自定义拓扑信息 此次部署前端服务器共3台,后端数据库2台采用always on方式,2台SQL Server服务器已经安装完成,在这里不做文档,本章 ...
- BizTalk学习笔记系列之二:实例说明如何使用BizTalk
BizTalk学习笔记系列之二:实例说明如何使用BizTalk --.BizTalk学习笔记系列之二<?XML:NAMESPACE PREFIX = O /> Aaron.Gao,2006 ...
- zookeeper系列(二)实战master选举
2019独角兽企业重金招聘Python工程师标准>>> master选举 考虑7*24小时向外提供服务的系统,不能有单点故障,于是我们使用集群,采用的是Master+Slave.集群 ...
- spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件...
SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件 一.概述 Spring Boot允许多种配置来源,官网是这样说的: Spring Boot使用一种非常特殊的Property ...
- 邮箱的创建及配置:Exchange2003系列之二
Exchange2003学习系列之二:邮箱的创建及配置 我们在上一篇文章中介绍了如何进行Exchange2003的安装,本文中我们介绍如何在Exchange2003中进行邮 ...
- .net 面试题系列文章二(附答案)
.net 面试题系列文章二(附答案) 内容摘要:本文是.net 面试题系列的第二篇,该系列文章是对网上所有.net面试题的收重新集整理後的系列文章,囊括了c#面试题,vb.net面试题,asp.net ...
- 《解剖PetShop》系列之二
PetShop数据访问层之数据库访问设计 <解剖PetShop>系列之二 二.PetShop数据访问层之数据库访问设计 在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的 ...
最新文章
- linux主机怎么建站,linux主机建站
- CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture)
- 【数组】Find Peak Element
- sdut 3345 哈夫曼编码 优先队列
- [html] 请说说你在写布局时对于浏览器兼容性的感受或总结
- Java基础:把对象作为参数
- @OneToOne or @ManyToOne on references an unknown entity:
- 基于Auto.js的自动脚本
- 梦网云科技的短信接口怎么样,真实体验
- 教你win7免费升级到win10系统教程
- centos设置自动开关机
- lubuntu输入法设置_Ubuntu 设置中文输入法
- Codeforces - F. Dominant Indices
- 模拟电路64(滤波电路)
- gwr模型用什么做_迷你世界微缩模型还能这样用,玩家自己就能做皮肤
- 双摄测距原理_双摄像头系列原理深度剖析
- Vue项目使用百度地图api
- 一个小垃圾的成长笔记
- 指定Jboss的JDK
- oracle显示上午下午,如何把时间转换成带有上下午字样的格式?