Skip to content

Sniffing: domainsExcluded supports "geosite:"#5927

Merged
RPRX merged 1 commit intomainfrom
sniffing-domainsExcluded
Apr 13, 2026
Merged

Sniffing: domainsExcluded supports "geosite:"#5927
RPRX merged 1 commit intomainfrom
sniffing-domainsExcluded

Conversation

@Meo597
Copy link
Copy Markdown
Collaborator

@Meo597 Meo597 commented Apr 13, 2026

image 文档中这个提示也是挂了好几年了

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 13, 2026

这个是基于前两个 PR 的吗,另外两个可以合了吗

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

它们都是基于 #5814
我简单测了下没发现问题,理论上能合

@Fangliding
Copy link
Copy Markdown
Member

我记得以前 geoip:cn, geoip:us 这样是把域名全部提取出来编译成一个AC自动机吧 现在这样单例复用是得匹两次了?

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

高贵的 iOS 会多次匹配,CPU 时间换内存空间

@Fangliding
Copy link
Copy Markdown
Member

我觉得可以用一个环境变量控制一下

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

对于 iOS 其实别无选择
OOM 是常态
iOS 中受影响的也就 DNS 可能会多次匹配,一次查询在 200ns 左右
慢不到哪去

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 13, 2026

我的看法也是这东西多匹配一下没啥,代理一个连接就匹配那几次,主要还得是把内存占用给 iOS 家人们打下来

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

现在这么干,影响的只有 dns 模块
本来是匹配一次,现在有几个分类就要搞几次,好在这里本来就是延迟不敏感的
其它的没什么影响

早前我想的方案更激进,既节省内存,匹配速度还能翻倍提升
因为路由那边每一条规则都要吃掉 200ns
打算用 bitmask 方案,让整个路由模块都只匹配一次,拿出分类 id
到每个 rule 去 &
然而平衡不好关注的分类 >64 个时的情况,[4]uint64 & 开销需要 200ns+
然后就拉闸了

现在已经是权衡过的最优解

这波福利也是给到家人们了

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

我 rebase 一下这俩
稍等

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 13, 2026

话说那个 Breaking changes #5569 是 break 了啥

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

影响了下游
api 传给 core 的东西变了
以前是展开后的 domain[],现在是 domainrule[]

@Meo597 Meo597 force-pushed the sniffing-domainsExcluded branch from 6a4b7ef to 6802877 Compare April 13, 2026 16:53
@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 13, 2026

#643 有提到 ipsExcluded 打算另开个 PR 加一下吗,比如说可以把 tor 那些入口 IP 加进去,这样就可以同时开 sniffing 了

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

我用不到,但是好搞,安排
我还计划搞 geodata 热重载,没想好是网络下载,还是原地读文件,给点意见
另外打算弄 dns.blockDomains 这样能封锁指定域的 ech

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 13, 2026

我还计划搞 geodata 热重载,没想好是网络下载,还是原地读文件,给点意见

先弄原地读文件吧,网络下载先交给 GUI,后续再视情况出选项

@RPRX RPRX changed the title Sniffing: Support GeoSite in domainsExcluded Sniffing: domainsExcluded supports "geosite:" Apr 13, 2026
@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

okk

对了这个 PR 改变了以前配置文件中的语义
以前是 full
现在被视为 substr

文档中也提到不保证兼容
我个人觉得 substr 更合理一些

改回 full 几秒钟的事

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 13, 2026

就 substr 吧,和路由、DNS 的逻辑保持一致,话说现在是完全相同吗?

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

是的,完全相同

@RPRX RPRX merged commit f17fabf into main Apr 13, 2026
78 checks passed
@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 13, 2026

#643 有提到 ipsExcluded 打算另开个 PR 加一下吗,比如说可以把 tor 那些入口 IP 加进去,这样就可以同时开 sniffing 了

#5929

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants