搭建无污染的DNS服务
DNS 作为互联网世界的电话簿,重要性不言而喻。但是平常使用时,默认情况都是在裸奔,非常不安全,劫持和污染处处存在,所以搭建一个自己放心的 DNS 服务还是有必要的……
准备
- VPS (国内延迟低、国外无阻碍,看取舍吧。有条件也可以用树莓派之类的)
- coredns(用于配置服务器的 Dns Over Tls 「dot」或 Dns Over Https 「doh」)
- dnsmasq(用于转发 dns 请求)
- pihole(可选,可以干掉追踪器和广告)
- dnsproxy(将请求转发到其他加密 DNS 服务器上)
Coredns
安卓自从 9 版本之后就内置了 Dns Over Tls 「dot」 配置,叫做 私人DNS
,这样进行配置就不用一个一个改 wifi 设定,同时还对蜂窝网络起效果,所以可以用 CoreDNS
来加密设备到服务器之间的请求……
CoreDNS
同样使用 Golang
编写,仓库内提供了可执行程序 和 systemd 文件,就算你的发行版没有提供 CoreDNS
的打包也可以自行写个服务。
配置如下:
1 | tls://.:853 { |
作用是将 853 端口的 dot 请求转发到 53 端口所运行的服务上……
证书用 certbot
申请,偷偷摸摸的用 853 ,国内的云服务商应该不会注意到(毕竟盯着的是 443 和 80 端口的情况多一点……吧)
Pihole (可选)
pihole
的好处就是网页的控制面板很好用,看着面板中的统计数据将有非常大的满足感,除此之外就没有啥了。
如果不是全新机子的话,还是用 docker-compose
安装吧,pihole 对于安装环境还是很挑剔的。
首先安装 docker
并启动,然后安装 docker-compose
,新建文件夹下新建 docker-compose.yml
文件,输入:
1 | version: "3" |
注意 ServerIP
和 VIRTUAL_HOST
要写对,要不然会被禁止访问……
列表
装了 pihole 要发挥最大的作用就得找一个优质的屏蔽列表。
可以使用 anti-AD ,能屏蔽国内大部分追踪器和广告地址,对于 pihole 的配置文件在 这 。
Dnsmasq
打开配置文件,更改 port
监听端口, server
写上游 dns 地址(:
要用 #
代替)。
无日志的 dot
, doh
服务器一般都是在国外,一般延迟都很糟糕,所以对于国内的域名来说访问延迟将会很大。可以用 Dnsmasq
搭配 dnsmasq-china-list 项目,起到分流的作用,国内的常用域名送到国内的公共 DNS 服务解析,除此之外走加密的 DNS 服务。
不想装 pihole
的话,可以使用 anti-AD 项目里的 anti-ad-for-dnsmasq.conf 配置文件……
Dnsproxy
转发到上游的 dot 、 doh 请求。
项目地址在 这里 ,而且似乎没有提供服务文件,所以得用 screen
挂着了。
基本上能用的 dot 、 doh 服务器被 封 的差不多了,能用的 只有 Cloudflare
的了,如果对无日志不在意的话可以用腾讯云的 dnspod
。
总结
到此,一个长长的 dns 链条就形成了:
1 | 手机 -- dot 请求 --> coredns --> pihole -- 屏蔽或放行 --> dnsmasq -- 分流 --> 国内列表/列表外 --> dnsproxy --> dot/doh 服务器 |
如果不贪恋 pihole
的控制面板的话,它的功能完全可以交给 dnsmasq
的。
只是没有控制面板的话,查误杀之类的事就会很麻烦……
搭好后应该使用抓包程序查看数据包,判断设备到服务器是否 套上了 tls ,服务器查看日志,看是否走了加密 dns 服务。
如不想授权 Giscus 应用,也可以点击下方左上角数字直接跳转到 Github Discussions 进行评论。