配置NextDNS服务器以支持DNS-over-HTTPS(DoT)和DNS-over-HTTP(DoH)的步骤如下:
安装NextDNS
使用Docker安装NextDNS:
-
安装Docker:
- 在Linux系统上安装Docker:
curl -fsSL https://get.docker.com | bash -s docker
- 启动并登录Docker:
systemctl start docker systemctl login docker
- 在Linux系统上安装Docker:
-
拉取NextDNS镜像:
docker pull nextdns/nextdns
-
运行NextDNS容器:
docker run -d --name nextdns -p 53:53 -p 8443:8443 nextdns/nextdns
- 53端口:用于标准DNS查询(TCP和UDP)。
- 8443端口:用于DoH(HTTPS)。
配置NextDNS
1 默认配置文件
默认配置文件位于/etc/nextdns/config.json,如果你使用Docker,配置文件会被创建在容器内的/etc/nextdns/config.json。
{
"server": {
"listen": "...:53",
"tls": {
"enabled": true,
"cert_file": "/etc/nextdns/certs/server.crt",
"key_file": "/etc/nextdns/certs/server.key"
}
},
"http": {
"enabled": true,
"listen": "...:80",
"prefix": "/dns",
"tls": {
"enabled": true,
"cert_file": "/etc/nextdns/certs/server.crt",
"key_file": "/etc/nextdns/certs/server.key"
}
},
"ots": {
"enabled": true,
"listen": "...:53",
"tsig_secret": "base64:your-tsig-secret-string"
}
}
注意:tsig_secret需要替换为你生成的TSIG密钥。
2 DoT配置
-
生成TSIG密钥:
tsig-keygen -r example.com your-tsig-key
- 该命令会生成两个文件:
your-tsig-key.private和your-tsig-key.public。
- 该命令会生成两个文件:
-
将密钥添加到配置文件:
"ots": { "enabled": true, "listen": "...:53", "tsig_secret": "base64:your-tsig-secret-string" }将
your-tsig-secret-string替换为base64:your-tsig-key.private。 -
重新启动容器:
docker restart nextdns
3 DoH配置
-
在配置文件中启用DoH:
"http": { "enabled": true, "listen": "...:80", "prefix": "/dns", "tls": { "enabled": true, "cert_file": "/etc/nextdns/certs/server.crt", "key_file": "/etc/nextdns/certs/server.key" } } -
设置访问控制: 在
http部分添加访问控制规则:"http": { "enabled": true, "listen": "...:80", "prefix": "/dns", "tls": { "enabled": true, "cert_file": "/etc/nextdns/certs/server.crt", "key_file": "/etc/nextdns/certs/server.key" }, "access_control": [ { "source": ".../", "action": "allow" } ] }根据需要调整访问控制策略。
域名配置
1 创建域名记录
在NextDNS中创建一个域名记录,例如example.com:
# 添加CNAME记录(可选)
curl -X POST http://localhost:53/api/dns -H "Content-Type: application/json" -d '{"name":"example.com","type":"CNAME","target":"nextdns.example.com"}'
测试配置
1 测试DoT
使用dig命令测试DoT:
dig @localhost:53 example.com www.google.com
2 测试DoH
使用curl测试DoH:
curl -I https://localhost:8443/dns/example.com/www.google.com
安全注意事项
-
防火墙规则:
- 阻止非TLS访问DNS和HTTP端口。
- 使用iptables或firewalld设置规则。
-
定期备份:
- 使用
docker save备份NextDNS容器。 - 备份配置文件和密钥文件。
- 使用
故障排除
-
配置错误:
- 检查日志文件:
docker logs nextdns - 确保所有配置文件正确加载。
- 检查日志文件:
-
密钥问题:
重新生成TSIG密钥并更新配置文件。
-
网络问题:
- 确保防火墙允许DNS和HTTPS端口。
- 检查网络连接,确保客户端可以访问NextDNS服务器。
通过以上步骤,你可以成功配置并使用NextDNS服务器,支持DoT和DoH协议,为客户端提供高效、安全的DNS解析服务。




