2dust / v2rayN

A GUI client for Windows and Linux, support Xray core and others
https://1.2345345.xyz
GNU General Public License v3.0
70.73k stars 11.65k forks source link

sing-box core 非自定义配置测试 #3753

Closed 2dust closed 1 year ago

2dust commented 1 year ago

所有v2ray core支持的协议,非自定义配置现在可以生成 sing-box 的配置文件了

测试方式

注意

chika0801 commented 1 year ago

测试了 VLESS-XTLS-uTLS-REALITY 组合是正常的。看了生成的config.json里面的路由部分也没问题(自己的设置内容)。

有一个tip,sing-box的uuid不能填abc自动映射成uuid。我用 https://xray-uuid.ducksoft.site/ 将字符转成uuid。怕有初级用户不知道这个。(要不你在GUI中集成个自动转换成uuid生成到config.json里面?)

"level": "debug", 生成的配置是debug,我的设置中是Warning(sing-box是没这等级)

还有什么要测的?真有用sing-box客户端还要用的v2rayN生成配置的人目前不多吧。。。维护2边的配置GUI生成又多了一些工作量。

不如叫 sxxxboxN,换个名又是一个程序了

2dust commented 1 year ago

uuid这个是用户行为,让他们自己调整对就行 log level确实没有完全对应,这个改进下 Vmess的也可以测试下

2dust commented 1 year ago

在开发sing-box的配置过程中,发现sing-box的普通配置比v2ray要简单很多 如果sing-box一直维护,v2rayN计划跟进下去,把hy等协议也做出GUI配置出来

chika0801 commented 1 year ago

那建议把默认core和默认生成以sing-box为核心的配置得了,现在如果服务端用xray-core,客户端sing-box,到目前也没测到有什么重大兼容问题。你也维护一套逻辑也省事。

2dust commented 1 year ago

那建议把默认core和默认生成以sing-box为核心的配置得了,现在如果服务端用xray-core,客户端sing-box,到目前也没测到有什么重大兼容问题。你也维护一套逻辑也省事。

目前sing-box 还没有v2ray知名,还有也不知道开发者是否能一直坚持下去 你先帮忙测试一轮,如果已有的这些协议都没有问题,发布出来让更多人使用,修复几轮先

2dust commented 1 year ago

v2ray系的倒是可以考虑只保留xray,其他分支基本不活跃了

being123321 commented 1 year ago

能ping的通,无法使用,是不是dns设置的问题?

2dust commented 1 year ago

能ping的通,无法使用,是不是dns设置的问题?

提问需要提供详细的内容,你这样问不好帮

being123321 commented 1 year ago

能ping的通,无法使用,是不是dns设置的问题?

提问需要提供详细的内容,你这样问不好帮

套了cdn就不能,直连就可以

chika0801 commented 1 year ago

能ping的通,无法使用,是不是dns设置的问题?

提问需要提供详细的内容,你这样问不好帮

套了cdn就不能,直连就可以

你这问题,要你提供你服务端配置,客户端如果是在n里填的节点信息,截图怎么填的,附上生成的config.json内容才能继续分析,不然靠自己研究了。

chika0801 commented 1 year ago

发现的细节

  1. "level": 设置里的等级没对应的问题,你前面已经知晓了。现在是用none,生成的配置是正确的(关闭日志了)。

  2. 开启MUX多路复用 对应它那边的 https://sing-box.sagernet.org/configuration/shared/multiplex/ 这选项目前是选上后对生成的配置没改变。这参数比较麻烦,普通用户也不知道对应到哪些协议支持能用,也建议你先不做好点。

  3. 开启流量嗅探 开和关,对应的生成的配置是对的。"sniff":+"sniff_override_destination": 同时true或同时false。

  4. RouteOnly 打开后,生成的配置中应该把 "sniff_override_destination": 值应是false。现在打开,值是true。建议做成当开启流量嗅探选中,这个选项才是可选状态的逻辑。

  5. 开启UDP,开和关,对应生成的参数没变化 ,你没做吧

  6. 为局域网开新的端口 这选项也是对配置没变化 ,还没做吧

