powerdns powerdns admin dnssec
想为你的域名搭建权威DNS? 来试试 PowerDNS
吧
PowerDNS成立于20世纪90年代末,是开源DNS软件的主要供应商,本次博主将编写 PowerDNS
搭建教程
以及如何配置 PowerDNS-Admin
和 dnssec
环境准备
这里博主临时开一个 vultr
的机器,使用得是 Debian11
,哈哈这里放出博主的 vultr
推销链接
https://www.vultr.com/?ref=9335067
域名 | 权威 dns ip |
latmn.com | 108.61.200.228 |
安装 MariaDB
更新
1 | sudo apt update |
PowerDNS
支持很多数据库,这次博主使用 mariadb
1 | curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |
查看 mariadb
状态
1 | sudo systemctl status mariadb |
到这里 mariadb 安装就完成了
如果你想安装 mariadb 解压版,请看博主的另外一篇教程:
https://wchar.net/2023/03/13/mariadb-%E8%A7%A3%E5%8E%8B%E7%89%88%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/
创建数据库
安装好mariadb后,直接回车进入,无需密码
1 | sudo mysql -u root |
创建 powerdns 数据库
1 | CREATE DATABASE powerdns; |
创建 powerdns 用户并授权访问,密码为 powerdns123456
1 | GRANT ALL ON powerdns.* TO 'powerdns'@'%' IDENTIFIED BY 'powerdns123456'; |
这里可以看到,创建成功
安装 PowerDNS
首先停止掉 systemd-resolved
1 | sudo systemctl stop systemd-resolved |
1 | echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf |
添加powerdns源
1 | sudo vim /etc/apt/sources.list.d/pdns.list |
1 | deb [arch=amd64] http://repo.powerdns.com/debian bullseye-auth-46 main |
导入powerdns源密钥签名
1 | curl -fsSL https://repo.powerdns.com/FD380FBB-pub.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/pdns.gpg |
1 | sudo vim /etc/apt/preferences.d/pdns |
1 | Package: pdns-* |
开始安装
1 | sudo apt update |
导入powerdns表信息
1 | mysql -upowerdns -ppowerdns123456 |
1 | use powerdns; |
修改powerdns配置文件
1 | sudo vim /etc/powerdns/pdns.d/pdns.local.gmysql.conf |
1 | launch+=gmysql |
名称 | 作用 |
api | 开启api |
api-key | api-key powerdns admin 操作 |
gmysql-host | mysql地址 |
gmysql-user | mysql用户名 |
gmysql-dbname | 所使用的数据库 |
gmysql-password | 数据库密码 |
local-address | 服务绑定地址 0.0.0.0 代表本机所有地址 |
local-port | 服务绑定端口 |
webserver-address | 这个是api服务的绑定地址 |
webserver-address | 允许哪些地址访问api服务 |
webserver-port | api服务端口 |
gmysql-dnssec | 配置dnssec |
default-soa-content | 默认soa记录 |
变更文件权限
1 | sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gmysql.conf |
重新启动
1 | sudo systemctl restart pdns |
查看端口占用
1 | sudo ss -alnp4 | grep pdns |
最后测试
1 | dig @127.0.0.1 |
安装 PowerDNS-Admin
这里博主就直接使用docker安装了,你也可以将 PowerDNS-Admin 安装到其他机器上
debian11安装docker:
https://wchar.net/2022/09/11/debian11%E5%AE%89%E8%A3%85docker/
PowerDNS-Admin GitHub地址:
https://github.com/PowerDNS-Admin/PowerDNS-Admin
运行docker命令:
1 | docker run -d \ |
访问 9191
端口
注册好之后,登录
配置 PowerDNS API URL
注意这里 PowerDNS-Admin 和 PowerDNS 在同一台机器上
并且PowerDNS-Admin使用的docker安装的,这里不能是 127.0.0.1:8081
这里要填写docker网卡的地址
1 | ifconfig |
还要注意 webserver-allow-from 是否允许这个网段访问
1 | webserver-allow-from=127.0.0.1, ::1, 172.17.0.0/12 |
配置Zone
添加解析
测试记录
1 | dig test.latmn.com @127.0.0.1 |
可以看到已经成功了
注册自己的NameServer(NS)
博主这次使用测试域名的注册商是 dynadot
,不同注册商页面可能不太一样
点击注册 Register Name Server 按钮
修改域名的 NameServer(NS) 为刚才注册的 ns1.latmn.com
这里 whois
可以看到已经生效
注意这里防火墙要放通 53
端口
1 | sudo ufw allow 53/udp |
运行ping测试
哈哈这里就成功了o( ̄▽ ̄)ブ
配置DNSSEC
1 | DS = <zone name> IN DS <key tag> <dnskey algorithm> <digest type> <key digest> |
1 | 39897 13 2 51225f9673c1724820de41c8595d588473cd063f526e3713c6d9d98ab89cb050 |
这里博主使用第二条记录
1 | Key tag: 39897 |
DNSKEY Algorithm 算法列表
https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml
Digest Type 类型列表
https://www.iana.org/assignments/ds-rr-types/ds-rr-types.xhtml
在域名注册商处,修改如下:
测试 dnssec
1 | dig +dnssec test.latmn.com @1.1.1.1 |
注意: dnssec一定要配置正确
博主的 vultr
推广链接
https://www.vultr.com/?ref=9335067
本次就到这里了,欢迎访问 wchar.net
o( ̄▽ ̄)ブ