DNS Protocol
约 3 分钟阅读
标签:协议
| nmae | abbr. | port | schema | notes |
|---|---|---|---|---|
| DNS-over-UDP/53 | Do53 | udp/53 | 512 字节 | |
| DNS-over-TCP/53 | Do53/TCP | tcp/53 | tcp, tcp+udp | |
| DNS-over-QUIC | DoQ | udp/853 | quic://:763 | |
| DNS-over-TLS | DoT | tcp/853 | tls, tcp-tls | |
| DNS-over-HTTPS | DoH | host/dns-query | https | |
| DNS-over-HTTP3 | DoH3 | h3://host/dns-query | h3 | DoH+H3 |
| DNS-over-TOR | ||||
| Oblivious DNS-over-HTTPS | ODoH | |||
| DNSCrypt | sdns:// |
- Oblivious DNS over HTTPS - ODoH
- 避免 Provider 感知到用户 IP - 类似 anonymized DNScrypt
- blog.cloudflare.com/oblivious-dns
- tools.ietf.org/html/draft-pauly-dprive-oblivious-doh-03
- cloudflare/odoh-goGitHubcloudflare/odoh-go
- dnsprivacy.org/dns_privacy_clients
- DoH
- curl/curl/wiki/DNS-over-HTTPSGitHubcurl/curl/wiki/DNS-over-HTTPSrfc8484 · Server · https://dns.cloudflare.com/dns-query 被墙 · https://dns.alidns.com/dns-query 不支持 application/dns+json · https://adh.avpclub.gq/dns-query笔记:DNS over HTTPS
- DoT
apk add bind-utils knot-utils # for AlpineLinux
brew install bind knot # for macOS
dig wener.me @114.114.114.114
dig wener.me @114.114.114.114 +tcp
dig wener.me @127.0.0.1 -p 5353
# 最新版本 dig 支持 DoH
dig @cloudflare-dns.com +https wener.me
# DoT
# +tls-hostname=STR +tls-pin=BASE64 +tls-sni=STR +tls-ocsp-stapling
kdig @1.1.1.1 +tls-ca wener.me
curl https://1.1.1.1:853
kdig @223.5.5.5 +tls-ca wener.me
kdig -d @8.8.8.8 +tls-ca +tls-host=dns.google.com wener.me
kdig -d @dns.alidns.com +tls-ca wener.me
# 判断污染 DNS 解析和域名解析结果
# 可能返回错误的 IP
dig +short @1.1.1.1 wikipedia.org
openssl s_client -connect $(dig +short @1.1.1.1 wikipedia.org):443
openssl s_client -servername wikipedia.org -connect $(dig +short @1.1.1.1 wikipedia.org):443 < /dev/null 2> /dev/null | openssl x509 -noout -subject
# 判断 DNS 拦截
# 正常情况应该返回 NS 但是被拦截后只返回 A 记录, 说明 1.0.0.1 这个 DNS 服务器被拦截了
kdig @1.0.0.1 www.twitter.com NS # 可能只返回 A 记录
kdig @1.0.0.1 www.twitter.com NS +tls-ca # 这时候能够正常返回 NS 记录
# 向一个不存在的 DNS 发出查询还是会有返回,说明是被污染
dig +nocookie +tries=1 +time=1 www.twitter.com NS @example.com # 返回 A 记录
dig +nocookie +tries=1 +time=1 wener.me NS @example.com # 不会返回,因为这个域名没有被污染
# 类似被封锁的域名
dig +nocookie +tries=1 +time=1 www.google.com NS @example.com
dig +nocookie +tries=1 +time=1 www.nordvpn.com NS @example.com
# 使用 IP 减少尝试次数
dig +nocookie +tries=1 +time=1 google.com NS @23.192.228.84
kdig @9.9.9.9 google.com +tls-ca
curl https://9.9.9.9:853
# DoH
# knot-dnsutils
# 直接请求 DoH
curl -H 'accept: application/dns-json' 'https://dns.cloudflare.com/dns-query?name=wener.me&type=A' | jq .
# curl 使用 DoT 解析
curl --doh-url https://dns.cloudflare.com/dns-query https://wener.me
#
kdig @https://dns.google/dns-query wener.me A +tls
# DoH
kdig @1.1.1.1 +https wener.me
kdig @dns.alidns.com +https example.com.
kdig @8.8.4.4 +https +https-get example.com.
kdig @8.8.8.8 +https +tls-hostname=dns.google +fastopen example.com.
# https://8.8.8.8 -> https://dns.google关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub3 条
- cloudflare/odoh-gogithub.com/cloudflare/odoh-go
- curl/curl/wiki/DNS-over-HTTPSgithub.com/curl/curl/wiki/DNS-over-HTTPS
- wolf-joe/ts-dns#24github.com/wolf-joe/ts-dns/issues/24
标准文档1 条
- RFC 7858datatracker.ietf.org/doc/html/rfc7858RFC
IETF Request for Comments standard document.
其他外链9 条
- blog.cloudflare.com/oblivious-dnsblog.cloudflare.com/oblivious-dns
- cloudflare-dns.com/dns-querycloudflare-dns.com/dns-query
- dns.alidns.com/dns-querydns.alidns.com/dns-query
- dns.google/dns-querydns.google/dns-query
- dnsprivacy.org/dns_privacy_clientsdnsprivacy.org/dns_privacy_clients
- host/dns-queryhost/dns-query
- tools.ietf.org/html/draft-huitema-quic-dnsoquic-07tools.ietf.org/html/draft-huitema-quic-dnsoquic-07
- tools.ietf.org/html/draft-pauly-dprive-oblivious-doh-03tools.ietf.org/html/draft-pauly-dprive-oblivious-doh-03
- zh.wikipedia.org/zh/中华人民共和国被封锁网站列表zh.wikipedia.org/zh/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E8%A2%AB%E5%B0%81%E9%94%81%E7%BD%91%E7%AB%99%E5%88%97%E8%A1%A8