luci-app-ssr-plus: Add fake-ip mode and Fix Upload yaml config cannot use external DNS resolution. - #2044
Conversation
ec92823 to
758c0cf
Compare
|
@zxlhhyccc 刚更新了,目前测下来一切正常。我用到明早,看看稳定性。 |
|
@gongdao123 烦请务必测试一下:fake-ip模式切换时,规则文件备份和恢复是否包含198.18.0.1/16的规则,因为fake-ip模式才需要198.18.0.1/16的规则,不启用fake-ip模式不需要198.18.0.1/16规则。 |
|
@zxlhhyccc 按你的要求测了,两项都通过,重复两轮结果一致。 测试方法:把每轮拆成 1、禁用 fake-ip 时,持久化文件不含 198.18 规则
2、切换到 fake-ip 时,持久化文件含 198.18 规则
备份/恢复流转以第2轮(禁用 → 启用)为例: 反方向(第3轮,启用 → 禁用)同样正确: 陈旧备份被正确丢弃而非直接恢复,
连通性八次检查中七次正常:
第1轮有一次 环境ImmortalWrt 25.12.1 r37978-cd0a06bfd3fd,mihomo v1.19.30, 另:你描述里写的 |
|
@gongdao123 请问你是按照这个commit测试的吗? |
|
是的 @zxlhhyccc |
|
@gongdao123 OK!那是不是应该可以合并了?另外,准备添加mihomo内核清理dns缓存功能,你认为有必要吗?因为添加fake-ip后,我感觉可能存在dns缓存问题导致比如:油管网页有时要过几分钟才能打开,或者关闭浏览器重新开启浏览器也会正常。 |
c3af9d9 to
730af42
Compare
|
@gongdao123 更新了依赖,没有这个依赖,mihomo的生成的配置中ech取值异常,因为mihomo的ech取值是TYPE65的base64编码,配置生成脚本使用了dig生成TYPE65的base64编码。如果直接是域名的话配置是错误的,会导致不能运行。 |
|
@zxlhhyccc 关于清理 DNS 缓存功能——建议不要加,方向是反的。 你描述的症状(油管过几分钟才能打开、重开浏览器就正常)是 fake-ip 映射丢失,不是缓存陈旧。 等客户端缓存过期才恢复(几分钟),重开浏览器则是清掉了浏览器自己的 DNS 缓存。清 mihomo 的 DNS 缓存等于主动制造这个状态。 A/B 实测(
加上之后重启前后 fake-ip 不变,旧地址依然有效: profile:
store-selected: true
store-fake-ip: true
需要的话我提个 PR。 |
|
@zxlhhyccc ECH 这个修复认同。 两点补充:
|
|
@gongdao123 你提的两个建议中:加上store-fake-ip: true是用于缓存持久化,可行也是对的。两个建议你提一个PR,我来合并,我现在都有点晕。 |
@gongdao123 |
|
@zxlhhyccc PR 提好了:zxlhhyccc#1(ECH 那条你在 你问的 cache.db 三点,正文里有详细数据,简短版: 1. 不会自动删除。 运行目录里的是软链接,真实文件在 重启实测:131072 字节 23:57 → 131072 字节 00:01,文件仍在。所以 2. 切换节点不需要删,删了有害。 fake-ip 池是「域名 ↔ 198.18.x.x」映射,与哪个节点承载流量无关;删掉会连带丢失 3. |
|
@gongdao123 在你提交前我自己改好测试了,还是存在差不多问题,只是比没加store-fake-ip: true要好一些,暂时不管了,我再提交合并PR。 |
|
@gongdao123 已重新提交并合并了PR,请测试。 |
|
@zxlhhyccc 看到 关于「还是存在差不多问题」——可能不是同一个原因。我这边独立测过:16 个全新域名(都在 gfwlist 内)首次访问,稳定有 2-3 个直接失败、重试即成功;这个比例在 DNS 上游用 UDP / TCP / DoH 三种传输方式下完全一样,与 fake-ip 映射无关。 所以 你先合并,这个我后面继续查,有结论再单独开 issue。 |
|
@gongdao123 我是怀疑dns缓存问题,所以前面我提到要添加一个清理dns缓存。 |
9e09efa to
08f5b0b
Compare
|
@zxlhhyccc 刚编译完,看到你又改了好多。新的改动是什么作用呢? |
|
@gongdao123 添加了tcp-concurrent: true和unified-delay: true,嗅探添加了force-dns-mapping: true和parse-pure-ip: true、force-domain,同时添加了嗅探cf的端口,非fake_ip模式允许嗅探。修复了上传yaml配置不能删除临时文件问题.....,目前用起来比昨日好用多了,应该是基本上正常了。 |
6f5265b to
70a7e0b
Compare
… use external DNS resolution.
|
@gongdao123 大佬,还有什么建议需要搞的吗?没有的话打算合并了。 |
|
@zxlhhyccc 合并后的版本已经刷真机测过,fake-ip 正常:服务能起、nft 之前那个首访卡顿:大概率是机场节点,不是插件我在上面说过会继续查,结论是跟插件无关。用 ms 时间戳把 卡顿完整落在选完出站之后。几个旁证:
区别只在"谁来解析这个域名",所以指向出口侧的解析器。我之前猜的两个方向(6001 条无 顺便说一声 一个建议:
|
| tunnel_forward | 成功 | 失败 |
|---|---|---|
8.8.4.4:53(默认,裸 UDP) |
11 | 1 |
1.1.1.1:53(预置项之一) |
0 | 12,均 5.001s context deadline exceeded |
tls://8.8.4.4:853 |
12 | 0,约 0.15s |
更正一处:这条评论最初写的是 8.8.4.4:53 6/12 失败,把效果量说大了。隔一段时间重跑是 11/12 成功——GFW 的投毒强度随时间漂移,我那次赶上了坏时段。裸 UDP 平时大多能用,但不稳定,且答案可能是投毒结果;1.1.1.1:53 在国内被打得最狠,基本不可用。另外这个差异只影响解析成功率,不影响页面速度(见上一节)。
你这次把 o.datatype 放开、is_valid_dns() 支持 scheme,所以填 tls://8.8.4.4:853 就能修,不用改代码,这点很好。只是下拉框预置的 11 个选项全是 :53(还包含 1.1.1.1:53 这种基本不通的),用户不手填就必然走上明文 UDP——建议默认值或预置项里加一个 :853 / :443 的。
环境:ImmortalWrt 25.12.1 r37978-cd0a06bfd3fd,mihomo v1.19.30,run_mode=router,pdnsd_enable=7,clash_url 订阅。
|
@gongdao123 我整理输的多个全部是https://的dns.... |
|
@zxlhhyccc 可能是 运营商的 关系。 |


同时修复了mihono核心情况下ech配置生成问题。