红尘踏破逍遥境
回首何处是人间

上一回我们说到《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)

发表回复 取消回复