Skip to content

Instantly share code, notes, and snippets.

@pexcn
Last active February 6, 2023 03:03
Show Gist options
  • Select an option

  • Save pexcn/5af609563758a94fa1e603c117671efc to your computer and use it in GitHub Desktop.

Select an option

Save pexcn/5af609563758a94fa1e603c117671efc to your computer and use it in GitHub Desktop.
记录一下 ChinaDNS 的工作原理和一些 DNS 相关的想法

ChinaDNS 原理

ChinaDNS 的上游 DNS 分为 国内 DNS可信 DNS

工作原理

  1. ChinaDNS 会同时向上游的 DNS 发送请求。
  2. 如果 可信 DNS 先返回,则直接采用 可信 DNS 的结果。
  3. 如果 国内 DNS 先返回,分两种情况:如果返回的结果是国内的 IP, 则采用;否则丢弃并转而采用 可信 DNS 的结果。

结论

  1. 要确保 国内 DNS 的查询速度要比 可信 DNS 快,才能达到线路优化的效果。
  2. 不能在 可信 DNS 下做缓存,否则 可信 DNS 会一直先比 国内 DNS 先返回,达不到线路优化的效果。

参考

@doublesixwings
Copy link

doublesixwings commented Jul 28, 2018

用了很长时间但一直没弄明白chinadns的控制流程,现在终于明白了,非常感谢分享心得!但为什么可信dns缓存就达不到线路优化呢?

@pexcn
Copy link
Author

pexcn commented Mar 7, 2019

@doublesixwings 很抱歉,github gist 没有提醒,现在才看到。

用了很长时间但一直没弄明白chinadns的控制流程,现在终于明白了,非常感谢分享心得!但为什么可信dns缓存就达不到线路优化呢?

可能是可信DNS一般是绑定本地 127.0.0.1 的,返回的速度始终是最快的

@pexcn
Copy link
Author

pexcn commented Aug 13, 2019

Note: Moved to content.

@ajaxhe
Copy link

ajaxhe commented Feb 4, 2020

可信 DNS 在链路上是不是也会存在被 GFW 污染的可能?

@pexcn
Copy link
Author

pexcn commented Feb 4, 2020

可信 DNS 在链路上是不是也会存在被 GFW 污染的可能?

不会,中国大陆以外的地方不存在 GFW. (此处指使用 ss-tunnel 之类的方式转发)

@xspeed1989
Copy link

xspeed1989 commented Sep 13, 2020

@pexcn 我发现一个有趣的现象
我上游服务器 192.168.1.1,127.0.0.1:12345
第一个DNS是我光猫的地址
第二个转发通过ss转发到谷歌的
用浏览器访问淘宝的是后跳转到了world.taobao.com

@pexcn
Copy link
Author

pexcn commented Sep 14, 2020

@pexcn 我发现一个有趣的现象
我上游服务器 192.168.1.1,127.0.0.1:12345
第一个DNS是我光猫的地址
第二个转发通过ss转发到谷歌的
用浏览器访问淘宝的是后跳转到了world.taobao.com

用的是什么 DNS 工具?看看日志?

@xspeed1989
Copy link

@pexcn 我发现一个有趣的现象
我上游服务器 192.168.1.1,127.0.0.1:12345
第一个DNS是我光猫的地址
第二个转发通过ss转发到谷歌的
用浏览器访问淘宝的是后跳转到了world.taobao.com

用的是什么 DNS 工具?看看日志?

CHINA-DNS 我回去试试ng 康康能正常不

@xspeed1989
Copy link

xspeed1989 commented Sep 15, 2020

@pexcn
是因为我ss对我这台机器开了全局导致的

@pexcn
Copy link
Author

pexcn commented Oct 6, 2022

DNS Flow (ver. 2022 v2) [DEPRECATED]

已弃用,仅作记录

Users -> AdGuard Home (DNS拦截/DNS重写...) -> dnsmasq (提供PTR/Hosts/DHCP...) -> chinadns-ng (DNS分流和线路优化)

                     -> smartdns (测速/dns prefetch/cache...) -> 223.5.5.5/119.29.29.29 -> 强国
chinadns-ng 方案一 ->
                     -> smartdns (测速/dns prefetch/cache...) -> 127.0.0.1:5300 (通过sstunnel转发可信DNS) -> 8.8.8.8 -> 🌐


                     -> smartdns (测速/dns prefetch/cache...) -> 223.5.5.5/119.29.29.29 -> 强国
chinadns-ng 方案二 ->
                     -> smartdns (测速/dns prefetch/cache...) -> 8.8.8.8 (将通过transproxy的UDP代理出去) -> 🌐

@pexcn
Copy link
Author

pexcn commented Feb 5, 2023

DNS Flow (ver. 2023 v1)

仅作记录

[User] -> AdGuard Home (DNS Block/DNS Rewrite) -> dnsmasq (PTR?) -> chinadns-ng (Non-poisoning DNS)

                      -> 223.5.5.5,119.29.29.29 -> [强国]
chinadns-ng plan 1 ->
                      -> 127.0.0.1:5300 (forwarded by sstunnel) -> 8.8.8.8 -> [🌐]


                      -> 223.5.5.5,119.29.29.29 -> [强国]
chinadns-ng plan 2 ->
                      -> 8.8.8.8 (via transproxy udp tproxy) -> [🌐]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment