1145 字
6 分钟
群晖 Docker 部署 Technitium DNS

本教程适用于运行 DSM 7.2+(Container Manager)或 DSM 6.2/7.0/7.1(Docker 套件)的群晖 NAS,采用 host 网络模式部署,避免 Docker NAT 桥接带来的性能损耗与死锁问题。

一、准备工作与目录创建#

  1. 打开群晖 File Station。
  2. 在 docker 共享文件夹下新建一个名为 technitium 的文件夹。
  3. 在 technitium 文件夹内再新建一个子文件夹:config。
  4. 完整数据存储路径类似:/volume1/docker/technitium/config。

二、Docker 容器部署#

方案 1:Container Manager 项目部署(Docker Compose,推荐)#

  1. 打开群晖桌面上的 Container Manager。

  2. 点击左侧 项目 (Project) -> 点击 新增。

  3. 填写项目信息:

    • 项目名称:technitium-dns
    • 路径:选择刚才创建的 /docker/technitium 目录。
    • 来源:选择 创建 docker-compose.yaml。
  4. 粘贴以下配置文件:

version: "3.8"
services:
technitium-dns:
image: technitium/dns-server:latest
container_name: technitium-dns
network_mode: host
restart: always
environment:
- DNS_SERVER_DOMAIN=dns.lan
- DNS_SERVER_ADMIN_PASSWORD=<your-admin-password> # 请修改为你自定义的初始管理密码
- TZ=Asia/Shanghai
volumes:
- /volume1/docker/technitium/config:/etc/dns
  1. 点击 下一步 -> 完成,系统将自动拉取镜像并启动。

方案 2:图形界面手动创建#

  1. 打开 Container Manager -> 注册表,搜索 technitium/dns-server 并下载 latest。

  2. 在 映像 中选中镜像,点击 运行。

  3. 网络设置:务必勾选 与 Docker Host 使用相同网络 (host 模式)。

  4. 常规设置:勾选”启用自动重新启动”。

  5. 卷设置:添加文件夹映射,将主机 /docker/technitium/config 挂载至容器内部 /etc/dns。

  6. 环境:

    • 添加 TZ,值设为 Asia/Shanghai。
    • 添加 DNS_SERVER_ADMIN_PASSWORD,填入管理面板的初始密码。
  7. 完成向导并启动容器。

端口说明:

  • Web 管理端口:http://<your-nas-ip>:5380
  • DNS 解析服务:默认监听 UDP/TCP 53 端口。请确保群晖本机未安装冲突的”DNS Server”官方套件。

三、Web 管理端初始化#

  1. 在浏览器访问 http://<your-nas-ip>:5380。
  2. 使用用户名 admin 和刚才设定的初始密码登录(首次登录后可在后台修改密码)。

四、配置国内高可用 Anycast DoH 上游#

为避免国内运营商 UDP 53 劫持与单点故障,配置经过连通性验证的国内多活 DoH 节点:

  1. 点击顶部导航栏的 Settings。
  2. 切换到 Proxy & Forwarders 选项卡。
  3. 在 Forwarders 文本框中粘贴以下验证可用的三大服务商地址:
https://dns.alidns.com/dns-query (223.5.5.5)
https://doh.pub/dns-query (1.12.12.12)
https://doh.360.cn/dns-query (101.226.4.6)
  1. 关键参数设置:

    • Forwarder Protocol:选择 DNS-over-HTTPS。
    • Concurrent Forwarding:勾选 Enable Concurrent Forwarding(开启并发测速查询)。
    • Forwarder Concurrency:保持 2 或 3。
    • Proxy 区域:确认 Proxy Type 保持为 None(不使用代理)。
  2. 切换到 General 选项卡:

    • 找到 Recursion,设置为 Allow Only For Private Networks。
    • 找到 DNSSEC Validation,建议设置为 Disabled(因查询全程使用 HTTPS 加密,关闭本地严格 DNSSEC 验证可避免百度等未签名域名出现 Attack detected 误报)。
  3. 滑动到底部,点击 Save Settings 保存。

五、配置局域网专用子域名#

采用专用内网子域名(示例以 lan.example.com 为例),实现内网设备快捷访问,且完全不影响公网真实解析:

  1. 点击顶部导航栏的 Zones -> 点击 Add Zone。

  2. 配置参数:

    • Zone Name:lan.example.com
    • Zone Type:选择 Primary
    • 点击 Add。
  3. 点击进入创建好的 lan.example.com 区域,点击 Add Record 添加内网主机:

    • 添加 NAS 记录:

      • Name:nas(实际访问全域名为 nas.lan.example.com)
      • Type:A
      • IP Address:填写群晖 NAS 内网 IP(如 <your-nas-ip>)
      • 点击 Save。
    • 添加 PVE/服务器记录:

      • Name:mpve(实际访问全域名为 mpve.lan.example.com)
      • Type:A
      • IP Address:填写服务器对应内网 IP
      • 点击 Save。

六、清空缓存与连通性验证#

1. 控制台内验证#

  1. 点击顶部 Cache 选项卡,点击 Flush Cache。
  2. 进入 DNS Client 页面(Server 保持 This Server):
    • 输入 baidu.com,点击 Resolve,确认返回 NOERROR 且耗时在数十毫秒以内(证明 DoH 转发正常)。
    • 输入 nas.lan.example.com,点击 Resolve,确认准确返回群晖内网 IP(证明内网 Zone 正常)。

2. 局域网电脑命令行测试#

在局域网的 Windows 电脑打开 PowerShell,运行以下命令(将 <your-nas-ip> 替换为实际 IP):

Terminal window
# 验证公网 DoH 解析
nslookup baidu.com <your-nas-ip>
# 验证内网自定义域名
nslookup nas.lan.example.com <your-nas-ip>

若两条命令均正常返回对应 IP,即代表全套服务已经顺利打通。

七、全面接管内网 DNS#

测试无误后,登录你的主路由器管理后台(如 OpenWrt、小米/华硕等):

  1. 进入 局域网设置 (LAN) / DHCP 服务器 设置。
  2. 将 主 DNS (DNS Server 1) 修改为 群晖 NAS 的内网 IP。
  3. 保存并应用设置。
  4. 局域网设备断开 Wi-Fi/有线重新连接一次获取新租约,即可全自动享受加密 DoH 解析与内网域名直达。

配合 Windows 阻断链路本地 IPv6 DNS 查询 使用,可以避免终端绕过内网 DNS 服务。

群晖 Docker 部署 Technitium DNS
https://iiii.fun/posts/nas/synology-technitium-dns/
作者
庆灵
发布于
2025-10-05
许可协议
CC BY-NC-SA 4.0