本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

本镜像作为 DNS over TLS (DoT) 上游服务器,可连接至支持 IPv4 和 IPv6 的 DNS over TLS 服务器,提供安全的 DNS 解析服务。集成 DNSSEC 验证、DNS 重绑定保护、Docker 健康检查以及细粒度的 IP/主机名阻止功能,适用于需要加密 DNS 解析、内容过滤和隐私保护的场景。
注意:可尝试
:v2.0.0-beta版本,相关文档见 此处。:latest标签镜像在未来数天/数周内可能存在兼容性变更。
docker run -d -p 53:53/udp --name dns-over-tls qmcgaw/dns
创建 docker-compose.yml 文件:
version: '3' services: dns-over-tls: image: qmcgaw/dns container_name: dns-over-tls ports: - "53:53/udp" # DNS 服务端口 environment: - PROVIDERS=cloudflare,google # 同时使用 Cloudflare 和 Google DNS - BLOCK_MALICIOUS=on # 启用恶意内容阻止 - BLOCK_ADS=on # 启用广告阻止 - IPV6=off # 禁用 IPv6(若网络不支持) - UPDATE_PERIOD=12h # 每 12 小时更新阻止列表 restart: unless-stopped
启动服务:
docker-compose up -d
--user="0" 以 root 权限运行(详见 issue #79)| 环境变量 | 默认值 | 描述 |
|---|---|---|
PROVIDERS | cloudflare | 逗号分隔的 DoT 提供商列表,可选值见 核心功能 |
VERBOSITY | 1 | 日志详细级别(0=无日志,5=全 debug 日志) |
VERBOSITY_DETAILS | 0 | 细节日志级别(0-4,越高细节越多) |
BLOCK_MALICIOUS | on | 是否阻止恶意 IP/主机名(on/off) |
BLOCK_SURVEILLANCE | off | 是否阻止监控服务 IP/主机名(on/off) |
BLOCK_ADS | off | 是否阻止广告 IP/主机名(on/off) |
BLOCK_HOSTNAMES | 自定义阻止主机名(逗号分隔,如 example.com,ads.example.org) | |
BLOCK_IPS | 自定义阻止 IP(逗号分隔,如 192.168.1.1,2001:db8::1) | |
UNBLOCK | 例外主机名(逗号分隔,即使在阻止列表中也解除阻止) | |
LISTENINGPORT | 53 | 容器内 Unbound 监听端口(需与 -p 映射一致) |
CACHING | on | 是否启用 DNS 缓存(on/off,若上层有其他 DNS 缓存可禁用) |
PRIVATE_ADDRESS | 所有 IPv4/IPv6 私有 CIDR 范围 | 私有地址范围(逗号分隔 CIDR 或单 IP,用于 DNS 重绑定保护) |
CHECK_DNS | on | 启动时检查 DNS 解析(通过 127.0.0.1:53 解析 github.com) |
IPV4 | on | 是否启用 IPv4 解析(on/off) |
IPV6 | off | 是否启用 IPv6 解析(on/off,无 IPv6 网络时请勿启用) |
UPDATE_PERIOD | 24h | 阻止列表更新周期(如 12h,设为 0 禁用自动更新) |
可通过挂载 Unbound 配置文件扩展默认配置。创建 include.conf 文件(遵循 Unbound 配置文档),并挂载至容器:
docker run -d -p 53:53/udp -v $(pwd)/include.conf:/unbound/include.conf:ro qmcgaw/dns
include.conf 将被包含在 Unbound 主配置的 server 区块中,用于自定义高级参数(如 TTL 调整、转发规则等)。
所有连接至路由器的设备自动使用本 DNS 服务:
[***])192.168.1.100)192.168.1.1)以强制流量通过本服务手动为每个设备配置 DNS 服务器为 Docker 主机 IP。
docker run -it --rm --dns=DOCKER_HOST_IP alpine # 替换 DOCKER_HOST_IP 为实际 IP
docker-compose.yml 示例:
services: app: image: alpine dns: - DOCKER_HOST_IP # 如 192.168.1.100
/etc/resolv.conf,设置 nameserver DOCKER_HOST_IP注意:[***] 无法检测本服务(因本服务为转发 intermediary,非直接客户端)。
| Docker 镜像 | GitHub 版本 | 说明 |
|---|---|---|
qmcgaw/dns:latest | master 分支 | 最新开发版本 |
qmcgaw/dns:v1.5.1 | v1.5.1 | 稳定版本 |
qmcgaw/dns:v1.4.1 | v1.4.1 | 历史稳定版本 |
qmcgaw/cloudflare-dns-server:latest | master 分支 | qmcgaw/dns:latest 的镜像 |
git clone [***] cd dns go mod download
go build cmd/main.go # 构建二进制 go test ./... # 运行测试 docker build -t qmcgaw/dns . # 构建镜像
详见 CONTRIBUTING.md。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429