chika0801 commented 1 year ago

测试了下面4种协议组合生成的配置,用眼看检查了逻辑OK,服务端用sing-box开对应配置测试。只有gRPC那个通不了。不是配置原因(以前用gRPC是通得了的,前段时间没用,不知道singbox哪版本更新现在是不通了。我客户端服务端测试用的版本是1.2.9)

VLESS-XTLS-Vision

VLESS-XTLS-uTLS-REALITY

VLESS-gRPC-uTLS-REALITY

VLESS-H2-uTLS-REALITY

chika0801 commented 1 year ago

如果用服务端换 Xray,开gRPC,客户端用sing-box也不通,但换成Xray-core通。

chika0801 commented 1 year ago

还有一个建议,添加troan配置中,你在传输层安全那里,目前还是只有空和TLS 2个选项,考虑加个REALITY不?

chika0801 commented 1 year ago

PS做配置生成器GUI真是吃力不讨好,众口难调的事,佩服你的毅力。。。

chika0801 commented 1 year ago

VMESS的各种组合,我主要是自己不用很久了,也就没去学sing-box对应的配置组合参数,不测了

chika0801 commented 1 year ago

屏幕截图 2023-04-25 114735 想起这个也是一直想发ISS建议的,可以把sagernet core给删了吧

chika0801 commented 1 year ago

它的geoip geosite文件夹,你没在配置文件中指定路径,就会默认放在了与配置文件一样的文件夹里,现在是 v2rayN\guiConfigs 文件夹。

不写下面的,默认下载路径是v2fly那边的用“标准版”来形容交流的,不是加强版。你考虑下怎么做优雅点了。记得xray下载的Geo文件你是默认改成下的加强版的吧。

    "geoip": {
        "download_url": "https://github.com/soffchen/sing-geoip/releases/latest/download/geoip.db"
    },
    "geosite": {
        "download_url": "https://github.com/soffchen/sing-geosite/releases/latest/download/geosite.db"
    },
chika0801 commented 1 year ago

看了下路由设置菜单里面的 域名解析策略和域名匹配算法选项也是没给配置生效的。sing-box里没有xray这边的ipifnonmatch类的逻辑,

比如用户是http代理环境,它路由设置生成的配置如下,进路由部分是域名,最后的geoip cn直连规则是不会命中的。我是在它配置的入站加的 "domain_strategy": "ipv4_only", 这参数,域名从入站部分进来,用DNS,没写就是系统的,解析得到IP。我一直试出sb的逻辑是,进路由部分匹配,就同时有了IP和域名2个条件开始从上到下的匹配。

所以你考虑下万一用户在路由设置里选了Xray的比如ipifnonmatch选项,要不你就在对应sb配置的入站加 "domain_strategy": "ipv4_only", 来实现最后的 geoip cn 直连 确保能生效。

