powerdns powerdns admin dnssec

想为你的域名搭建权威DNS? 来试试 PowerDNS
PowerDNS成立于20世纪90年代末,是开源DNS软件的主要供应商,本次博主将编写 PowerDNS 搭建教程
以及如何配置 PowerDNS-Admindnssec

环境准备

这里博主临时开一个 vultr 的机器,使用得是 Debian11,哈哈这里放出博主的 vultr 推销链接

https://www.vultr.com/?ref=9335067


域名 权威 dns ip
latmn.com 108.61.200.228
博主本次用完就删除了哦 o(* ̄▽ ̄*)ブ
安装 MariaDB

更新

1
2
3
4
sudo apt update
sudo apt upgrade
sudo apt install curl vim git -y
sudo apt install software-properties-common gnupg2 -y

PowerDNS 支持很多数据库,这次博主使用 mariadb

1
2
3
4
5
6
curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
sudo bash mariadb_repo_setup
sudo apt update
sudo apt install mariadb-server mariadb-client
sudo systemctl start mariadb
sudo systemctl enable mariadb

查看 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
2
GRANT ALL ON powerdns.* TO 'powerdns'@'%' IDENTIFIED BY 'powerdns123456';
FLUSH PRIVILEGES;

这里可以看到,创建成功

安装 PowerDNS

首先停止掉 systemd-resolved

1
2
3
4
5
sudo systemctl stop systemd-resolved  
sudo systemctl disable systemd-resolved

ls -lh /etc/resolv.conf
sudo unlink /etc/resolv.conf
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
2
3
Package: pdns-*
Pin: origin repo.powerdns.com
Pin-Priority: 600

开始安装

1
2
sudo apt update
sudo apt install pdns-server pdns-backend-mysql

导入powerdns表信息

1
mysql -upowerdns -ppowerdns123456
1
2
use powerdns;
source /usr/share/pdns-backend-mysql/schema/schema.mysql.sql

修改powerdns配置文件

1
sudo vim /etc/powerdns/pdns.d/pdns.local.gmysql.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
launch+=gmysql
gmysql-host=localhost
gmysql-user=powerdns
gmysql-dbname=powerdns
gmysql-password=powerdns123456
gmysql-dnssec=yes
default-soa-content=ns1.latmn.com hostmaster.latmn.com 0 3600 14400 604800 3600
api=yes
api-key=PBBTz3UsESxzisEh
local-address=0.0.0.0 ::
local-port=53
webserver-address=0.0.0.0
webserver-allow-from=127.0.0.1, ::1, 172.17.0.0/12
webserver-port=8081
名称 作用
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
2
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gmysql.conf
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.gmysql.conf

重新启动

1
2
sudo systemctl restart pdns  
sudo systemctl enable 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
2
3
4
5
docker run -d \
-e SECRET_KEY='PBBTz3UsESxzisEh' \
-v pda-data:/data \
-p 9191:80 \
powerdnsadmin/pda-legacy:latest

访问 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
2
3
4
Key tag: 39897
DNSKEY Algorithm: 13 ECDSAP256SHA256
Digest Type: 2 SHA-256
Key Digest: 51225f9673c1724820de41c8595d588473cd063f526e3713c6d9d98ab89cb050

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( ̄▽ ̄)ブ