type
status
date
category
tags
slug
summary
password
AI summary
icon
CoreDNS
CoreDNS 是一个灵活且功能强大的 DNS 服务器,支持多种插件扩展。它非常适合用于搭建 DoH 服务。
初始化
安装必要组件
首先,更新系统并安装所需的软件包,包括 Docker Compose 和 Certbot(用于获取 SSL 证书)。
配置防火墙
确保服务器的安全性,配置防火墙规则,允许必要的端口(22、80 和 443)。
获取 SSL 证书
使用 Certbot 获取 SSL 证书。请将
<DOMAIN>
替换为你的实际域名。注意:确保域名已正确解析到你的服务器 IP,并且 80 端口未被其他服务占用。
配置并部署 CoreDNS
我们将通过 Docker 来运行 CoreDNS。
创建 CoreDNS 配置目录
创建配置文件存放目录。
编写 CoreDNS 配置文件
创建并编辑
/etc/coredns/Corefile
:在文件中添加以下内容,记得将
<DOMAIN>
替换为你的实际域名:配置说明:
<DOMAIN>:443
:在 443 端口上监听来自指定域名的 HTTPS 请求。
tls
:指定 SSL 证书和私钥的路径。
bind 0.0.0.0:443
:绑定所有网络接口的 443 端口,允许外部访问。
forward . 1.1.1.1 8.8.8.8
:将 DNS 请求转发到 Cloudflare (1.1.1.1) 和 Google (8.8.8.8) 的公共 DNS 服务器。
log
和errors
:启用日志记录和错误记录,便于调试。
cache 300
:启用 DNS 缓存,缓存时间为 300 秒,提高查询速度。
运行 CoreDNS 容器
使用 Docker 运行 CoreDNS 容器。确保将
<DOMAIN>
替换为你的实际域名。运行说明:
-network host
:使用主机的网络堆栈,允许 CoreDNS 在主机的 443 端口上监听。
v /etc/coredns:/etc/coredns
:将主机的配置目录挂载到容器内,方便管理配置文件。
v /etc/letsencrypt/live/<DOMAIN>/fullchain.pem
和v /etc/letsencrypt/live/<DOMAIN>/privkey.pem
:将 SSL 证书和私钥挂载到容器内,确保 CoreDNS 能够使用 HTTPS。
验证 CoreDNS 运行状态
确保 CoreDNS 容器正在运行,并监听正确的端口。
你应该能看到类似如下的输出,表示 CoreDNS 容器正在运行并监听 443 端口:
配置客户端使用 DoH
完成上述步骤后,你的 DoH 服务器已经搭建完成。接下来,需要在客户端设备上配置 DNS 设置,使用
https://<DOMAIN>/dns-query
作为 DoH 服务器地址。自动更新 SSL 证书
Certbot 获取的 SSL 证书有效期为 90 天,建议设置定时任务自动更新证书,并重启 CoreDNS 容器。
创建一个定时任务,每天检查并更新证书:
添加以下内容:
此任务将在每个月1号的凌晨 2 点运行,自动更新证书并重启 CoreDNS 容器。
参考资料
如果有关 DoH 服务器部署的问题,欢迎您在底部评论区留言,一起交流~
- 作者:Kechang
- 链接:https://kechang.uk/article/33b5e57d-8080-46cd-a4f8-825cd4462b76
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。