DoH


什么是 DoH

DoH:DNS Over HTTPS 协议
DoH 允许通过 HTTPS 协议进行 DNS 解析,可在进行DNS查询时,通过加密方式 发送数据保护用户隐私。
这种方法有助于 避免访问的网站被运营商或中间人窃取,当然也可以避免被中间人劫持和篡改。


传统的 DNS 有什么问题?

DNS 的全称是 Domain Name Server,是完成域名和与之相对应的IP地址转换的服务器。
通俗来讲,DNS 服务器就好比村口的王大爷,你告诉他你想找的住户名字(网站域名),他便引导你到正确的门牌号(IP地址)。

DNS是一套非常非常古老的协议,最早可追溯到1983年,自从1987年协议定稿之后,没有发生什么变化,被一直沿用至今。
开发DNS协议的时候,互联网还是新兴事物,因此大家根本没顾虑到信息的安全性和保密性。
传统的DNS查询和响应通过UDP或TCP发送而不加密,这很容易受到窃听和欺骗,包括基于DNS的网络审查,称为DNS污染。

继续刚才的比喻:你在村口遇到的可能是假的王大爷;你遇到的大爷会带你去错误的门牌号;王大爷给你指路时会被其他人听到。
你打开网易,登录自己的邮箱,你看到地址栏的网址是 mail.163.com 没错,于是信心满满地输入你的用户名和密码,殊不知你登录的其实是黑客设立的假网站……


DoH 工作原理

从攻击的角度来看,当我们使用 DoH 时,我们可以执行请求:

  • 向已知的且值得信赖的一方发送请求(例如 Google)
  • 我们可以从中控制响应
  • 通过 SSL 加密的信道
  • 如果被检查的话,那就变得不显眼

除了这些特征之外,我们发现许多已实施 SSL 检查的客户因各种原因(Google 产品中的证书,流量负载,隐私等)将所有 Google 域排除在检查范围之外。
总而言之,这使得 DoH 通过谷歌成为触发 Payload 的理想信道。


现状

此前支持 DoH 的服务器都在国外,而国内查询延时很长,连接性差,严重影响用户体验。

目前国内一些浏览器也加入了 DoH,不仅仅是给用户带来了安全,还代表了我国有能力建立自己的 DNS 根,未来将逐步脱离国际控制的 13 个 DNS 根,不再受外国服务器的控制。


DoH servers

https://github.com/curl/curl/wiki/DNS-over-HTTPS


如何在 macOS 使用 DoH(使用 cloudflared)

转载自:https://www.jkg.tw/p3361/

1、安裝 cloudflared

$ brew install cloudflare/cloudflare/cloudflared

2、建立 cloudflared 設定檔

这裡除了上次推荐的 FutaDNS 以外,另外再推荐一个同样使用 AdGuard Home 搭出来的公共 DNS 服务

服务器在谷歌 GCP 台湾机房,台湾各地连线过去的速度都很快

公共 DNS 项目的简介网页: https://readme.avpclub.gq

来源: https://www.pcdvd.com.tw/showthread.php?t=1157681

# 新建資料夾跟設定檔
$ mkdir -p /usr/local/etc/cloudflared 
$ nano /usr/local/etc/cloudflared/config.yaml
proxy-dns: true
proxy-dns-upstream:
  - https://adh.avpclub.gq/dns-query
  - https://dns.futa.gg/dns-query

記得保存退出


你不喜歡过滤的話,也可以直接使用 CloudFlare 的公共加密 DNS

- https://1.1.1.1/dns-query
- https://1.0.0.1/dns-query

3、启动 cloudflared

$ sudo cloudflared service install

cloudflared Service 安裝後,以後重開機都會自動啓動 DNS 伺服器,會在本機開始 listen port 53

日後不想用的話,可以透過以下指令移除 Service

$ sudo cloudflared service uninstall

4、修改 macOS 系统网路设定

最后打开 macOS 的「系统偏好设定」,依序找到「网络」--「高级」--「DNS」

改成本机 IP 即可

这样就可以了


参考

posted @ 2021-01-25 09:36  小然-  阅读(878)  评论(0编辑  收藏  举报