本以为 V2ray的VLESS协议介绍和使用教程 是V2ray系列教程 的最后一篇,万万没想到Xray横空出世,并且项目发展高歌猛进,风光无限。鉴于此,有必要为学不动的网友科普一下Xray项目。
本Xray教程重点介绍Xray项目由来、和V2ray的关系,至于服务端部署和客户端使用,目前基本与V2ray一致,因此仅做简要介绍。
Xray介绍
一个Debian包维护者发现XTLS库的LICENSE不是BSD许可,提了一个issue希望作者 @rprx 能修改方便打包,详见 https://github.com/XTLS/Go/issues/9。由这个issue引发了广泛讨论,rprx认为目前许可不是问题,也有不少人认为协议是立场的体现,各执一词。
最终V2ray(V2fly社区)维护者经过投票确认XTLS不符合V2ray的MIT协议,并在V2ray-core 4.33.0版本移除了XTLS。rprx和其拥护者行动起来,很快就创建了Project X项目和Xray子项目(Xray取名来自XTLS和V2ray的结合),并发布了Xray-core的多个版本。这便是Xray的大致由来。
XTLS和Xray离不开作者 @rprx 的辛勤付出,因此也简要介绍一下@rprx :
1. @rprx 是VLESS协议的设计者,在介绍VLESS协议时写下了 性能至上、可扩展性空前,目标是全场景终极协议 的宏壮愿景;
2. @rprx 是 XTLS 的作者,在 XTLS库 中写下了 “THE FUTURE” 的霸气描述。将内外两条TLS连接结合,rprx可能不是第一个有这想法的人,但却是第一个将其实现、并成熟应用到实际中的作者。从使用表现上看,XTLS无愧于rprx对其的评价:划时代的革命性概念与技术:XTLS,以及社区给出的“黑科技”称谓;
3. @rprx 是Project X和Xray项目的创始人。由于LICENSE理念之争,rprx创建了对标Project V和V2ray-core的Project X和Xray-core项目,广受欢迎。
Xray-Core自上个月创立以来,短短一个月已经发布了七个版本,足见维护者的诚意。Xray-Core目前发布的各个版本主要介绍如下:
1. Xray-core 1.0.0版本:项目创建,提供完整的VLESS和XTLS支持,功能上是V2ray-core的超集。主要变动是将v2ray和v2ctl可执行文件合并为xray,性能全面增强;
2. Xray-core 1.1.0和1.1.1版本:测试过渡版本,未提供详细发行说明;
3. Xray-core 1.1.2版本:引入了Linux Kernel Splice技术,适用于安卓、路由器等Linux环境。Splice技术减少了数据拷贝次数和内存占用,拥有更强的性能。需要说明的是,只适用于类Linux环境的客户端出栈,服务端入栈仍然是direct;
4. Xray-core 1.1.3版本:重构了透明代理的 REDIRECT 模式,使之同时支持 IPv4 和 IPv6,解决了V2ray和trojan遗留的问题;
5. Xray-core 1.1.4版本:优化内存占用,TLS更多选项配置,使服务端伪装站的TLS设置在SSL Labs能达到A+评分;
6. Xray-core 1.1.5版本:测试过渡版本,支持YAML配置文件、OCSP Stapling等功能,官方安装脚本大更新;
7. Xray-core 1.2.0版本:SS、trojan协议完美支持Fullcone,向游戏使用迈出了重要一步。
更多Xray-core新特性请参考官方说明:https://xtls.github.io/about/new/,或者官方库发行说明:https://github.com/XTLS/Xray-core/releases
Xray和V2ray的区别
在说明Xray和V2ray区别之前,先说一下三个相近但不同的概念:
- V2ray:Project V 是用于构建基础通信网络的工具合集,其核心工具称为
V2Ray
。V2ray主要负责网络协议和功能的实现,既可以单独运行,也可以和其它工具配合。V2ray官网是:https://v2ray.com/,Github项目主页是:https://github.com/v2ray,TG讨论组是:@projectv2ray; - V2fly:出现一些科学上网作者被喝茶事件后,V2ray原开发者长期不上线,其他维护者没有完整权限,导致V2ray项目维护困难。因此社区在2019年组建了V2fly组织,继续维护V2ray,也是目前V2ray发展的主力。V2fly官网是:https://www.v2fly.org,Github项目主页是:https://github.com/v2fly,TG通知频道:@v2fly,TG交流群为:@v2fly_chat;
- Xray:因许可理念之争,VLESS和XTLS的作者单独创建了Xray项目,目前是V2ray的超集,后续可能有不同的发展路线。Xray文档官网(测试中):https://xtls.github.io/, Github项目主页:https://github.com/XTLS,TG交流群:@projectXray。
从上面可以看到,先有V2ray(Project V),然后是V2fly,最后才出来Xray(Project X)。其中V2fly是V2ray的社区,可以认为两者是同一个组织。
详细一点说,Xray和V2ray区别如下:
- Xray是V2ray的一个分支(Fork)。Xray项目基于V2ray而来,其支持并且兼容V2ray的配置;
- Xray是V2ray的超集。虽然最新版V2ray删除了XTLS,但仍保留VLESS协议。Xray提供完整的VLESS和XTLS支持,目前是V2ray的超集,但后续Xray可能会有会有自己的发展方向;
- 如果使用XTLS,强烈推荐使用Xray,或者安装V2ray-Core 4.29.0 ~ 4.32.1版本;不使用XTLS的情况下,使用V2ray和Xray均可。
一个小提示是,Xray项目创建以来,V2ray没再发布新版本,反而Xray热火朝天,不断出新版和新功能。此外Xray的TG群也非常热闹,每天至少七八K的消息。如果你喜欢尝试新东西和折腾,Xray适合你,否则V2ray也挺好用。
如今Xray和V2ray分家,后续有没有可能Xray再合并回V2ray呢?这个问题没有答案,也许会合并回去结束分裂,也可能就此分道扬镳。io.js从Node.js分出后来又合并回去,C++源自C但完全是一门新语言独立发展,因此一切皆有可能。
Xray安装和使用教程
和其他自行部署的技术相同,使用Xray分为安装服务端和配置客户端两部分,接下来分别做介绍。
安装Xray
1. 准备一台境外的VPS,购买可参考 一些VPS商家整理;
2. SSH连接到境外服务器,windows请参考:Bitvise连接Linux服务器教程,mac系统请参考:Mac电脑连接Linux教程;
3. 自行部署Xray服务端需要你有基本linux技巧,能使用vim/nano等编辑器。官方提供了大多数Linux系统的一键脚本,可以直接使用:
bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) install
官方脚本安装的文件符合FHS规范,可执行文件xray在 /usr/local/bin
目录下,配置文件位于 /usr/local/etc/xray
目录内。
4. 官方脚本安装的配置文件内容为空,可参考 Xray-examples 中提供的模板编辑配置文件。例如使用VLESS+TCP+XTLS的配置文件为:
{ "log": { "loglevel": "info" }, "inbounds": [ { "port": 443, # 可以换成其他端口 "protocol": "vless", "settings": { "clients": [ { "id": "", // 填写UUID,可以使用xray uuid生成 "flow": "xtls-rprx-direct", "level": 0 } ], "decryption": "none", "fallbacks": [ { "dest": 80 // 回落配置,可以直接转到其他网站,例如"www.baidu.com:80" } ] }, "streamSettings": { "network": "tcp", "security": "xtls", "xtlsSettings": { "alpn": [ "http/1.1" ], "certificates": [ { "certificateFile": "/path/to/fullchain.crt", // 换成你的证书,绝对路径 "keyFile": "/path/to/private.key" // 换成你的私钥,绝对路径 } ] } } } ], "outbounds": [ { "protocol": "freedom" } ] }
XTLS需要证书,因此需要一个域名并申请证书。域名不需要备案,国内和国外买的都可以。域名购买可参考:Namesilo域名注册和使用教程 或从 适合国人的域名注册商推荐 选购。域名申请证书可参考使用acme.sh签发证书 或 从阿里云获取免费SSL证书。
fallback选项以及ALPN等设置请参考:VLESS协议的fallback参数介绍
5. 配置完毕后,可通过 systemctl start xray
运行 xray,systemctl stop xray
停止xray,systemctl restart xray
重启,journalctl -xe --no-pager -u xra
y 查看运行日志。
最后,记得放行防火墙。如果是阿里云、腾讯云、AWS/GCP等大厂的服务器,还需要到网页后台的安全组放行端口。
配置Xray客户端
服务端配置好后,接下来是配置客户端。目前有如下客户端支持Xray:
Xray Windows客户端:
- V2rayN:3.28版本起支持xray,只需要下载Xray-core,将解压的文件放到V2rayN-Core文件夹下即可。需要注意的是V2rayN 4.0版本移除了PAC,改用路由规则,会给习惯了PAC的用户带来困扰。习惯Qv2ray的网友应该乐于接受这个改变;
- winXray:winXray是Windows系统上简洁稳定的Xray/V2Ray、Shadowsocks、Trojan 通用客户端,可自动检测并连接访问速度最快的 代理服务器。该项目原作者删库后出现了一些同名库,安全性未知,因此本站托管的依然是旧版;
- Qv2ray:Qv2ray是一个基于Qt框架开发的v2ray客户端,可通过插件支持SS、SSR、VMESS、VLESS、trojan等多种协议。
Xray安卓客户端:
- V2rayNG:V2rayNG可以说是最跟随Xray步伐的V2ray客户端了,Xray发布新版本后会在第一时间更新,推荐使用。
Xray Mac客户端:
- Qv2ray:Qv2ray是一个基于Qt框架开发的跨平台v2ray客户端,因此支持MacOS系统。实际上,自V2rayU作者删库不更新后,Qv2ray算得上Mac系统上支持VLESS协议的独苗,但可能会出现设置系统代理无效的bug。
Xray苹果客户端:
- Shadowrocket/小火箭:小火箭目前是ios系统上更新最频繁的V2ray客户端,价格也不贵,支持多种协议,推荐使用。
以上客户端均可以在 V2ray客户端 下载,请参考其中的配置教程配置,本文不再赘述。
总结
不管V2ray和Xray今后发展如何,本人都真心感谢为这两个项目付出时间和贡献的开发人员,他们为自由获取互联网信息作出了重要贡献。
本文到此结束,欢迎批评指正!
443端口好像被墙了,怎么办。。。
换个端口
大佬,电脑端v2突然失效,无法访问外网,可能是什么原因造成的?电脑系统是win 10,v2是4.12版本,vless 协议,X-ray 1.2.3,
报错如下:
[Warning] [2516435047] app/proxyman/outbound: failed to process outbound traffic > proxy/vless/outbound: failed to find an available destination > common/retry: [dial tcp xxxxxxx: operation was canceled] > common/retry: all retry attempts failed
已经测试过服务器没问题,手机端小火箭也能正常用,唯独我的台式和笔记本电脑都不能连了,看网上有说系统时间不对造成的,但我系统时间是没问题的,会是系统更新或者防火墙得原因吗。
电脑网络连接服务器有问题,或者电脑网络不能访问服务器
之前重置了电脑网络之后,电脑VPN就用不了了,该怎么办?手机还能翻出去
重新配置
博主啥时候再出个关于clash的科普文章就好了
等有空吧,clash只是一个工具,用起来不难。另外clash不支持xray的vless和xtls
已经第三方有支持了
听说开源内核支持了,没有测试过
首先,按照文章里的方式配置好服务端,用 systemctl 来启动的话,最后都会 failed,不知道为什么,但是直接用 xray -c run 配置文件的方式可以启动。
之后就是客户端不知道怎么配置,我用的 v2rayN, 文章里写的不是很清楚,所谓“V2rayN-Core文件夹”没这个文件夹,直接放 v2rayN 目录下了,结果测试发现服务端总提示:proxy/vless/inbound: fallback ends > proxy/vless/inbound: failed to fallback request payload > tls: first record does not look like a TLS handshake
fallback 配置的是 “www.baidu.com:80”
还有就是用 tg 得翻墙,我搭建这个不就是为翻墙吗,这不悖论吗
不能启动应该是端口被占用了,换一个
使用v2rayn报错看起来是没选xray内核
问题找到了,https://github.com/XTLS/Xray-install 里有2个脚本,要用 -u root 那个就正常了。
另外客户端 v2rayN 应该是不好用。我直接用 xray core 了,但现在服务端总是报:app/proxyman/inbound: connection ends > proxy/vless/inbound: fallback ends > proxy/vless/inbound: failed to fallback request payload > transport/internet/xtls: empty certs
我的服务端 fallback 配置的是 “www.baidu.com:80″,我看评论里也有人说这个配置不行,要改成 80 的话是不是还得装个 nginx 或者 apache
服务费证书配置有问题
谢谢,的确是证书用错了,更正就好了。
V2RayN 启用了 xray 内核配置好了仍然不可用,找不到问题在哪。后来直接用 xray core 自己写配置就可以了。
另外 fallback 那个用 baidu 不行,只能改成 80 本地安装 nginx 。
fallback的网址,有些是不允许反代的,自然不行
Xray启动占用了443端口,导致Nginx启动冲突,这两个只能启动一个了。有什么好的解决方法能把它们两个一起都在运行吗吗?
本站搜fallback
大佬,我在域名伪装那边设置了自己的网站,但当网站使用SSL时会监听443,而X-RAY默认也监听443,会导致冲突无法启动,必须先关闭SSL再启动X-RAY,然后重新开启SSL才能同时存在,有没有办法解决这个冲突问题
xray的fallback/sni分流,或者nginx等分流
为什么我安装的xray服务都是不能监听IPV4的端口,只能监听IPV6的端口呢?VPS用的是甲骨文的
tcp6就是两个都可以用
大佬
Xray客户端运行后过段时间内存使用率会飙升 然后关闭程序也不会下降
怎么办
建议换个客户端
在这里给大家一个邪道思路,使用一键脚本时,域名可以不花钱买,直接在你的云主机上安装一个Softether Server端,就会给你一个用来动态域名解析的“xxxx.softether.net”,实测这个也能正常用这个脚本。然后甚至连什么DNS解析,证书注册都省了……
动态域名也是域名,自然是可以的
确实,不过白干了我12块钱域名哈哈哈哈哈哈所以分享一下
这种方法的优点和缺点是什么呀?
优点就是不用买域名,缺点嘛就是域名不属于你,不能弄其他的
老哥,我小白一个,在安装Softether Server端的时候,设置完端口localhost:5555,用户名直接跳过,然后出错,没有密码选项出来
If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name.
If connecting by server admin mode, please press Enter without inputting anything.
Specify Virtual Hub Name:
Error occurred. (Error code: 1)
Connection to the server failed. Check network connection and make sure that address and port number of destination server are correct.
这是怎么回事呢,希望有空的话可以帮我解答一下,谢谢
弄好后安装xray显示端口冲突了,绑域名后成功了
emmm,rprx已经表明分裂原因和开源协议没关,就不要火上浇油了;
感谢教程
rprx看过这篇教程,并没有反对文章的说法
V2rayN更新到4.12后,没有了PAC,如果浏览器不装代理插件的话,只能右下角手动全局或者关闭代理,不知道博主是否可以出个教程解决这个问题.
配置教程里应该有说到,你可以去参考一下,也许能解决你的问题
问一下大佬,我之前一直在用 godaddy的域名A, 然后dns设置到cloudfare 用vultr的vps,v2ray ws cdn一直没问题,
最近新弄了一个godaddy上的域B,同样的设置, v2ray ws cdn, ping 网址可以看到ping到cdn上了,但是每次都是一天左右就被断,昨天设置好,今天就上不去,是我的域名端口被封了么?
感觉是你服务器的xray程序挂了
配置文件在/usr/local/etc/xray 而不是/etc/local/etc/xray 文中似乎打错了
感谢指正
— Logs begin at Sat 2020-11-21 18:42:12 CST, end at Fri 2021-01-29 19:33:15 CST. —
Jan 29 19:33:01 vultr.guest xray[21367]: 2021/01/29 19:33:01 [Info] main/json: Reading config: /usr/local/etc/xray/config.json
Jan 29 19:33:01 vultr.guest xray[21367]: Failed to start: app/proxyman/inbound: failed to listen TCP on 443 > transport/internet: failed to listen on address: 0.0.0.0:443 > transport/internet/tcp: failed to listen TCP on 0.0.0.0:443 > listen tcp 0.0.0.0:443: bind: address already in use
Jan 29 19:33:01 vultr.guest systemd[1]: xray.service: Main process exited, code=exited, status=255/n/a
Jan 29 19:33:01 vultr.guest systemd[1]: xray.service: Failed with result ‘exit-code’.
Jan 29 19:33:01 vultr.guest systemd[1]: xray.service: Service hold-off time over, scheduling restart.
Jan 29 19:33:01 vultr.guest systemd[1]: xray.service: Scheduled restart job, restart counter is at 5.
— Subject: Automatic restarting of a unit has been scheduled
— Defined-By: systemd
— Support: http://www.ubuntu.com/support
—
— Automatic restarting of the unit xray.service has been scheduled, as the result for
— the configured Restart= setting for the unit.
Jan 29 19:33:01 vultr.guest systemd[1]: Stopped Xray Service.
— Subject: Unit xray.service has finished shutting down
— Defined-By: systemd
— Support: http://www.ubuntu.com/support
—
— Unit xray.service has finished shutting down.
Jan 29 19:33:01 vultr.guest systemd[1]: xray.service: Start request repeated too quickly.
Jan 29 19:33:01 vultr.guest systemd[1]: xray.service: Failed with result ‘exit-code’.
Jan 29 19:33:01 vultr.guest systemd[1]: Failed to start Xray Service.
— Subject: Unit xray.service has failed
— Defined-By: systemd
— Support: http://www.ubuntu.com/support
—
— Unit xray.service has failed.
—
— The result is RESULT.
请问,这怎么解决呢
重启好了。。。。
Xray的IOS端咋个配置呢,就是用的小火箭
和vless一样配置就好了
我买的节点使用订阅v2ray客户端常年”基础连接已经关闭:发送时发送错误”
之前用trojanQT5非常好用 但是自从不更新之后现在越来越不好用了 经常卡死出错
没办法又用回了v2ray 但是几百个节点在v2ray下能用的寥寥无几
服务器本身没问题的 因为所有节点在QT5和ios的shadow上面没任何问题
只有在安卓和windows 的V2ray客户端出错
可以试试clash
XRay不走ws,所以只要有域名有证书,不需要安装nginx或apache等web服务器了是吗?路径默认缺省了是吗?
如果选择好fallback参数,可以不安装nginx/apache。如果不是xray流量,会回落到默认配置
你好我搭建的是Xray+VLESS+TCP+XTLS 手机端用流量可以正常使用(配置没问题)但是连接自己路由器的WiFi不能使用 电脑端 插线和连接WiFi均不能正常使用但是连接手机的热点可以正常使用。系统是正版的没有代理问题。请问这是什么原因呢?
vps线路对一些宽带不友好
大佬,能否帮忙看下我这个需求。
我是翻墙重度用户,本着不把鸡蛋放在同一个篮子里的原则,避免某机场被封或者跑路我就抓瞎,所以经常看见哪个机场搞活动就手贱付款了,买过7个机场了,分了下类,有TROJAN, VMESS+TCP, VMESS+WS, VMESS+WS+TLS 这4种协议。每个机场组内部的协议和密码都是一样的。
在Windows下和Linux桌面环境下,都有GUI客户端,能自动更新订阅,鼠标一点就切换节点啦,还比较方便。Windows客户端最近新出了个WinXray,能自动切换节点实现高可用,用着比较舒服。
我之前买Linux的VPS也都是买国外的,命令行访问raw.githubusercontent.com或者其它某些网站也不需要翻墙。
最近国内某云搞活动8M带宽的轻量服务器价格勉强还可以接受,比1M小水管体验应该好太多了,我就买了一台,想部署两个项目自己平时用,延迟低一点。
结果买了之后才发现,经常运行什么脚本时,没法访问境外网站,买之前忘了考虑这一点了。
所以我的需求是:
在Linux命令行下,使用机场订阅,将不同机场不同协议的节点,放在一块实现高可用(就像新出的winxray软件那样),哪怕先简单实现轮询负载均衡也好。
使用订阅的客户端基本都是GUI的,Linux命令行基本上就是直接使用core,没人考虑开发命令行客户端。
我有搜到atrandys写的TROJAN+HAProxy实现负载均衡的教程,那要求每个节点的密码一样,应该只适用于单个机场组内。
我也有看到v2fly/v2ray-vore官网的负载均衡教程,https://guide.v2fly.org/routing/balance2.html,但是这应该也是单组内的配置。
大佬是否有命令行使用机场订阅的需求?能否往这方面琢磨琢磨?
没有机场需求,命令行简单就能访问外网
linux客户端怎么办?可以用v2ray的客户端吗
qv2ray可以
服务端xray日志报错:connection ends > proxy/vless/inbound: fallback ends > proxy/vless/inbound: failed to fallback request payload > tls: first record does not look like a TLS handshake,楼主知道什么问题么
客户端没有配置tls
合并貌似是不可能了,xray坚持使用MPL作为开源许可,这和v2ray的MIT许可之间的冲突是很大的。
是的
客户端报错:v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vless/outbound: connection ends > v2ray.com/core/proxy/vless/outbound: failed to decode response header > v2ray.com/core/proxy/vless/encoding: unexpected response version. Expecting 0 but actually 72,请问楼主知道怎么解决么
客户端配置错了
大佬,请问看xray运行日志报打开证书文件没有权限,然后启动失败,怎么解决呀
用ll命令,同时保证证书所在文件夹能被访问
大佬,能给联系方式咨询一下么,我用ll可以访问到,而且证书也是放在root目录之外的,并且我nginx也是配的那个目录,没有问题,xray就一直报错额,而且xray刚装好第一次启动没有报错,一用systemctl restart重启就报错不行了
加tg: tlanyan
大佬,请问看xray的运行日志报打开证书文件报没有权限,启动失败怎么解决呀?
把证书移到/root之外的文件夹
大神,v2rayng上流控选splice还是direct?
建议splice
大佬,你好。一个困扰很久的问题,xtls的协议,安卓手机用v2rayng,为什么有时候开启vps,会有一段时间连不上,日志显示preparedomain err:i/o timeout?
线路不稳定或者被限流了
这篇文章写的好,简单易懂的介绍了xray及作者让使用者更容易理解这个新协议。
博主你好,感谢你关于Xray的资料集中整理,非常清楚且具有条理,使我从TG的争吵和莫名其妙的抄袭站脱出身来能认真测试工具,在此表示感谢。
winXray 最新 v2.3
https://github.com/i5g5vip/winXray
这个是安全的,试过自己编译源码出来的EXE是一样的。
该项目提供的EXE文件:
https://github.com/i5g5vip/winXray/raw/master/release/winXray.7z
https://www.virustotal.com/gui/file/5e2c942225b84f87ecdc4f3a8c6800ea6ff51cbac4188d37923a14c8a07d44e8/detection
Kaspersky,McAfee,BitDefender,Microsoft Defender 这些主流的杀毒软件扫描结果都是安全无毒。
这几个杀毒软件检查都非常严格,扫描结果应当是可信的。
感谢反馈