利用 Nginx 设置 DNS over TLS 服务器并用于 Android Q 私人 DNS

自 Android Q (Android 10) 起,系统支持了“私人 DNS” (DNS over TLS) 功能。在网上很多教程中,都直接使用 Cloudflare DNS (1.1.1.1) 或 Google DNS (8.8.8.8) 这些公共 DNS,但是它们在国内的访问速度都不是很理想。因此,需要搭建一个真正的私人 DNS 服务器。

Nginx 配置

话不多说,直接 Show Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
stream {
upstream dot{
zone dot 64k;
server 1.1.1.1:853;
}

server{
listen 853 ssl;
ssl_certificate /path/to/full-chain.cer;
ssl_certificate_key /path/to/private-key.key;
ssl_prefer_server_ciphers off;

proxy_pass dot;
proxy_ssl on;
}
}

然后重启 Nginx 即可。

私人 DNS 配置

Android 的私人 DNS 似乎不支持直接设置 IP 地址,也不支持指定端口号,只能使用默认的 853 端口。

以 MIUI 为例,在“设置——连接与共享——私人 DNS”处,选择“私人 DNS 提供商主机名”,输入域名,即可启用。