域名安全协议有如DNSSEC,DNSCrypt,DNS over TLS,DNS over HTTPS,而 DNS over HTTPS 最被看好
DNS over HTTPS 简称为 DoH
是基于 HTTPS 隧道之上的域名协议。HTTPS 流量特征目前无法识别,那么 DoH 也就无法识别,白脸不知道你是在浏览 https 网站还是在进行 DNS 查询,所以很安全
--------
DoH
--------
HTTP
--------
TLS
--------
TCP
--------
IP
--------
相比DNS over TLS (DoT),DoH 多了一层封装,所以性能会比 DoT 略差,如果使用国内的DoH服务,这个性能损失是可以忽略的
-
基于 HTTPS 之上,十分安全。白脸不知道你在进行域名查询
-
基于 HTTPS 之上,可以无缝支持 Proxy
-
可以充分利用 HTTP 2.0 的特性
-
浏览器积极支持
Firefox 从 63.0 beta 开始正式支持 DoH
-
路由器配置好了 shadowsocks 翻墙服务
- shadowsocks-libev 客户端 ss-redir 提供流量翻墙
- dnsmasq 分配 dns 查询
- shadowsocks-libev 客户端 ss-tunnel 转发 DNS 查询到 shadowsocks 服务端
-
电脑或其他设备的网络连接属性中,网关和DNS设为路由器地址
此时所有连上路由器的设备都可以自动翻墙
浏览器设置为使用国内DoH服务端进行DNS解析,也就是浏览器直接进行DNS查询,不通过路由器 dnsmasq 和 ss-tunnel 进行转发了
这样做的好处是减轻了路由器的负担,并且DNS查询的速度可能比转发到 shadowsocks 服务端更快
如果只有浏览器需要用到翻墙服务,那么所有浏览器都配置 DoH,就可以把路由器里的 dnsmasq 和 ss-tunnel 停掉,同时网络连接属性中的 DNS 没有必要设为路由器地址了
我们要使用国内的 DoH 服务端,需要先把 DoH服务端的域名和 IP 地址加入到路由器的相应配置中
- DoH 服务端域名加入到路由器 dnsmasq 国内网站名单中
- DoH 服务端IP地址加入到路由器防火墙的忽略列表中
如果你按照 OpenWrt 路由器 shadowsocks自动翻墙、科学上网教程
https://github.com/softwaredownload/openwrt-fanqiang
配置了路由器自动翻墙,那么就很简单了,步骤如下:
-
把项目 clone 到本地,假定是 C 盘根目录
git clone https://github.com/softwaredownload/openwrt-fanqiang.git
-
把相关文件复制到路由器,假设你使用的是 Git Bash for Windows
cd /C/openwrt-fanqiang scp openwrt/default/etc/dnsmasq.d/custom.china.conf root@192.168.1.1:/etc/dnsmasq.d/
custom.china.conf 是自定义的在国内进行 dns 的域名,已经把我们要用到的 DoH 服务端域名加入其中了
scp openwrt/default/etc/shadowsocks-libev/ip_custom.txt root@192.168.1.1:/etc/shadowsocks-libev/
ip_custom.txt 是自定义的防火墙规则中需要忽略的IP,已经包含了 DoH 服务端的 IP 地址
我们把数据从防火墙设置脚本中分离了出来,改动数据不需要去动脚本文件,十分方便
需要注意的是,ip_custom.txt 等数据文件不能使用 Windows 记事本编辑,可以使用第三方编辑器如 Sublime Text,并把换行方式设置为 Linux 格式
-
登录路由器,执行命令使用新数据生效
ssh root@192.168.1.1 kige@openwrt:~# /etc/init.d/dnsmasq restart kige@openwrt:~# /etc/init.d/shadowsocks restart
-
下载 FireFox
Firefox 自从 63.0 版本开始,提供了十分简单的的 DoH 配置界面
如果你使用的是 63.0 以前的版本,先卸载它
FireFox配置DoH方法参考这个教程
-
测试浏览器 DoH 是否起作用
打开一些外网,如 https://youtube.com https://flickr.com
FireFox地址栏输入
about:networking#dns
查看有哪些域名是通过 DoH 服务解析的TRR = Trusted Recursive Resolver,结果中 TRR 列为 true 表示域名是通过 DoH 解析的
也可以路由器关闭 dnsmasq再测试:
kige@openwrt:~# /etc/init.d/dnsmasq stop
这时别的浏览器没有配置过DoH,又无法通过路由器解析域名,自然打开 youtube.com,只有FireFox还是畅行国内外无阻
目前用的是红鱼DNS,可能是技术原因,有的网站可能无法解析,切换到未用 DoH 的浏览器就正常了
相关资源: