上一回我们说到《Win11快速开启DNS加密功能》,这样做在电脑上可以,但是对局域网内其它设备(如手机)就无能为力了,今天我们来更进一步,在家庭局域网内搭建一台DNS服务器,同时支持DoH转发等高级功能,特别适合家里已有NAS的场景。

下载Docker镜像

sudo docker pull technitium/dns-server

开启Docker服务

sudo docker run --detach \ --restart always \ --name dns-server \ --publish 5380:5380/tcp \ --publish 53:53/udp \ --volume /home/your-path-to-dns-config/:/etc/dns/config \ technitium/dns-server

设置路由DHCP

这个就比较简单了,直接在路由器里设置即可:

docker的dns(使用Docker轻松搭建DNS服务器)(1)

设置DoH功能

我的NAS IP地址是192.168.1.108,所以我这里只要打开DNS服务器的管理页面192.168.1.108:5380(第一次打开需要设定访问web管理界面的密码)。

docker的dns(使用Docker轻松搭建DNS服务器)(2)

如图所示进行设置即可,因为1.1.1.1国内访问不太稳定,所以这一次我选择了1.0.0.2和1.0.0.3,DoH地址分别是:

https://1.0.0.2/dns-query (1.0.0.2) https://1.0.0.3/dns-query (1.0.0.3)

验证DoH是否已正常工作

最后一步我们在局域网内任意设备打开https://1.1.1.1/help ,如果一切正常的话,会显示如下界面:

docker的dns(使用Docker轻松搭建DNS服务器)(3)

至此我们已完成了全部的DNS服务器搭建工作。

疑难解答

Q: 提示53端口失败怎么办

A: 可以先sudo lsof -i:53看一下,一般就是systemd-resolved服务占用了,使用如下命令停止该服务并取消自动启动:

sudo systemctl stop systemd-resolved

sudo systemctl mask systemd-resolved.service

执行后重启一下宿主机。

Q:如何重启容器

A:使用如下命令

sudo docker stop dns-server

sudo docker rm dns-server

Q:运行DNS服务的宿主机设置的静态IP,如何更换DNS服务设置?

A: 直接编辑/etc/NetworkManager/system-connections/下你的网卡配置文件就可以了,DNS服务器设置成自己(127.0.0.1)

,