路由器上装安了 stubby,然后域名服务器使用的是 dns.google 但是拿到的 CDN 解析地址都是国外的,有什么解决办法吗?

2020-02-26 22:40:17 +08:00
 loukky
同样的 dns.google 在 Android 9 里面使用 就能正确的返回国内 IP。
8309 次点击
所在节点    DNS
33 条回复
parametrix
2020-02-26 23:08:02 +08:00
过代理的话就要利用 edns 特性,stubby 可以试一试

edns_client_subnet_private : 0
loukky
2020-02-26 23:39:12 +08:00
@parametrix 这个是加在配置文件里面吗?
loukky
2020-02-26 23:51:29 +08:00
@parametrix 好像确实用上了 edns 的特性,但是某些域名还是解析到国外的 cdn 了,huya.com 解析到阿里云香港去了...
parametrix
2020-02-27 00:16:58 +08:00
@loukky stubby 的这个特性应该只是传递 edns,估计下游客户端也不确定自己的公网 ip,所以传递了不准确的信息。

目前支持指定 edns 的客户端很少,openwrt 上就更少了,https-dns-proxy 的旧版本可以做到,但最近也删掉了。所以这个确实很麻烦,简单的处理方法是国内的网站就直连国内的 dns 进行解析。
zro
2020-02-27 00:33:15 +08:00
借楼问下,如何在 OP 开多个 stubby 后台(配置都有些许不同),虽然多开 SSH 能勉强应付得了。。
loukky
2020-02-27 00:46:09 +08:00
@parametrix 感谢,目前测试发现,有些域名有时候会解析到国外的 cdn,但是有时候又会解析国内 cdn,比如 www.recaptcha.net 会解析到国外,但是 recaptcha.net 又解析到国内。
目前看来还是等待 stubby 进一步完善,暂时还是设置多个上游 dns 较好。
zro
2020-02-27 01:07:22 +08:00
@loukky #6 可以试试 OpenDNS 的 DoH,也支持 ECS。。Quad9 虽然也都支持,但不太推荐~
loukky
2020-02-27 03:39:23 +08:00
@zro opendns 很奇怪,举个例子,解析 at.alicdn.com 如果使用 53 端口,解析结果是国内,如果使用 443 或者 5353 端口,解析的结果是国外。不知道为什么?
ExcitedCodes
2020-02-27 08:00:40 +08:00
github/ExcitedCodes/SmartChinaDNS
这个智能分流 DNS 可能对你有帮助
missdeer
2020-02-27 08:32:51 +08:00
leido
2020-02-27 08:36:51 +08:00
即使你用了 edns,谷歌也有一定概率给你解析到香港和美国,前面说的 opendns 我没试过,楼主可以试试
gitopen
2020-02-27 09:47:52 +08:00
@missdeer #10 强烈推荐 missdeer 编译的 coredns,一直在用,mac 上用,pc 上也用~~赞
azh7138m
2020-02-27 11:24:15 +08:00
目前我在路由器上用 overture 来转发 DNS 请求
EDNSClientSubnet.Policy manual
EDNSClientSubnet.ExternalIP 随便填了一个同市的 IP
Kobayashi
2020-02-27 13:05:55 +08:00
分流。ChinaDNS 基于 IP 位置分流,dnsmasq 用来缓存外加 GFW 列表。

@loukky Opendns 问题基本断定是你被运营商 DNS 劫持了。53 口 NAT 到自家 DNS,返回给你一个自己家缓存地址。可以根据 dig +trace 判断。

@missdeer 如果用 DoT coredns 就算了。目前 DoT stubby 效率最高,可以复用链接,8.8.8.8:853 60ms 内可达,比自家 Unbound 都快。另外不知道 coredns 有没有类似 ChinaDNS 基于 IP 分流的方案。

@azh7138m overture 我记得 DoT 有 bug,一次请求得有 1s。好像后开修复了,请求 Google DNS 大概 200ms,没有复用连接,还是比不过 stubby。
azh7138m
2020-02-27 13:11:45 +08:00
@Kobayashi 我套了一个 dnsmasq 做缓存
没感觉到有这个问题
Kobayashi
2020-02-27 13:14:13 +08:00
@azh7138m overture 不是就有缓存吗,为什么要再套一层?
missdeer
2020-02-27 13:16:40 +08:00
@Kobayashi 几乎所有用 Go 写的轮子大概都用的同一个 package( https://github.com/miekg/dns),从协议实现上说是不会有啥区别的。也许只能给上游开 issue 改进了。
zro
2020-02-27 13:35:13 +08:00
@loukky #8 53 端口被劫持了?
imn1
2020-02-27 13:48:51 +08:00
@Kobayashi
我也习惯套一个,但我的需求是 cache+修改 TTL,不喜欢同一天内多次解析都要跑一次,直接读 cache 就够了,返回结果的 TTL 都比较短时效,我要改为 20 小时
loukky
2020-02-27 15:22:13 +08:00
@zro 应该是被劫持了的。另外 opendns 的 DOT 域名是什么? google 的这个有时候还是会返回国外 cdn 地址,很烦。特别是谷歌自己的域名,经常会这样。fonts.googleapis.com adservice.google.com www.googletagservices.com g.doubleclick.net 这几个域名经常会返回谷歌香港或者台湾的 ip。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/647865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX