Coder Social home page Coder Social logo

Comments (23)

zfl9 avatar zfl9 commented on July 19, 2024 1

@pexcn 已更新,具体看readme。

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024 1

有需要的话自己加上即可。之前默认加上私网地址是考虑有人会使用内网dns作为china-dns上游。不过我在readme里面也说明了,需要的自己加上即可,chnroute.ipset/chnroute6.ipset 完全取决于你们自己,具体的话看下readme就明白了。

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

这只是显示问题

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

实际用的是指定端口的dns

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

image
如上图,井号其实没显示出来,但是确实用的是那个指定的端口,你可以实际测试下的,而且启动chinadns-ng时会打印upstream的地址和端口号,都是没问题的。

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

看来的确是的,但是能否修复一下?

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

这个应该不是程序的问题,只是ps它们显示上的问题,无伤大雅

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

额好吧,但是 ChinaDNS 没有这个问题。。

另外,有个关于请求流程优化的建议:

  1. 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
  2. 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。

我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。

from chinadns-ng.

cattyhouse avatar cattyhouse commented on July 19, 2024

说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。

可信DNS比如8888是走proxy代理的 (目的是确保8888不被劫持), 不可能比国内DNS快.

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

额好吧,但是 ChinaDNS 没有这个问题。。

另外,有个关于请求流程优化的建议:

  1. 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
  2. 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。

我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。

但这样

说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。

可信DNS比如8888是走proxy代理的 (目的是确保8888不被劫持), 不可能比国内DNS快.

对的,我觉得没有这个必要,如果

说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。

可是现在不就是这么判断的吗。。

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

或者可以说清楚一些?

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

额好吧,但是 ChinaDNS 没有这个问题。。

另外,有个关于请求流程优化的建议:

  1. 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
  2. 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。

我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。

但我感觉没有这个必要,反正可信dns都是经过代理的。

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

额好吧,但是 ChinaDNS 没有这个问题。。

另外,有个关于请求流程优化的建议:

  1. 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
  2. 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。

我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。

我仔细看了你这个流程,实在没有看的太明白。。或许可以表述的更加清楚明白些

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

但是用深港专线 VPS 的非标准端口转发 8.8.8.8 是有时候比一些国内 DNS 延迟低的

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

@pexcn 明天或者啥时候有时间再详细研究.

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

我仔细看了你这个流程,实在没有看的太明白。。或许可以表述的更加清楚明白些

  1. 同时向上游的 DNS 请求,如果任意一个 DNS 返回的结果是国内 IP,则立即采用,同时丢弃其它结果。
  2. 如果先返回的不是国内 IP,则陆续等待其它结果,只要其中有的结果返回的是国内 IP 就采用。
  3. 最后才使用可信 DNS 的结果。

好像也跟现在的差不多...

@pexcn 明天或者啥时候有时间再详细研究.

嗯,好的

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

@pexcn
其实不用这么麻烦,反正要解决的问题就是:可信dns比国内dns先返回的特殊情况,对吧。这种情况确实存在,比如你说的港深专线。那么要解决这个问题,我们只需抓住一个根本:必须等到任意一个国内DNS上游返回解析结果后,再进行判断,这样就没任何问题了。流程如下:

  1. 当chinadns-ng从客户端收到一个dns查询请求包后,chinadns-ng会同时向所有上游dns发送此请求包,然后等待上游的dns响应包。
  2. 第一种情况,国内dns先返回,可信dns后返回,那么流程和之前是一样的,首先检查国内dns返回的ip地址是否在ipset中,如果在,那么最终的解析结果就是它了,其它的结果全部丢弃,将这个解析结果返回给请求客户端。那么这个请求就处理完毕了。
  3. 第二种情况,可信dns先返回,国内dns后返回;当收到可信dns的响应包后,检查发现此前暂未收到国内dns的响应包,那么chinadns-ng就等待任意一个国内上游dns返回一个响应包,当任意一个国内dns响应到来之后,判断逻辑还是同上,先检查国内dns的响应包含的ip是否在ipset中,如果在,那么最终的解析结果就是国内上游的解析结果,其它的全部丢弃,该请求处理完毕;如果国内dns解析出来的ip不在ipset中,那么我们就采用可信dns上游的响应,其它的全部丢弃,该请求处理完毕。

我有时间会加一个选项,默认还是“抢答模式”,也就是和之前的模式是一样的,不会出现谁等谁的情况;然后如果指定了这个选项,那么chinadns-ng就会变为“公平模式”,公平模式就是上面描述的这样,如果可信dns比国内dns先返回,那么最终的解析结果确认必须等到任意一个国内dns返回解析结果之后才能进行判断。这样就能避免你说的港深专线可信dns比国内dns先返回的情况了。

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

3. 第二种情况,可信dns先返回,国内dns后返回;当收到可信dns的响应包后,检查发现此前暂未收到国内dns的响应包,那么chinadns-ng就等待任意一个国内上游dns返回一个响应包,当任意一个国内dns响应到来之后,判断逻辑还是同上,先检查国内dns的响应包含的ip是否在ipset中,如果在,那么最终的解析结果就是国内上游的解析结果,其它的全部丢弃,该请求处理完毕;如果国内dns解析出来的ip不在ipset中,那么我们就采用可信dns上游的响应,其它的全部丢弃,该请求处理完毕。

我觉得可以直接判断这个 IP 是不是国内的,如果是,就直接采用,如果不是则继续您说的流程,不是更快吗?

from chinadns-ng.

zfl9 avatar zfl9 commented on July 19, 2024

@pexcn 确实是的。那就收到回复包之后先判断是不是国内ip。

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

嗯,好

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

@zfl9 嗯,发现在这个 commit: 346ecf8 去掉了私网的地址,为什么要这么做呢?

from chinadns-ng.

pexcn avatar pexcn commented on July 19, 2024

噢噢,好,谢谢。

from chinadns-ng.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.