Skip to content

Direct/Freedom outbound: Add finalRules (matches network, port and ip, then action) with default safe policies#6027

Merged
RPRX merged 16 commits into
mainfrom
freedom-ipsallowed
May 2, 2026
Merged

Direct/Freedom outbound: Add finalRules (matches network, port and ip, then action) with default safe policies#6027
RPRX merged 16 commits into
mainfrom
freedom-ipsallowed

Conversation

@Meo597
Copy link
Copy Markdown
Collaborator

@Meo597 Meo597 commented Apr 27, 2026

Close #6018

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

ipsBlocked 直接炸掉就行了,甚至没正式 release,另外写个配置 example

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

还有 sockopt 有个 domainStrategy,这个兼顾到了吗

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

ipsBlocked 直接炸掉就行了,甚至没正式 release,另外写个配置 example

不能辜负家人们

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

还有 sockopt 有个 domainStrategy,这个兼顾到了吗

现在会检查两次,漏不掉,最多发个包出去

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

不是,兼容 ipsBlocked 的话会导致教程流传 [] 这个写法,导致 #6018 (comment)

现在这个是在两个 domainStrategy 之后的吧,有兼容 UDP domain 吗

Comment thread proxy/freedom/freedom.go Outdated
@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

现在这个是在两个 domainStrategy 之后的吧,有兼容 UDP domain 吗

sockopt 的 freedom 看不见,非得 dial 之后漏了包再封

udp 还是逐包检查的,解析完了之后看 IP 封

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

也就是说如果 freedom 的策略是 asis,对于 TCP 还是会 dial 出去?

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

ipsBlocked 加一个“存在即报错”,errors.PrintRemoved

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

是的,如果直接解析的话会破坏老哥的 happyeyeballs 啥的吧
无解

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

这个问题以后看看有没有好的办法解决,因为这个东西用来 block cn ip 是绝杀

Comment thread proxy/freedom/freedom.go Outdated
@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

漏点就漏点吧,反正本来 cn ip 库也不太准
而且他们的 block cn 规则也没有尽可能地用 dns 试探 cn ip
墙看不到镜像流量,但是互联网公司还是看得到

以及我记得老哥的各种 strategy 之间还互相冲突

Comment thread infra/conf/freedom.go Outdated
@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

如果不是不一定自带 geoip,我都想把 cn ip 给默认 block 了,不过其它国家可能有访问 cn 的需求

理论上可以动态判断下有没有带 geoip 吧,顺便默认 block ru ir ip,以后再说吧

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

是可以判断,build 失败会 err
但是有留子拿来回国的

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

拿来回国基本得靠反代吧?国内 VPS 跑 Xray 不会被 warn 吗,还是说 IPv6 直接连回家?Anyway 反代已经默认 block all 了

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

家里放个软路由拿来解锁爱奇艺啥的

一些地区公网还是比较好要的,直接 reality 偷运营商比如 189.cn 不会被要求备案
方便手机直接解锁流媒体,否则还得找 vps 中转

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

总之这件事得调研一下,可能不太好实行,比如导致拿 Xray 服务端时默认连不上俄罗斯网站,但话说回来墙可能有联动机制

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

家里放个软路由拿来解锁爱奇艺啥的

一些地区公网还是比较好要的,直接 reality 偷运营商比如 189.cn 不会被要求备案 方便手机直接解锁流媒体,否则还得找 vps 中转

感觉你有点过于清楚了吧,该不会。。。

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

充不起爱壹帆会员,就只能看爱奇艺了

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

我想到了,伊朗老哥的那个 happyEyeballs 主要是客户端用的,所以可以判定为服务端时直接无视 sockopt domainStrategy,反正 freedom 它自己就有 domainStrategy,要设置的话可以在这里设置,服务端并不需要 sockopt 中影响解析的部分

写一下吧,那么说到不同 domain 的不同 strategy。。。交给路由模块

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented Apr 27, 2026

那本来希望交给 os dns 解析的现在走 core 会不会出问题

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 27, 2026

会有啥问题,你看 net.Dial 的代码是咋实现的,用一样的 lookupIP 函数就行

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

是的,不过这种 Object 也是硬造出来的概念
特别是小白,或许费点事搞个图形化的他们就懂了

@Fangliding
Copy link
Copy Markdown
Member

Fangliding commented May 7, 2026

