Comments (4)
顺便一提,如果是对于www.baidu.jp
这种黑白名单匹配的域名完全一样(baidu.jp
)的域名,新版本是可以按预期返回trust-dns的结果的。貌似只是上面那种,黑名单匹配结果为白名单子域名的情况才发现有问题。
from chinadns-ng.
感谢反馈,大概知道是哪段逻辑的问题了。
之前版本的 gfwlist 和 chnlist 的数据结构是分开的,所以之前版本的 --gfwlist-frist --chnlist-first 逻辑很简单,就是先匹配哪个map。
新版本的 gfwlist 和 chnlist 放到同一个数据结构了(为了减少匹配次数,减少内存碎片),所以处理哪个列表优先的逻辑发生了改变:--gfwlist-frist --chnlist-first 变为先加载哪个list到数据结构中,因此对于同一级别的域名(label数量相同),肯定是先加载的优先级高。
换句话说,gfw优先/chn优先 的粒度 从 列表 变为 同级别域名
对于这样一个域名:a.b.c.d,则匹配逻辑如下:
- 检查 d 是否存在,存在则结束匹配
- 检查 c.d 是否存在,存在则结束匹配
- 检查 b.c.d 是否存在,存在则结束匹配
- 检查 a.b.c.d 是否存在,存在则结束匹配
代入你说的情况:
tw.iqiyi.com在黑名单,iqiyi.com在白名单。
在匹配 iqiyi.com 时,会被白名单命中,所以被判定为 tag:chn,因此走 china 上游
如果调用一下匹配顺序,应该就可以解决此问题,也就是改为:
- 检查 a.b.c.d 是否存在,存在则结束匹配
- 检查 b.c.d 是否存在,存在则结束匹配
- 检查 c.d 是否存在,存在则结束匹配
- 检查 d 是否存在,存在则结束匹配
对于 使用同一个父域名,然后通过不同子域来区分国家/地区 的情况,应该是可以解决问题的,比如上面说的 iqiyi.com;google这一类恰好相反,他们是通过不同的顶级域来区分 国家/地区,比如 google.com、google.de、google.com.hk、google.co.jp 等。
from chinadns-ng.
更新到最新版本试试。
from chinadns-ng.
感谢作者!!!刚刚测试了下最新版本,的确解决了上述问题。
而且我认为新的匹配逻辑比之前v1.0版本更加合理:相当于对于某域名和其子域名分别在黑白名单的情况下,子域名优先,无论黑白名单哪个优先。举例来说,之前v1.0版,默认设置黑名单优先,其中包括google.com
,那么白名单中的dl.google.com
就无法生效。我之前的做法是把这些域名加到dnsmasq的规则里,优先级高于ChinaDNS;在新版本下,这一步就不需要了。优先级的选项现在只对黑白名单中完全重合的域名有用了,而这种情况几乎屈指可数(比如baidu.jp
),没啥实际的影响。
再次感谢🙏🙏🙏
from chinadns-ng.
Related Issues (20)
- 求助:如何不使用ipset,只使用域名分流功能 HOT 21
- chinadns-ng 崩溃的问题 HOT 4
- CNAME 导致部分 AAAA 过滤失效(待商讨:使用`-d chn_A/gfw_A`方案,还是移除`CNAME`记录?) HOT 42
- 防火墙拦截 HOT 1
- 对 `-a/--add-tagchn-ip` 选项的优化 HOT 5
- [main.c:167 handle_local_packet] failed to send query to 119.28.28.28#53: (38) Function not implemented HOT 7
- Openwrt系统日志中存在大量upstream dns server reply timeout HOT 11
- Openwrt中运行一段时间后,chinadns-ng会出现大概率返回超时的情况 HOT 54
- 新功能: 将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
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.