我刚刚搜了一下 EDNS ,看起来(因为我还没用过)非常好用。
我个人是通过在阿里云上用 SmartDNS 自建 DoH ( path 用 Nginx 改为自定义的),国外域名通过 xray+socks 送到 US 去查询(延迟非常高),国内域名通过阿里 DoH 查询,但是依然会出现 DNS 解析绕路的情况。看来 EDNS 是一个非常好的解决方案。
附上我的 SmartDNS 配置:
```
# 监听 53 端口
bind :53
bind-tcp :53
bind-https :444
# --- Domestic 域名 ---
# 定义 domestic 域名集
domain-set -name domestic_domainlist -file /etc/smartdns/domestic.txt
# 国内 DNS 服务器组
server https://223.5.5.5/dns-query -group domestic
server https://223.6.6.6/dns-query -group domestic
server https://dns.pub/dns-query -group domestic
# 匹配 domestic 域名集中的域名
domain-rules /domain-set:domestic_domainlist/ -nameserver domestic -speed-check-mode ping
# --- Oversea 域名 ---
# 代理服务器,用于 oversea 解析
proxy-server socks5://127.0.0.1:1082 -name socks5
# Oversea DNS 服务器组(通过代理)
server
https://dns.google/dns-query -group oversea -proxy socks5
server
https://dns.cloudflare.com/dns-query -group oversea -proxy socks5
# 未匹配到的域名使用 oversea 服务器解析
domain-rules /./ -nameserver oversea
# 日志(系统+审计)
log-level info
log-size 50m
log-file /etc/smartdns/smartdns.log
log-num 3
audit-enable yes
audit-file /etc/smartdns/smartdns-audit.log
audit-size 50m
audit-num 2
# 缓存配置
cache-size 65536
cache-persist yes
prefetch-domain yes
cache-file /etc/smartdns/smartdns.cache
# 开启过期缓存服务功能
serve-expired yes
# 设定过期缓存服务最长超时时间(秒)
serve-expired-ttl 3
# 设定回应的过期缓存 TTL (秒)
serve-expired-reply-ttl 5
# 禁用 IPV6
force-AAAA-SOA yes
# 强制指定 qtyp 返回 SOA
force-qtype-SOA 65
```