基于 Technitium DNS Server 部署自己的 DNS Server
内容提要
本文介绍了如何使用Technitium DNS Server部署自己的DNS服务器,以解析被阿里云封锁的域名并拦截广告和限制访问的网站。作者还分享了其他相关的DNS知识和资源。
延伸解读
自建 DNS 的适用场景与前提
文章作者因域名被阿里云拦截无法解析,且转移域名过程复杂,最终选择自建 DNS 服务器来解析被封域名。自建 DNS 还能避免 DNS 污染、解析内部域名,并通过拦截列表过滤广告或限制访问。但需注意,自建 DNS 需要一定的运维知识,且若公网暴露必须修改默认密码,否则存在安全风险。
部署时的关键配置与注意事项
使用 Docker 部署 Technitium DNS Server 时,若使用默认 53 端口,需先禁用系统的 systemd-resolved 服务,避免端口冲突。默认 Web 管理界面为 admin/admin,首次登录会提示修改密码。此外,默认递归仅限内网,需手动改为 Allow Recursion 才能解析未配置的域名。这些步骤是保证服务正常工作的基础。
功能扩展与全局生效方式
Technitium DNS Server 支持通过 Conditional Forwarder Zone 解析自定义域名,未配置的域名则转发给其他 DNS 服务器。它还内置广告拦截规则,可自定义列表并定期更新。将家庭路由器的 DNS 指向该服务器,可使所有客户端默认使用自建 DNS。此外,它支持 DoH、DoT、DoQ 等加密协议,适合进一步研究隐私保护。
Q&A
为什么作者要自己部署 DNS 服务器?
作者在阿里云注册的域名被拦截无法解析,客服称是反诈中心封的且申诉电话打不通。为了解析被封锁的域名,同时避免 DNS 污染、解析内部域名,并拦截广告和限制访问的网站,作者决定自建 DNS 服务器。
Technitium DNS Server 是什么?如何部署?
Technitium DNS Server 是一个基于 C# 开发的功能强大的 DNS 服务器。可以通过 Docker 部署,使用官方提供的 docker-compose 文件运行容器,也可以通过下载安装包直接部署。
使用 Docker 部署 Technitium DNS Server 时需要注意什么?
如果打算使用默认的 53 端口,需要先禁用系统的 DNS 服务(执行 sudo systemctl stop systemd-resolved 和 sudo systemctl disable systemd-resolved)。另外,首次通过 Web UI(默认端口 5380)登录使用 admin/admin,之后会提示修改密码,若公网暴露务必修改密码。
如何让 Technitium DNS Server 解析自己的域名并转发其他域名?
可以创建一个 Conditional Forwarder Zone 来解析自己的域名,对于没有配置的域名则转发给另一个 DNS 服务器解析。同时需要将 Recursion 配置为 Allow Recursion,因为默认只允许内网递归。
Technitium DNS Server 如何实现广告拦截和访问限制?
在 Settings => Blocking 配置中,可以使用内置的广告等拦截规则,也可以自己维护一个 block list 并配置定期更新(默认一天一次),从而拦截不想查看的内容或限制客户端访问特定网站。
如何让家庭网络中的所有设备都使用自建的 DNS 服务器?
将家里路由器的 DNS 配置修改为自建的 DNS 服务器地址,这样通过路由器上网的客户端在没有特别配置的情况下都会走自建 DNS 进行解析。
Technitium DNS Server 支持哪些 DNS 协议?
除了常规 DNS,Technitium DNS Server 还支持 DNS over HTTP(S)、DNS over TLS、DNS over QUIC 等协议。
Cloudflare 的 1.1.1.1 DNS 有什么特点?
Cloudflare 的 1.1.1.1 DNS 服务器号称隐私优先(privacy-first),可以作为替代 114.114.114.114 的选择。