Comments (23)
@pexcn 已更新,具体看readme。
from chinadns-ng.
有需要的话自己加上即可。之前默认加上私网地址是考虑有人会使用内网dns作为china-dns上游。不过我在readme里面也说明了,需要的自己加上即可,chnroute.ipset/chnroute6.ipset 完全取决于你们自己,具体的话看下readme就明白了。
from chinadns-ng.
这只是显示问题
from chinadns-ng.
实际用的是指定端口的dns
from chinadns-ng.
如上图,井号其实没显示出来,但是确实用的是那个指定的端口,你可以实际测试下的,而且启动chinadns-ng时会打印upstream的地址和端口号,都是没问题的。
from chinadns-ng.
看来的确是的,但是能否修复一下?
from chinadns-ng.
这个应该不是程序的问题,只是ps它们显示上的问题,无伤大雅
from chinadns-ng.
额好吧,但是 ChinaDNS 没有这个问题。。
另外,有个关于请求流程优化的建议:
- 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
- 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。
我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。
from chinadns-ng.
说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。
from chinadns-ng.
说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。
可信DNS比如8888是走proxy代理的 (目的是确保8888不被劫持), 不可能比国内DNS快.
from chinadns-ng.
额好吧,但是 ChinaDNS 没有这个问题。。
另外,有个关于请求流程优化的建议:
- 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
- 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。
我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。
但这样
说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。可信DNS比如8888是走proxy代理的 (目的是确保8888不被劫持), 不可能比国内DNS快.
对的,我觉得没有这个必要,如果
说得好像太长了,简单的流程就是:
同时向所有上游 DNS 请求,如果先返回的 IP 是国内的,即采用;否则采用可信 DNS 的。
可是现在不就是这么判断的吗。。
from chinadns-ng.
或者可以说清楚一些?
from chinadns-ng.
额好吧,但是 ChinaDNS 没有这个问题。。
另外,有个关于请求流程优化的建议:
- 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
- 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。
我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。
但我感觉没有这个必要,反正可信dns都是经过代理的。
from chinadns-ng.
额好吧,但是 ChinaDNS 没有这个问题。。
另外,有个关于请求流程优化的建议:
- 同时向上游的 DNS 请求,如果任意一个先返回的 DNS 的 IP 是国内 IP,则立即采用,同时丢弃其它结果;
- 如果先返回的不是国内的 IP,则等待另一个 DNS 返回数据,如果此时返回的 IP 如果是国内 IP,则采用,如果不是国内 IP,也采用可信 DNS 的结果。
我想这样应该可以解决可信 DNS 比国内 DNS 返回快而导致返回的结果都是境外 IP 的问题了。
我仔细看了你这个流程,实在没有看的太明白。。或许可以表述的更加清楚明白些
from chinadns-ng.
但是用深港专线 VPS 的非标准端口转发 8.8.8.8 是有时候比一些国内 DNS 延迟低的
from chinadns-ng.
@pexcn 明天或者啥时候有时间再详细研究.
from chinadns-ng.
我仔细看了你这个流程,实在没有看的太明白。。或许可以表述的更加清楚明白些
- 同时向上游的 DNS 请求,如果任意一个 DNS 返回的结果是国内 IP,则立即采用,同时丢弃其它结果。
- 如果先返回的不是国内 IP,则陆续等待其它结果,只要其中有的结果返回的是国内 IP 就采用。
- 最后才使用可信 DNS 的结果。
好像也跟现在的差不多...
@pexcn 明天或者啥时候有时间再详细研究.
嗯,好的
from chinadns-ng.
@pexcn
其实不用这么麻烦,反正要解决的问题就是:可信dns比国内dns先返回的特殊情况,对吧。这种情况确实存在,比如你说的港深专线。那么要解决这个问题,我们只需抓住一个根本:必须等到任意一个国内DNS上游返回解析结果后,再进行判断,这样就没任何问题了。流程如下:
- 当chinadns-ng从客户端收到一个dns查询请求包后,chinadns-ng会同时向所有上游dns发送此请求包,然后等待上游的dns响应包。
- 第一种情况,国内dns先返回,可信dns后返回,那么流程和之前是一样的,首先检查国内dns返回的ip地址是否在ipset中,如果在,那么最终的解析结果就是它了,其它的结果全部丢弃,将这个解析结果返回给请求客户端。那么这个请求就处理完毕了。
- 第二种情况,可信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.
3. 第二种情况,可信dns先返回,国内dns后返回;当收到可信dns的响应包后,检查发现此前暂未收到国内dns的响应包,那么chinadns-ng就等待任意一个国内上游dns返回一个响应包,当任意一个国内dns响应到来之后,判断逻辑还是同上,先检查国内dns的响应包含的ip是否在ipset中,如果在,那么最终的解析结果就是国内上游的解析结果,其它的全部丢弃,该请求处理完毕;如果国内dns解析出来的ip不在ipset中,那么我们就采用可信dns上游的响应,其它的全部丢弃,该请求处理完毕。
我觉得可以直接判断这个 IP 是不是国内的,如果是,就直接采用,如果不是则继续您说的流程,不是更快吗?
from chinadns-ng.
@pexcn 确实是的。那就收到回复包之后先判断是不是国内ip。
from chinadns-ng.
嗯,好
from chinadns-ng.
@zfl9 嗯,发现在这个 commit: 346ecf8 去掉了私网的地址,为什么要这么做呢?
from chinadns-ng.
噢噢,好,谢谢。
from chinadns-ng.
Related Issues (20)
- 新功能: 将tag:gfw的解析结果也加入ipset/nftset HOT 2
- 关于 --add-tagchn-ip --add-taggfw-ip 的两点建议 HOT 16
- 动态添加IP问题(选项没指定,语法错误) HOT 19
- 请教redsocks和iptables搭配chinadns-ng进行DNS分流的食用方法 HOT 20
- 编译时报错 HOT 3
- mirrors.aliyuncs.com 解析失败 HOT 13
- nftset flags: timeout HOT 15
- chinadns-ng和mosdns有啥区别呢 HOT 1
- ac68u上的崩溃日志 HOT 3
- 用 int 承接 ts 会导致 2038问题, 建议所有ts都用time_t 或者 long long HOT 1
- 如何对查询结果附加(append)三方DNS记录 HOT 3
- 对于tag:none的组能否添加ipset的支持 HOT 5
- 问一下, chinadns-ng如果接管127.0.0.1:53后会缓存dns结果吗? HOT 2
- 监听0.0.0.0的时候能否连带ipv6的 [::]也监听了呢? HOT 3
- DNS上游没有响应任何查询,并非死循环。 HOT 48
- 对分流有个优化思路 HOT 1
- 问一个关于ChinaDNS-NG 域名默认标签“智能dns”的逻辑问题 HOT 7
- ChinaDNS-NG 2.0 HOT 60
- 可信DNS解析结果没有加入ipset的集合中,麻烦看一下是配置哪里有问题哦 HOT 4
- chnroute.ipset 国内IP库不全 HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chinadns-ng.