XTLS / Xray-core

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.
https://t.me/projectXray
Mozilla Public License 2.0
25.56k stars 3.95k forks source link

请求添加新功能: wireguard出站设置v4或v6优先 #1842

Closed Weltolk closed 7 months ago

Weltolk commented 1 year ago

https://xtls.github.io/config/outbounds/wireguard.html

https://xtls.github.io/document/level-2/warp.html

chika0801 commented 1 year ago

https://github.com/XTLS/Xray-core/issues/1385#issuecomment-1329625513

我之前测过,是不能v6优先的,隔壁平台程序似乎也是这样的情况。

Weltolk commented 1 year ago

#1385 (comment)

我之前测过,是不能v6优先的,隔壁平台程序似乎也是这样的情况。

对,没有这个选项,而且和顺序无关

chika0801 commented 1 year ago

要实现v6优先,我的做法是warp-go 或 wgcf,注册好后,全局接管。

Weltolk commented 1 year ago

要实现v6优先,我的做法是warp-go 或 wgcf,注册好后,全局接管。

用wireguard接管所有流量吗?

Weltolk commented 1 year ago

要实现v6优先,我的做法是warp-go 或 wgcf,注册好后,全局接管。

请问这样还能实现分流吗(指定域名才走warp,其他从服务端直连

chika0801 commented 1 year ago

用wireguard接管所有流量吗?

是的。

请问这样还能实现分流吗(指定域名才走warp,其他从服务端直连

不能了,我的解决方法是找台 vps b 全局接管,你连的是vps a,在a上设置 rule 规则,把要用warp的网址,出站 发到 vps b 去(我开ss2022协议)

Weltolk commented 1 year ago

用wireguard接管所有流量吗?

是的。

请问这样还能实现分流吗(指定域名才走warp,其他从服务端直连

不能了,我的解决方法是找台 vps b 全局接管,你连的是vps a,在a上设置 rule 规则,把要用warp的网址,出站 发到 vps b 去(我开ss2022协议)

感谢分享,我等xray支持(

rui0572 commented 1 year ago

请问这样还能实现分流吗(指定域名才走warp,其他从服务端直连

参见 https://xtls.github.io/Xray-docs-next/document/level-2/redirect.html

chika0801 commented 1 year ago

这方法我记得用 https://github.com/fscarmen/warp 这里面的warp-go脚本,可以用非全局接管的选项。且创建了一个虚拟网卡。所以你可以看看上面的指定出站用哪一个网卡,能不能成功。

Weltolk commented 1 year ago

这方法我记得用 https://github.com/fscarmen/warp 这里面的warp-go脚本,可以用非全局接管的选项。且创建了一个虚拟网卡。所以你可以看看上面的指定出站用哪一个网卡,能不能成功。

另外请问你用本身v4 v6双栈的机器试过wgcf+xray的wireguard吗?我这边这样配置的话,如果wireguard出站携带了wgcf生成的v6 ip,则出站无法连接,只有纯v4 ip出站才可以

chika0801 commented 1 year ago

我没有在原生有v4 v6的vps,按你说的方法测试了。

RPRX commented 1 year ago

这个 issue 我还没看,不过我想借楼回答一下:为什么 Xray 的 WireGuard 出站性能差?

其实 Xray-core 和 sing-box 用的是完全相同的库,所以有没有一种可能,由于 VR 把 Go 当成 Java 来写,写 v2ray 时过度追求各种设计模式,导致架构异常繁杂(我看代码都很费劲),一个 UDP 包要经过 N 个流程,所以 *ray 处理 UDP 的性能就是很差。

之前我只修了 FullCone 相关的问题,没修性能,毕竟打游戏不需要那么大流量,但你要用来测速就不一样了,所以以后会修性能。

当然 TCP 的性能是小修过的,主要是全开 ReadV 和增大 buffer,所以 sing-box 文档那里 v2 的性能数据无法代表 Xray 的数据。

对于“增大 buffer”有人觉得只是改了个数字,不算什么,这就像别人一锤修好了你的机器,你觉得不值钱的那个故事一样,没有前期大量研究、计算,知道锤哪吗?我们也是控制变量做了大量研究、测试,才找到瓶颈在哪,无非是开源出来,你一 diff 就知道了。

举个例子,很多军工技术也是投入大量资源研究,但研究结果一看就会,比如战斗机的外形曲线,宁愿炸毁也不愿被别人捡到。

chika0801 commented 1 year ago

我测的情况是同一台vps,优化线路, xray-core 用wireguard出站,对比 sing-box 用wireguard出站。

客户端用v2rayn,连上vps(协议是vision tls)。客户端上用浏览器,进speedtest.net的网页版,选多线程,vps所在地区的测试节点。

xray约 70-80Mbps sing-box约 300-400Mbps。

群友说xray的性能差(慢)估计是大家跑speedtest测速观察的。

RPRX commented 1 year ago

提升性能的核心就在于减少处理流程,尤其是 copy 次数,sing-box 有个预留头部挺好的,毕竟之前我也想这么干,后来搞 XTLS 了

因为性能不足设备通常是 Linux,比如 7621,XTLS 可以直接 Splice,和软件架构、什么语言都无关了,所以 Rust 计划都不紧急了

nekohasekai commented 1 year ago

@RPRX 你说的对,但是 Xray 没给直连写 splice(

RPRX commented 1 year ago

@RPRX 你说的对,但是 Xray 没给直连写 splice(

那下个版本就加

kdurov commented 1 year ago

看到这里有讨论wireguard出站速度慢的。 试了下 1.8x,貌似没有改善,是要到1.9x才会解决么?