上一回我们说到《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
- 这里我们暴露了两个端口出来,分别是用于web管理的5380端口和用于DNS解析的53端口,然后对容器内的dns配置文件夹做了宿主机映射,这里要注意的是/home/your-path-to-dns-config/需要替换成你想要设定的路径。
设置路由DHCP
这个就比较简单了,直接在路由器里设置即可:
设置DoH功能
我的NAS IP地址是192.168.1.108,所以我这里只要打开DNS服务器的管理页面192.168.1.108:5380(第一次打开需要设定访问web管理界面的密码)。
如图所示进行设置即可,因为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 ,如果一切正常的话,会显示如下界面:
至此我们已完成了全部的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)