开了一台境外的 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 服务器推荐吗?

举报· 1035 次点击
登录 注册 站外分享
9 条回复  
sky92682 小成 2025-3-6 11:11:22
国外 Google 的 DNS 和 IBM 的 9.9.9.11 支持 ECS 且比较好用。另外百度确实是个问题,我的应对方法是针对百度的域名指定上游: [/*.baidu.com/]114.114.114.114
sky92682 小成 2025-3-6 11:17:13
补充一下我的配置(用的负载均衡模式): 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
sky92682 小成 2025-3-6 11:21:57
另外再补充一点:adguardhome 里面设置一下客户端白名单,使用指定的路径查询,例如“/dns-query/hello”,不要直接使用默认的/dns-query 后缀,否则遇到扫描可能会导致域名被墙。
peasant 楼主 小成 2025-3-6 11:38:31
@sky92682 动态 IP 不太好设置白名单,不过我用 nginx 反向代理改了查询路径,应该没啥问题
billytom 小成 2025-3-6 11:49:47
不是你这么用的,要找个香港轻量鸡,尽量便宜你访问延迟低的,然后上面装个 Adguardhome ,开 DOH ,之后不用我说了吧,这个 Adguardhome 的上游配 1111 1001 ,如果喜欢用 gg 的,记得关掉 edns
HenryHe613 初学 2025-3-6 12:02:37
我刚刚搜了一下 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 ```
HenryHe613 初学 2025-3-6 12:06:17
@HenryHe613 为什么不能发 CodeBox ,markdown 失效了吗? https://i.imgur.com/HgxsUD2.png 回复一下 OP 在主题中的最后的问题。我只使用自建 DoH ,配合 Shadowrocket 使用,Mac+iOS 都能用。所有解析都用自己 DoH 了,可能延时比较高但我能忍受。
HenryHe613 初学 2025-3-6 12:08:25
还有现在我还有一台 Claw 的 8 刀机,晚高峰能跑 600Mbps/500Mbps (浙江电信千兆对等测速)。延迟也不高做 DoH 挺好的。我也研究研究
MacsedProtoss 小成 2025-3-6 12:32:42
我实在是不理解自建境外 doh 的目标是啥🤔 使用境外 doh 的话境内网站的 dns 可能会出问题 唯一能想到的就是解析出不受污染的 DNS 结果之后按照 geoip 分流? 从代理的角度来说 很多时候细节的分流还是依赖域名的 没办法仅用 IP 来做吧 如果只是想要使用 doh 来防止传统 dns 的劫持和泄漏的话 应该是所有已知要代理的那些域名都走你的代理节点来完成全部的解析与访问流程 客户端此时表现即 fakeip 模式 同时对于非规则内的域名均采用境内公开 doh 即可
返回顶部