Direct/Freedom outbound: Add blockDelay to finalRules (30~90s by default)#6060
Conversation
|
delay 现在是全局的,要不要做到每个 rule 不过好像没啥意义 |
|
加给 rule,命中哪条就执行哪个,对于 UDP dial 时直接执行它就不会导致 #6058 (comment) ,逐包过滤导致 drop 时不用管 没写的话默认值 30-90s,判断第一条规则为 allow 那里不用管它,文档更新一下 |
|
#6057 也改一下,直接 commit 到那个分支就行 |
|
#6057 只改 UDP,暂时不加选项 |
|
#6057 他现在是没包过会儿再掐,我是给时间范围 |
|
#6057 改成随机 30-90s 就行 |
blockDelayblockDelay for finalRules
|
@Meo597 咋感觉写得这么怪呢,你这个 timer 确定起作用了吗,先别包装成一个函数了吧,逻辑简单些 |
|
打过日志看的,生效的 |
|
buf.Copy 会阻塞,所以到不了 timer.close |
|
哦,对,不行这里得改一下 UDP dial 你要解析了封一段时间 |
|
|
|
现在的行为是:
|
|
时间范围
|
|
上面说着说着又漏了。。UDP 断言失败也会漏过滤 |
让你改 dial 那里覆盖到 UDP 就是因为第一个包的 dest 会作为默认写地址(若 b.UDP==nil),所以不会漏,读的都有 b.UDP 外部自定义 dialer 会导致 UDP 走另一套 writer/reader,可能会漏,这个能套一层但里面可能还有 domain 就不好搞,但只有客户端拿 Xray 当 lib 时可能有自定义 dialer,服务端是直接跑 Xray-core 的,所以不会漏 |
|
哦我光以为你是为了防止快速关闭的特征 |
|
之前的 UDP 哪有“快速关闭”,
|
blockDelay for finalRulesblockDelay to finalRules (30~90s by default)
|
tcp 啊,没有 mux 被关了客户端会连续多 dial 几次 现在的 ai 上下文一长就完蛋,写的东西味道不对,再等几年感觉有戏 |
讨论的不是 UDP 吗,这个 PR 前没在 dial 拦截,只靠 b.UDP 静默 drop,
TCP 的话肯定也在意啊, |
|
目前 blackhole 出站的 tcp 也是立马关的要不要加选项 |
|
Blackhole 的 TCP 先不加 delay,因为我还要观察一下新的行为会不会导致什么问题(比如应用“卡住”),没问题的话再加 Blackhole 的 UDP 加 delay 没问题,毕竟 UDP 本来就不一定有回复或“关闭通知”,而 TCP 的话有没有断,应用是能感知到的 |
|
现在 delay 更像是 duration |
|
现在的情况属于是应用觉得自己 TCP dial 成功了、数据也发出去了、TCP 也没断,应用可能就一直等待而不会 fast fallback 下个版本给 VLESS 的响应 pb 加个“拒绝通知”吧,客户端存一下,遇到应用再发包给相同的目标直接本地 fast reject/drop 了 |
|
这样假如某些应用没做心跳的话行为也正常了 |
|
|
|
|
#6058 (comment)