现如今,Internet 中几乎 95% 以上的流量,首先都是通过 DNS 查询
的方式获取目标服务器 Ip 信息,而传统的 DNS 查询及应答采用 UDP 或 TCP 的明文传输,因此存在如下风险与挑战:
1> 网络监听
: 尽管用户采用 HTTPs 加密的方式访问站点,而 DNS 查询应答并没有采用加密传输
2> DNS 劫持
:DNS 应答数据会被篡改,用户的访问会被路由到钓鱼网站和恶意站点
3> 中间设备干扰
: 源和目标间的网络设备可能会基于域名过滤数据包
为了应对以上挑战,IETF 于 2018 年 10 月,提出 DOH(DNS over HTTPs)
方案, 其实现规范为 RFC 8484,该规范通过加密传输
的方式发送 DNS 查询,避免原始 DNS 协议中用户 DNS 解析请求信息被窃听或被修改的问题,以此来达到保护用户隐私的目的
公共 doh 服务器
1、阿里云
# DoH 地址
https://dns.alidns.com/dns-query
# DoT 地址
dns.alidns.com
nslookup dns.alidns.com
> 223.6.6.6
> 223.5.5.5
> 2400:3200::1
> 2400:3200:baba::1
2、腾讯云
# DoH 地址
https://doh.pub/dns-query
# DoT 地址
dot.pub
nslookup doh.pub
> 120.53.53.53
> 1.12.12.12
竟然腾讯云 doh 服务暂未提供 ipv6 网络支持,单从这点可见阿里云发展的全面性,腾讯你可得挣点气啊 !!哈哈… ( ^_^ )
3、安全公司 360 提供
# DoH 地址
https://doh.360.cn
# DoT 地址
dot.360.cn
windows 端配置 doh 的两种方式
方式一:PowerShell 命令行,且以管理员身份运行
# 查看可用 dns 安全服务器
Get-DnsClientDohServerAddress
#> ServerAddress AllowFallbackToUdp AutoUpgrade DohTemplate
#> ------------- ------------------ ----------- -----------
#> 149.112.112.112 False False https://dns.quad9.net/dns-query
#> 9.9.9.9 False False https://dns.quad9.net/dns-query
#> 8.8.8.8 False False https://dns.google/dns-query
#> 8.8.4.4 False False https://dns.google/dns-query
#> 1.1.1.1 False False https://cloudflare-dns.com/dns-query
#> 1.0.0.1 False False https://cloudflare-dns.com/dns-query
#> 2001:4860:4860::8844 False False https://dns.google/dns-query
#> 2001:4860:4860::8888 False False https://dns.google/dns-query
#> 2606:4700:4700::1001 False False https://cloudflare-dns.com/dns-query
#> 2606:4700:4700::1111 False False https://cloudflare-dns.com/dns-query
#> 2620:fe::fe False False https://dns.quad9.net/dns-query
#> 2620:fe::fe:9 False False https://dns.quad9.net/dns-query
备注: 以上默认提供的 doh 服务,都是由国外互联网大厂免费提供,在国内目前无法使用,除非” 使用特殊的上网方式 “,这里不便细说,懂得自然都懂 ( ^_^ )
# 添加 DOH Server 配置
Add-DnsClientDohServerAddress -ServerAddress '223.5.5.5' -DohTemplate 'https://dns.alidns.com/dns-query' -AllowFallbackToUdp $True -AutoUpgrade $True
Add-DnsClientDohServerAddress -ServerAddress '2400:3200::1' -DohTemplate 'https://dns.alidns.com/dns-query' -AllowFallbackToUdp $True -AutoUpgrade $True
# 移除 DOH Server 配置
Remove-DnsClientDohServerAddress -ServerAddress 223.5.5.5,2400:3200::1
配置项-AllowFallbackToUdp $True -AutoUpgrade $True
表明,当配置该 dns server 时自动启用 dns 的加密查询,若失败可自动回退到 dns 的明文查询
方式二:windows cmd 命令行下执行,且以管理员身份运行
# 全局启用 doh,运行 dns 客户端使用 doh
netsh dns set global yes
# 查看 doh 是否启用
netsh dns show global
> DoH 设置 : enabled
# 查看可用 dns 安全服务器
netsh dns show encryption
# 添加加密 DNS 服务器模板
netsh dns add encryption server=223.5.5.5 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=yes udpfallback=yes
netsh dns add encryption server=2400:3200::1 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=yes udpfallback=yes
# 删除加密 DNS 服务器模板
netsh dns delete encryption server=223.5.5.5
netsh dns delete encryption server=2400:3200::1
DOH 配置后,按win + i 键
打开 Windows 设置 –> 网络 & Internet --> DNS 服务器分配 --> 编辑 --> 首选的 DNS 加密 --> 选择 “已加密的首选,未加密的允许”
Chrome 浏览器设置安全 dns
windows 启用 dns 加密查询后,Chrome 端并未生效,需在 Chrome 设置 --> 隐私设置和安全性 --> 使用安全 dns
处设置 doh 服务器信息,具体设置如下图
验证 dns 流量是否被加密
1、查看本机与 dns 服务器 223.5.5.5 的网络连接
# 利用 ping 或浏览器端访问该域名,即可测试 dns 流量是否加密
ping ywjsbang.com
netstat -no |findstr 223.5.5.5
#> TCP 192.168.31.218:62137 223.5.5.5:443 ESTABLISHED 30784
# 强制终止进程 id 为 30784 的网络连接
taskkill /pid 30784 /f
备注: wireshark 抓包时,可通过 tcp.len > 1
过滤掉 payload 小等于 1 的数据包,如 tcp 握手包(0)、tcp keepalived(1)
设置手机端 dns 流量加密
1、Android 手机设置流程
打开设置 –> 搜索框输入 dns –> 私人 DNS –> 私人 DNS 提供商主机名 –> 填入 dns.alidns.com 即可
2、IPhone 手机设置类似
WARP 加密
手机端安装一个名为1.1.1.1 + WARP: Safer Internet
的 App,即可在手机上体验到更快,更安全,更私密的互联网。且该应用由 Cloudflare 提供,全球安装数 1亿+;该应用同样提供桌面版本
,包括 window、macos、linux 平台