"rules": [
  {
    "outbound": "block",
    "geosite": [
      "category-ads-all"
    ]
  },
  {
    "outbound": "direct",
    "geosite": [
      "category-games@cn"
    ]
  },
  {
    "outbound": "proxy",
    "geosite": [
      "geolocation-!cn"
    ]
  },
  {
    "outbound": "direct",
    "geosite": [
      "cn",
      "private"
    ]
  },
  {
    "outbound": "direct",
    "geoip": [
      "cn",
      "private"
    ]
  }
chika0801 commented 1 year ago

想试试DNS,初试了几次怎么填都确定不了,没试了。做这个选项框也是个吃力不讨好的事,要不你考虑不做成这种定义填,你给几种预设的形式,反正要用高级功能的,你当都是高级用户得了。

屏幕截图 2023-04-25 114735

2222

sdeyang commented 1 year ago

想试试DNS,初试了几次怎么填都确定不了,没试了。做这个选项框也是个吃力不讨好的事,要不你考虑不做成这种定义填,你给几种预设的形式,反正要用高级功能的,你当都是高级用户得了。

屏幕截图 2023-04-25 114735

2222

我给sb配置里的dns项全复制粘贴过来了,确认成功了 image

image

chika0801 commented 1 year ago

@sdeyang 谢谢,看了你的图懂了从哪里开始粘贴了

2dust commented 1 year ago

"level": 设置里的等级没对应的问题,你前面已经知晓了。现在是用none,生成的配置是正确的(关闭日志了)。

此问题已经在处理

开启MUX多路复用 对应它那边的 https://sing-box.sagernet.org/configuration/shared/multiplex/ 这选项目前是选上后对生成的配置没改变。这参数比较麻烦,普通用户也不知道对应到哪些协议支持能用,也建议你先不做好点。

Mux按照sing-box文档,vmess,ss,trojan做了生成

开启流量嗅探 开和关,对应的生成的配置是对的。"sniff":+"sniff_override_destination": 同时true或同时false。

这条过了

RouteOnly 打开后,生成的配置中应该把 "sniff_override_destination": 值应是false。现在打开,值是true。建议做成当开启流量嗅探选中,这个选项才是可选状态的逻辑。

先按你的建议生成

开启UDP,开和关,对应生成的参数没变化 ,你没做吧

这个应该影响哪个属性,你提下或再去看看文档

为局域网开新的端口 这选项也是对配置没变化 ,还没做吧

这个确实漏掉了,等处理

如果用服务端换 Xray,开gRPC,客户端用sing-box也不通,但换成Xray-core通。

这个不好办,你能发现产生的配置哪里有问题?

还有一个建议,添加troan配置中,你在传输层安全那里,目前还是只有空和TLS 2个选项,考虑加个REALITY不?

可以加,不过xray-core不支持吧?

VMESS的各种组合,我主要是自己不用很久了,也就没去学sing-box对应的配置组合参数,不测了

可以不测,放出来给其他用户再反馈

想起这个也是一直想发ISS建议的,可以把sagernet core给删了吧

你可发一个,看看是否有人反馈

2dust commented 1 year ago

@sdeyang @chika0801 v2ray 和sing-box的dns对象,自定义的内容就是dns属性值,给做一个例子出来吧

{
    "servers": []
     .......
}
2dust commented 1 year ago

它的geoip geosite文件夹,你没在配置文件中指定路径,就会默认放在了与配置文件一样的文件夹里,现在是 v2rayN\guiConfigs 文件夹。

不写下面的,默认下载路径是v2fly那边的用“标准版”来形容交流的,不是加强版。你考虑下怎么做优雅点了。记得xray下载的Geo文件你是默认改成下的加强版的吧。

    "geoip": {
        "download_url": "https://github.com/soffchen/sing-geoip/releases/latest/download/geoip.db"
    },
    "geosite": {
        "download_url": "https://github.com/soffchen/sing-geosite/releases/latest/download/geosite.db"
    },

geo文件暂时就先默认在guiConfigs 文件夹下面,发布的时候直接使用这个加强版

2dust commented 1 year ago

看了下路由设置菜单里面的 域名解析策略和域名匹配算法选项也是没给配置生效的。sing-box里没有xray这边的ipifnonmatch类的逻辑,

比如用户是http代理环境,它路由设置生成的配置如下,进路由部分是域名,最后的geoip cn直连规则是不会命中的。我是在它配置的入站加的 "domain_strategy": "ipv4_only", 这参数,域名从入站部分进来,用DNS,没写就是系统的,解析得到IP。我一直试出sb的逻辑是,进路由部分匹配,就同时有了IP和域名2个条件开始从上到下的匹配。

所以你考虑下万一用户在路由设置里选了Xray的比如ipifnonmatch选项,要不你就在对应sb配置的入站加 "domain_strategy": "ipv4_only", 来实现最后的 geoip cn 直连 确保能生效。

当ipifnonmatch时,inbound加入"domain_strategy": "ipv4_only" 否则inbound去除 domain_strategy 选项 是这个意思吗? 如果加入"domain_strategy": "ipv4_only",是否要一定配置DNS?

chika0801 commented 1 year ago

当ipifnonmatch时,inbound加入 "domain_strategy": "ipv4_only" 否则inbound去除 domain_strategy 选项 是这个意思吗?

我是这样理解的:sing-box文档没有写清楚这部分,是我自己试自己理解的它的逻辑如上面说的过程。

你如果想继续用原菜单兼容 sing-box的逻辑,我考虑了下真不好做啊。用户又不懂。用户在添加节点时,是右上角那儿选是xray还是sing-box。你现在控制的选项逻辑在路由设置菜单的,这儿你这样吧。

域名解析策略 Xray/v2fly 选项 给 Asis ipifnon... ipxxxx 那3个。在 域名解析策略 Xray/V2fly 下方加一行叫 域名解析策略 sing-box,选项给 https://sing-box.sagernet.org/zh/configuration/shared/listen/#domain_strategy 里面的 prefer_ipv4 prefer_ipv6 ipv4_only ipv6_only,(或者精简成prefer_ipv4 prefer_ipv6也行)外加一个留空选项,选了留空,就不生成这个参数。(解释下不生成按它文档意思是,接收到的域名,只有域名作为条件进路由规则 ,遇到IP规则 自然不会生效,环境是按httpscoks代理讨论,不讨论高级用户用透明代理环境哈)

2222

如果加入 "domain_strategy": "ipv4_only",是否要一定配置DNS?

比如用了这个,意思是httpscoks请求进来,没写DNS部分,就用系统DNS解析得到域名的IP。进路由模块,匹配条件是域名和IP2个,还是从上到下(我一直是样理解sing-box的逻辑的,我不会看它代码哈)

chika0801 commented 1 year ago

geo文件暂时就先默认在guiConfigs 文件夹下面,发布的时候直接使用这个加强版

好的!

chika0801 commented 1 year ago

开启UDP,开和关,对应生成的参数没变化 ,你没做吧

这个应该影响哪个属性,你提下或再去看看文档

要把这个开关做成sing-box里的选项我看看它文档是。不好意思,我看了它 https://sing-box.sagernet.org/zh/configuration/shared/listen/

他的监听比如用socks入站时,没做UDP开关,我错了你不用管我这个建议。

chika0801 commented 1 year ago

如果用服务端换 Xray,开gRPC,客户端用sing-box也不通,但换成Xray-core通。 这个不好办,你能发现产生的配置哪里有问题?

grpc我看了你生成的sing-box配置逻辑都没有问题。不通不是你的问题。我有空再试试什么原因。你不用管。

chika0801 commented 1 year ago

还有一个建议,添加troan配置中,你在传输层安全那里,目前还是只有空和TLS 2个选项,考虑加个REALITY不? 可以加,不过xray-core不支持吧?

如果是用 xray-core 协议用trojan 加 reality是跑得起来的,trojan配置里反正不能用vision流控。只是没人这样跑。

我当时提这个是想到用 sing-box用客户端时 跑 trojan+reality+sing-box才加的 smux/h2mux+padding那套,不过应该一开始没多少人用。你不想管添加trojan的菜单,不弄也行,不然添加工作量也没人用。

chika0801 commented 1 year ago

另外不是经常有人在你ISS区发sing-box开tun遇到内存 CPU突然增加类似的问题

我这几天观察到这现象可能原因:

1 主要发生在用了REALITY的组合。 2 用了REALITY,一般选的目标网站,不管是大厂如www.apple.com,还是一些小众的,我假设是有GFW的干扰。你作为客户端用户,会体验到VPS代理的速度时快时慢。或突然连不上,等如3分钟自己连不,感觉不稳定。或当连不上时,sing-box与xray日志都一直报错,像环回了一样的。此时vps上可能没收到任何连接请求。或之前收到过客户端发来的请求是访问VPS自己的IP的。

我也是遇到几回,刚刚才总结出来,我现在要用REALITY,我是自己偷自己,暂时没复现这现象。我观察一下。 按我自己觉得这不是sing-box程序的问题,也不是Xray程序的问题。不知道未知的干扰,怎么突然就这样了。 这现象我还没在Xray群里说讨论,在这先第1次说出来 。

我研究这用法起因是 https://github.com/chika0801/Xray-install/tree/main/Tun 搞了这组合想测试xray打游戏,这个契机遇到的。

chika0801 commented 1 year ago

@sdeyang @chika0801 v2ray 和sing-box的dns对象,自定义的内容就是dns属性值,给做一个例子出来吧

{
    "servers": []
     .......
}

说到DNS设置这块,很多人用都是httpsocks代理(系统代理)之前就觉得你给自定义DNS选项,会用的人真的太少了,你不给可能会有人骂。。。。真是两难。给了用户实际也没搞明白到底怎样工作流程。你想过没有给一些预设选项。只不过这样做预设也是众口难调。

chika0801 commented 1 year ago

111111111

说到DNS部分,想起一个成年老事和你交流下。你默认给的是上图的路由规则 ,默认是用AsIs。第1个出站是代理。

规则里有一个是geoip cn直连,经常有人来群问本地cn ip没直连问题,我们都解答说要把Asis改成ipifnonmatch,还要叫删了0-65535这规则 ,不然逻辑上它就和ipifnonmatch冲突了。

不清楚大佬当时 这0-65535代理作兜底的用意。你给的默认是用Asis,不用0-65535,第1个出站也是代理。你把0-65535删了,我们解答时就说把asis改成ipifnonmatch就完事。

当然我也知道保留0-65535叫用户改成ipondemand也成。这槽点真是经常有人来问啊。

2222

2dust commented 1 year ago

说到DNS部分,想起一个成年老事和你交流下。你默认给的是上图的路由规则 ,默认是用AsIs。第1个出站是代理。

规则里有一个是geoip cn直连,经常有人来群问本地cn ip没直连问题,我们都解答说要把Asis改成ipifnonmatch,还要叫删了0-65535这规则 ,不然逻辑上它就和ipifnonmatch冲突了。

不清楚大佬当时 这0-65535代理作兜底的用意。你给的默认是用Asis,不用0-65535,第1个出站也是代理。你把0-65535删了,我们解答时就说把asis改成ipifnonmatch就完事。

当然我也知道保留0-65535叫用户改成ipondemand也成。这槽点真是经常有人来问啊。

调整下,默认改成 ipifnonmatch 绕过大陆规则集移除兜底0-65535

但是这样设置,如果用户DNS设置不好就会DNS泄露

2dust commented 1 year ago

sing-box 增加 domain_strategy后,配置不当也是会DNS泄露,功能是可以加,默认还是空白比较好

chika0801 commented 1 year ago

我建议真不要管dns泄露,每次不良林发视频赚流量时,总有群友来问,真是月经系列问题之一。

漏不漏。你其实当时给的默认逻辑就都处理得差不多了。我手机发下ng的截图,举例下我的逻辑。

环境以http/socks代理为例,geo文件以加强版为例。域名进来进到路由。先以ipifnonmatch为例。上下顺序是专门的因为有些逻辑原因。

0 dns的ip1.1.1.1走代理,设我dns部分中默认填1个1.1.1.1(不写也会最后走代理,写了当提醒用户也成)

1 屏蔽广告

2 加强版特有的游戏分类域名在中国有cdn的域名走直连(放3前面是这个分类也被包含在 !cn中了,加强版说明里提到这样用)

3 !cn的域名走代理(放到4前面是因为按加强版说明提到苹果和谷歌在国内能直连的域名,在这步发到代理了,这些域名也同时被归到geosite cn分类,是加强版作者有意为之的)

4 geosite的cn和私人 走直连。

5 geoip cn 和私人走直连,域名到这步如果没命中前面所有的域名规则,因ipifnonxxxx,用dns进行解析。我的习惯是设置了如1.1.1.1,用它解析,它是最终被代理。返回解析的ip,看是不是cn ip,是直连,不是发到默认第1个出站,被代理。

因为dns部分我设置了1个1.1.1.1 。没系统默认国内dns解析,去那些卖vpn的检查网站测都是不会漏的结果(小白也高兴了)

现在的问题是小白新人它们不懂xray配置工作流程,更不会去dns设置里填个1.1.1.1了,所以 5那儿用国dns解析那些泄露网站的域名,结果dns泄露了。

Screenshot_2023-04-26-15-36-54-983_com v2ray ang-edit

chika0801 commented 1 year ago

我懂这原理也一直在思考个人用,怎么合理点,懂的人真的是自然懂,教小白真是累。我真建议你,你如果路由规则,我记得你默认给的是高级设置,就算你按我说的逻辑自己加了,你还要默认在dns设置中给填个比如1.1.1.1嘛。这样新用户开箱即用。就算用户vps用8.8.8.8,软件里你默认填的是1.1.1.1,小白用户去dns泄露网站测也不会有国内dns。他们就高兴了。

所以我也建议你,你在dns对话框考虑下做成这种选项,比如1.1.1.1 8.8.8.8 留空空白 自定义。用户点自定义,再跳一个编辑框,让用户复制粘贴。

chika0801 commented 1 year ago

你现在是加了tun还要考虑tun下一系列dns处理规则,还要累,真心建议你考虑下做几外模板让用户选,适度开放完全让用户粘贴。

真懂的用户我也是直接singbox.exe cmd管理员启动tun自己跑config文件了。

chika0801 commented 1 year ago

sing-box 增加 domain_strategy后,配置不当也是会DNS泄露,功能是可以加,默认还是空白比较好

忙不过来的话,我想默认给空白(不生成这参数,等于域名进来路由里有ip规则,没ip为条件也不会触发)选项就做4个 。ipv4 6 优先 4 6得了

2dust commented 1 year ago

我懂这原理也一直在思考个人用,怎么合理点,懂的人真的是自然懂,教小白真是累。我真建议你,你如果路由规则,我记得你默认给的是高级设置,就算你按我说的逻辑自己加了,你还要默认在dns设置中给填个比如1.1.1.1嘛。这样新用户开箱即用。就算用户vps用8.8.8.8,软件里你默认填的是1.1.1.1,小白用户去dns泄露网站测也不会有国内dns。他们就高兴了。

所以我也建议你,你在dns对话框考虑下做成这种选项,比如1.1.1.1 8.8.8.8 留空空白 自定义。用户点自定义,再跳一个编辑框,让用户复制粘贴。

这样吧,如果用完全不填dns,默认给添加一个值比如1.1.1.1;v2ray和sing-box都默认个

chika0801 commented 1 year ago

我懂这原理也一直在思考个人用,怎么合理点,懂的人真的是自然懂,教小白真是累。我真建议你,你如果路由规则,我记得你默认给的是高级设置,就算你按我说的逻辑自己加了,你还要默认在dns设置中给填个比如1.1.1.1嘛。这样新用户开箱即用。就算用户vps用8.8.8.8,软件里你默认填的是1.1.1.1,小白用户去dns泄露网站测也不会有国内dns。他们就高兴了。 所以我也建议你,你在dns对话框考虑下做成这种选项,比如1.1.1.1 8.8.8.8 留空空白 自定义。用户点自定义,再跳一个编辑框,让用户复制粘贴。

这样吧,如果用完全不填dns,默认给添加一个值比如1.1.1.1;v2ray和sing-box都默认个

赞成。期待下一个版本!

2minsh commented 1 year ago

所有v2ray core支持的协议,非自定义配置现在可以生成 sing-box 的配置文件了

测试方式

  • 下载x64包 v2rayN.zip
  • 运行,配置文件的core类型选择sing-box
  • 测试是否可用;如有问题,请先自行查看guiConfigs/config.json是否正确的sing-box配置
  • 发现问题请反馈

注意

  • 请先不要测试Tun模式,还未实现
  • 自定义DNS分成V2ray和sing-box
  • 路由规则大部分会从v2ray格式自动转换成sing-box格式