配置浏览器使用 DNS over HTTPS (DoH) 进行安全 DNS

🏈 什么是 DNS over HTTPS

域名安全协议有如DNSSEC,DNSCrypt,DNS over TLS,DNS over HTTPS,而 DNS over HTTPS 最被看好

DNS over HTTPS 简称为 DoH 是基于 HTTPS 隧道之上的域名协议。HTTPS 流量特征目前无法识别,那么 DoH 也就无法识别,白脸不知道你是在浏览 https 网站还是在进行 DNS 查询,所以很安全

🗽 DoH 协议栈示意

--------
  DoH
--------
  HTTP
--------
  TLS
--------
  TCP
--------
  IP
--------

🎃 DNS over HTTPS 缺点

相比DNS over TLS (DoT),DoH 多了一层封装,所以性能会比 DoT 略差,如果使用国内的DoH服务,这个性能损失是可以忽略的

🏀 为什么推荐使用 DNS over HTTPS

  • 基于 HTTPS 之上,十分安全。白脸不知道你在进行域名查询
  • 基于 HTTPS 之上,可以无缝支持 Proxy
  • 可以充分利用 HTTP 2.0 的特性
  • 浏览器积极支持

    Firefox 从 63.0 beta 开始正式支持 DoH

🍣 本教程使用 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 没有必要设为路由器地址了

🎳 浏览器使用DNS over HTTPS (DoH)的准备工作

我们要使用国内的 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 配置使用 DNS over HTTPS (DoH)

  • 下载 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 的浏览器就正常了

相关资源:

results matching ""

    No results matching ""