主要是parent可能很长什么的 然后child又比较短显得头重脚轻 要是parent只写个字段名其他啥也没有没link指不到地方最后还是会疑惑这东西是哪来的 还有这特效看的我眼睛不舒服 以及该眼瞎的还是会眼瞎(
软件涉及大型配置文件连我自己平时弄都是从模板看起的 没指望能从文档搓起来 所以我一直是解释好字段就行了

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

那就暂时无解非得大动整个文档才行了,得把 > 都换成标准化的 ##... 才能指向过去,搁置吧暂时

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

image 试了下其实还好

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

https://xtls.github.io/config/transport.html 已经长到了令人发指的程度了。。。

感觉需要族谱单开一页了

@Fangliding
Copy link
Copy Markdown
Member

善用ctrl+f吧.

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

transport 感觉应该把每个 object 都挪走单开一页会更好

@RPRX
Copy link
Copy Markdown
Member

RPRX commented May 7, 2026

@Meo597 出入站加个 protocol 吧,另外 fakedns 貌似你忘改了

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

@Meo597 出入站加个 protocol 吧

没理解

另外 fakedns 貌似你忘改了

我看看

现在文档看起来舒服多了,至少能轻松知道这玩意大概在什么位置出现

就差 transport 拆一下了
当初我自己配 reality 的时候就半天翻不到,当时搜索还不好用
当时没搞懂底层传输和传输方式的区别,为啥有些东西一会儿族谱单开一页,一会儿就塞一起

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

出入站加个 protocol 吧

哦,明白了

@RPRX
Copy link
Copy Markdown
Member

RPRX commented May 7, 2026

transport 那一页是要拆一下,这文档整得 finalmask 很没存在感,我想一下咋命名

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

肯定是都要拆到 transports 文件夹里的,它们都属于 streamsettings

@RPRX
Copy link
Copy Markdown
Member

RPRX commented May 7, 2026

“底层传输”更名“传输方式”

下面新开一栏“传输设置”,文件夹名 streamSettings,四项顺序 REALITY、TLS、Finalmask、Sockopt

这两栏示例都写 "*bounds" 而不是 "outbound"REALITY 不适用于 QUIC 那段给删了

原有“反向代理”和“传输方式”的页面从目录中摘掉,后者内容改为指向 transports 和 streamSettings 文件夹

以后 Finalmask 的重要项目可能还会再拆出来放到同级,毕竟我还打算让 Finalmask 吃掉一些 Sockopt 所以没毛病

@RPRX
Copy link
Copy Markdown
Member

RPRX commented May 7, 2026

REALITY、TLS

安全层也就这俩了,其它都是 Finalmask 沾边的东西,比如 XICMP、XDNS、quicParams、header-custom、fragment、noise

其实一开始想让 Finalmask 单独成一层,但是里面琐碎的东西不太好放,目前就“基础配置”不是纯导航

且 REALITY、TLS、Sockopt 这三项又不知道该放哪了,先按上一条说的改一下吧

@RPRX
Copy link
Copy Markdown
Member

RPRX commented May 7, 2026

还有这特效看的我眼睛不舒服

感觉根本没必要加特效,特效去掉吧

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

特效主要是为了说明只有这里才是重点,比如 fakedns 部分

在出入站和传输层还隐含了模糊的地方你都得去其它页面找参数的意思,比较直观

要不我再调一下模糊等级?

@RPRX
Copy link
Copy Markdown
Member

RPRX commented May 7, 2026

模糊感确实会让人感觉不舒服,要不你看 json 左边能不能加竖杠啥的,起到圈出重点的作用

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

  • 高糊 95% 这样子,鼠标经过变清晰
  • 平时隐藏,鼠标经过变大展开
  • 有个加减号,平时收起,鼠标点击才展开,像 GitHub 那样

做这个只能 codex 启动了

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

给点意见,这两种行吗?

A. 魔改的,把模糊去掉了,透明度改为 0.382
image
image


B. VitePress 原生的代码高亮
image
image

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

这两栏示例都写 "*bounds" 而不是 "outbound"

会引起歧义的,一定有大聪明认为 "*bounds" 自适应

这样怎么样?
image

@Fangliding
Copy link
Copy Markdown
Member

Fangliding commented May 7, 2026

右边打个注释 // or "outbounds" 不行么

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

右边打个注释 // or "outbounds" 不行么

本来就是这样的,感觉挺好。R 主席不让

上面那俩特效行吗

@Fangliding
Copy link
Copy Markdown
Member

我觉得虚化好一点 不过就是正文不顶左边的格了 但是也没啥办法

@Fangliding
Copy link
Copy Markdown
Member

我觉得虚化好一点 不过就是正文不顶左边的格了 但是也没啥办法

还有这种东西最好放在分支里改完了再推主线里 还有feature也是 之前也是这个finalrules写早了发都没发布然后有人问怎么写了不生效

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

ok

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 7, 2026

原来还有个全局的 transport 然后被扬了
我说文档结构为什么这么奇怪,以及为啥有个 transport.json

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 8, 2026

“底层传输”更名“传输方式”

ok

下面新开一栏“传输设置”,文件夹名 streamSettings,四项顺序 REALITY、TLS、Finalmask、Sockopt

这两栏示例都写 "*bounds" 而不是 "outbound"REALITY 不适用于 QUIC 那段给删了

原有“反向代理”和“传输方式”的页面从目录中摘掉,后者内容改为指向 transports 和 streamSettings 文件夹

以后 Finalmask 的重要项目可能还会再拆出来放到同级,毕竟我还打算让 Finalmask 吃掉一些 Sockopt 所以没毛病

反向代理扬掉了,写了一个 vless 版的

但是 transport 这玩意不好摘,因为像 outbound inbound 一样都有个总纲在顶上,指向下面的页
而且它们在配置文件那就属于 streamSettings 硬拆的话用户会疑惑
拆的时候还发现介绍没法写了,删掉 transport 页的话也没法介绍 streamSettings.network 啥的了
因此先暂时糊到一个文件夹了

@Meo597
Copy link
Copy Markdown
Collaborator Author

Meo597 commented May 10, 2026

文档全部完事了

部分俄语页面被重新机翻 @iambabyninja
首页内容太旧了也没人维护,我看着改了下 @Fangliding

Install 页好多一键脚本五六年没更了给清掉了
这的 README 也有

Comment thread app/dns/dns_test.go
{
ProxySettings: serial.ToTypedMessage(&freedom.Config{
IpsBlocked: &freedom.IPRules{},
FinalRules: []*freedom.FinalRuleConfig{{Action: freedom.RuleAction_Allow}},
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

درود

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.

routing分流问题

8 participants