本文主要是DNS、DoT、DoH协议测试方法备忘录。为什么需要DoT和DoH参见CloudFlare的文章《基于 HTTPS 的 DNS 和基于 TLS 的 DNS | 安全 DNS》。
各种DNS协议信息
DNS协议 | DNS over UDP | DNS over TCP | DNS over TLS | DNS over HTTPS |
通信协议 | UDP | TCP | TLS | HTTPS |
默认端口 | 53 | 53 | 853 | 443 |
DNS默认是53端口UDP协议的,或也可以指定为TCP协议,这两种都是明文传输,性能高但安全性低。因此DoT是用TLS协议包装了DNS UDP数据包,利用证书达到数据加密和防止中间人篡改伪造。由于TLS协议是网页传输https使用的协议,所以DoH在DoT之上又包装了一层,将数据包完全伪装为使用https协议的网页浏览数据包,因而必须使用443端口。
DOT和DoH虽然安全性高,但仍然无法抵挡墙。由于DoT使用独立端口853,因此只需要屏蔽所有853端口流量即可。DoH伪装为https协议,中间人虽然看不到https数据包的具体内容,但仍然可以获知https数据包发往哪个域名,因此屏蔽几个DNS提供商的DoH域名即可。
所需工具
dig和nslookup只能查询UDP和TCP协议的DNS,所以需要使用第三方小工具dog(https://dns.lookup.dog)。
dog查询命令
dog.exe 要查询的域名 @DNS服务器域名或IP:端口 -协议
。如果是UDP协议或默认端口可以不特别写明。
1 2 3 4 5 6 7 8 9 10 | 协议: -U, --udp Use the DNS protocol over UDP -T, --tcp Use the DNS protocol over TCP -S, --tls Use the DNS-over-TLS protocol -H, --https Use the DNS-over-HTTPS protocol dog google.com @dns.google # UDP dog google.com @dns.google -T # TCP dog google.com @dns.google -S # DoT 完整协议格式 tls://dns.google:853 dog google.com @dns.google -H # DoH 完整协议格式 https://dns.google/dns-query |
文章评论