开了一台境外的 VPS ,安装了 AdGuardHome ,启用了 EDNS ,但是选择上游 DNS 的时候遇到了点问题。
网上找了所谓境外支持 ECS 的 DNS 服务器列表,实际使用体验不是很好,有些说是支持,实际不支持,有些你说支持吧,但是传了 subnet 得到结果到处乱跑。
最后试了阿里的 DNS 在境外也挺好用,传了 subnet 能解析出来国内的 IP ,但是早上遇到了 apple 的域名响应 SERVFAIL ,也不能鸡蛋全放一个篮子里,还是得加上别的。
Google 的 DNS 也支持 ECS ,但是我测试的时候使用百度的域名踩到坑了,一会儿返回国内的,一会儿返回国外的。
国内 IP
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; CLIENT-SUBNET: 58.40.75.0/24/24
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 115 IN CNAME www.a.shifen.com.
www.a.shifen.com. 115 IN A 180.101.49.44
www.a.shifen.com. 115 IN A 180.101.51.73
下面是返回了国外的 IP ,可以看到 CLIENT-SUBNET: 从 58.40.75.0/24/24 变成了 58.40.75.0/24/0
国外 IP
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
; CLIENT-SUBNET: 58.40.75.0/24/0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1057 IN CNAME www.a.shifen.com.
www.a.shifen.com. 4 IN CNAME www.wshifen.com.
www.wshifen.com. 282 IN A 119.63.197.139
www.wshifen.com. 282 IN A 119.63.197.151
而且解析结果有两条 CNAME ,但是把 www.a.shifen.com 单独拿出来携带 subnet 是查询不到 www.wshifen.com 这条记录的。
不知道 Google 的 DNS 还有没有别的坑,大家自建的 DoH 有用来在国内日常使用吗?还是只用来解析国外的域名? 还有什么对 ECS 支持良好的 DNS 服务器推荐吗?
![]() |
1
sky92682 9 小时 36 分钟前
国外 Google 的 DNS 和 IBM 的 9.9.9.11 支持 ECS 且比较好用。另外百度确实是个问题,我的应对方法是针对百度的域名指定上游:
[/*.baidu.com/]114.114.114.114 |
![]() |
2
sky92682 9 小时 31 分钟前 ![]() 补充一下我的配置(用的负载均衡模式):
tls://2001:4860:4860::8888 tls://2001:4860:4860::8844 tls://8.8.8.8 tls://8.8.4.4 tls://9.9.9.11 tls://149.112.112.11 tls://2620:fe::11 tls://2620:fe::fe:11 https://2001:4860:4860::8888/dns-query https://2001:4860:4860::8844/dns-query https://8.8.8.8/dns-query https://8.8.4.4/dns-query https://9.9.9.11/dns-query https://149.112.112.11/dns-query https://2620:fe::11/dns-query https://2620:fe::fe:11/dns-query [/*.baidu.com/]114.114.114.114 |
![]() |
3
sky92682 9 小时 26 分钟前
另外再补充一点:adguardhome 里面设置一下客户端白名单,使用指定的路径查询,例如“/dns-query/hello”,不要直接使用默认的/dns-query 后缀,否则遇到扫描可能会导致域名被墙。
|
![]() |
5
billytom 8 小时 58 分钟前
不是你这么用的,要找个香港轻量鸡,尽量便宜你访问延迟低的,然后上面装个 Adguardhome ,开 DOH ,之后不用我说了吧,这个 Adguardhome 的上游配 1111 1001 ,如果喜欢用 gg 的,记得关掉 edns
|
![]() |
6
HenryHe613 8 小时 45 分钟前
我刚刚搜了一下 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 ``` |
![]() |
7
HenryHe613 8 小时 41 分钟前
@HenryHe613 为什么不能发 CodeBox ,markdown 失效了吗?
![]() 回复一下 OP 在主题中的最后的问题。我只使用自建 DoH ,配合 Shadowrocket 使用,Mac+iOS 都能用。所有解析都用自己 DoH 了,可能延时比较高但我能忍受。 |
![]() |
8
HenryHe613 8 小时 39 分钟前
还有现在我还有一台 Claw 的 8 刀机,晚高峰能跑 600Mbps/500Mbps (浙江电信千兆对等测速)。延迟也不高做 DoH 挺好的。我也研究研究
|
9
MacsedProtoss 8 小时 15 分钟前 via iPhone
我实在是不理解自建境外 doh 的目标是啥🤔
使用境外 doh 的话境内网站的 dns 可能会出问题 唯一能想到的就是解析出不受污染的 DNS 结果之后按照 geoip 分流? 从代理的角度来说 很多时候细节的分流还是依赖域名的 没办法仅用 IP 来做吧 如果只是想要使用 doh 来防止传统 dns 的劫持和泄漏的话 应该是所有已知要代理的那些域名都走你的代理节点来完成全部的解析与访问流程 客户端此时表现即 fakeip 模式 同时对于非规则内的域名均采用境内公开 doh 即可 |
10
whjlinyi 8 小时 10 分钟前 via iPhone
nextdns 对 edns 支持不错 用两年多了
|
11
whjlinyi 8 小时 9 分钟前 via iPhone
我国内外只用这个 感觉还行
|
![]() |
12
sky92682 8 小时 8 分钟前 ![]() @peasant 白名单可以以客户端名称来设置 不需要固定 IP 。在“设置→DNS 设置→访问设置里面”,设置一下允许的客户端,假如为 xxxx ,这样就只能用 https://xx.xx.com/dns-query/xxxx 这样的格式来解析。
|
![]() |
13
peasant OP @MacsedProtoss 在境外使用 EDNS 就是为了解决境内网站 CDN 的问题,这样境内只需要设置使用自建的 DoH 就可以获得无污染并且支持境内 CDN 的解析结果,完全不需要乱七八糟的分流什么的,当然梯子还是得挂的。
|
![]() |
14
baraja 7 小时 36 分钟前 ![]() 看我的帖子,总结了适合作为 agh 上游的 ecd dns
/t/1086059 |
![]() |
16
totoro625 7 小时 31 分钟前
直接用的境内 vps 做的 doh ,套了境内 cdn
通过代理访问境外 doh ,感觉还不错 |
19
olive1223 2 小时 24 分钟前
我写下我的方案,mosdns 分流到 smartdns 国内和外服务器
smartdns 国内使用阿里腾讯 360 dot doh ,开启测速;国外使用代理访问 vps 上自建的 dns 。 |