V2Ray 配置指南(下称本指南)是网友自发编写的关于 V2Ray 如何配置及使用的指南,与 V2Ray 官方并无任何关系。尽管 V2Ray 厚爱将本指南的链接放到了其官网首页,这并不意味着本指南的建议或推荐为 V2Ray 官方所主张。
V2Ray 是一个模块化的代理软件包,它的目标是提供常用的代理软件模块,简化网络代理软件的开发。
听起来有点绕口的,是什么意思呢?简单来说,它就是一个代理,可以用来科学上网。至于什么模块化、简化开发那是跟开发者说的,咱普通用户会用 V2Ray 就行了。
V2Ray 用户手册:https://www.v2ray.com
V2Ray 项目地址:https://github.com/v2ray/v2ray-core
V2Ray Telegram 使用群链接:https://t.me/projectv2ray
区别还是有的,Shadowsocks 只是一个简单的代理工具,而 V2Ray 作者将 V2Ray 定位为一个平台,任何开发者都可以利用 V2Ray 提供的模块开发出新的代理软件。
了解 Shadowsocks 历史的同学都知道,Shadowsocks 是 clowwindy 开发的自用的软件,开发的初衷只是为了让自己能够简单高效地科学上网,自己使用了很长一段时间后觉得不错才共享出来的。V2Ray 是 clowwindy 被喝茶之后 V2Ray 项目组为表示抗议开发的,一开始就致力于让大家更好更快的科学上网。
由于出生时的历史背景不同,导致了它们性格特点的差异。
简单来说,Shadowsocks 功能单一,V2Ray 功能强大。听起来似乎有点贬低 Shadowsocks 呢?当然不!换一个角度来看,Shadowsocks 简单好上手,V2Ray 复杂配置多。
童鞋,某事物的优点和缺点总是相生相随的,优点是缺点,缺点也是优点。相对来说,V2Ray 有以下优势:
- 更完善的协议: V2Ray 使用了新的自行研发的 VMess 协议,改正了 Shadowsocks 一些已有的缺点,更难被墙检测到
- 更强大的性能: 网络性能更好,具体数据可以看 V2Ray 官方博客
- 更丰富的功能: 以下是部分 V2Ray 的功能
- mKCP: KCP 协议在 V2Ray 上的实现,不必另行安装 kcptun
- 动态端口:动态改变通信的端口,对抗对长时间大流量端口的限速封锁
- 路由功能:可以随意设定指定数据包的流向,去广告、反跟踪都可以
- 传出代理:看名字可能不太好理解,其实差不多可以称之为多重代理。类似于 Tor 的代理
- 数据包伪装:类似于 Shadowsocks-rss 的混淆,另外对于 mKCP 的数据包也可伪装,伪装常见流量,令识别更困难
- WebSocket 协议:可以 PaaS 平台搭建V2Ray,通过 WebSocket 代理。也可以通过它使用 CDN(如 cloudflare) 中转,抗封锁效果更好
- Mux:多路复用,进一步提高科学上网的并发性能
少年悟性很高啊!当然没有!目前来说,V2Ray 有下面的缺点:
- 配置复杂
- GUI 客户端不完善
- 产业链不成熟
虽然其文档很详细,换个说法就是很长,对于一般用户来说看到这么长的使用文档都有点望而却步。另外我用 Google 搜索过 V2Ray,搜出来的文章非常少,只能寥寥数篇,而且至少都是好几月之前的,由于 V2Ray 的迭代速度快,一些文章对目前的 V2Ray 已经不适用了。所以我希望通过本指南:
- 让大家了解到最新的 V2Ray 是什么样子的
- 让大家知道利用 V2Ray 可以做些什么
- 尝试用浅显易懂的语言来讲解 V2Ray 的配置
- 共享一些配置案例
另外,借 @xiaokangwang 的一句话与大家共勉(出自于 #175):
让井底之蛙们知道在更广阔的天地间,还能有另一种活法,比委身于审查更好的活法。
请购买付费的翻墙服务,商家会提供很全面的服务。
V2Ray 的用户手册非常详细地解释了 V2Ray,本指南主要以实际可用的配置从易到难来讲解 V2Ray 的功能特性,力求降低新手使用 V2Ray 的难度。
本指南的目标用户是有一定的 Linux 操作基础,像怎么注册 VPS,怎么用 SSH 登录 VPS,怎么使用 nano(或 vim) 编辑一个文本以及一些 Linux 基本命令的使用件网上有一大堆的指南,没必要重复造轮子再写一篇教程。只要你懂得安装配置 Shadowsocks 就外加一定的学习能力可以跟着本指南安装配置 V2Ray。
本指南可以看作 V2Ray 用户手册的简易版本,也可以看作 V2Ray 的应用举例。你可以在不参考 V2Ray 用户手册的情况下按照本指南的指导去搭建配置 V2Ray ,但我并不建议你这么做。因为本指南只是引导大家如何理解和配置 V2Ray,相较于用户手册来说有一定的取舍,会忽略一部分东西,另外我不是专业人士以及为了浅显地解释一些东西可能会使用不恰当的词句甚至可能就是错的。V2Ray 的用户手册非常精要,远不是我这种门外汉写得出来的,我建议大家多花点时间仔细研读 V2Ray 用户手册。
所以请不要浪费您宝贵的时间了。赶紧用回 ss 吧,干扰、识别这些都是谣言,现在仍然活得很好。
- 暂时停更
由于客观因素限制,V2Ray 配置指南将处于半停更状态,恢复时间未定。V2Ray 在设计之初已经充分考虑到了兼容性问题,之后的 V2Ray 的版本依然可以沿用如今的配置文件。配置指南还留下不少坑,恢复之后会一一填上。
- 更新恢复
在未来的一段时间里,配置指南将逐步更新 V2Ray 近半年来所新增功能的相关配置,并添加其它内容。但由于有其它事情要忙,更新速度较慢。
- 一年记
V2Ray 配置指南于去年12月22号上线,也差不多一年了。在我刚开始接触使用 V2Ray 时,那时候感觉很痛苦,因为当时不懂 JSON,不理解 V2Ray 的框架,再加上文档是分节的,对于新手来说很容易懵。于是我磕磕碰碰过了将近一个月才能够独立写出 V2Ray 的配置,然而真正令我决心写配置指南的是 TLS。因为 7 月就添加了 TLS 功能,直到 12 月才将 TLS 配置成功。因为当时啥也不懂,官方文档关于 TLS 的只有寥寥几句话,而大神都很忙,也不好意思缠人家,天天泡在群里,看到有 TLS 的话题就适时提问几句,然后赶紧 Google,直到能够配置 TLS 才发觉之前走了不了弯路。有意思的是当时 V2Ray 有一个 BUG 使得 TLS 不生效,记得好像是 11 月才修复,而我也在这之后才会用 TLS,也不知道该哭还是该笑。所以,看到有网友说花了一天、两天、一周时间终于用上了 V2Ray,我都想说真快。
时至今日还有不少人吐槽 V2Ray,比如说占内存、配置难懂、没有 C 版等。乍一看,真他妈多缺点,其实恰恰是 V2Ray 的优点。先说占内存的问题吧,吐槽这个的人基本上是想在垃圾 VPS 或垃圾路由器上运行的,然后喷 V2Ray。你这么牛逼咋不用汇编写一个呢?1 Mbytes 内存就可以运行,全世界的机长都会感谢你的,这能省下多少机场租赁费用。占内存有一部分原因是使用了 golang 作为编程言,这样开发效率非常高。可以看看,至今两年半不到,github 上 V2Ray 的 commit 都近 3000 了,可以看看其它的项目,哪怕是作为长辈 ss 。极高的开发效率可以让 V2Ray-core 快速迭代,以应对墙的变化。因为这是一个特殊的行业,谁也说不清墙哪天会发生什么变化,对我们来说到现在为止 GFW 都还是个黑盒子呢。空口无凭,说个具体点的,熟悉的朋友都知道今年 ss 有个一个大变动,加入了 AEAD 的支持,然而个还在他们讨论的时候,V2Ray 早在一个月前就已经实现了。golang 另外的优点是没有依赖和可以运行在各个系统上,这两点也许开发者会比较明显地体会到,其它的不说,看看 ss 上有多少关于编译问题和运行依赖问题的ISSUE就知道了。这些不是要洗 V2Ray,而是这是权衡了各方各面的妥协。有些人就是不会动脑子,或者说是狭隘,既然要出来看看外面的世界怎么就不多思考思考呢。配置其实不难懂,那只是长,这应该涉及到了V2Ray的架构。因为良好的架构,功能今天说明天加,配置也就加几行而已,长是长了点,但是清晰明了。
说回配置指南的问题吧,有人说写得不错,有些人说看不懂,这些我很清楚。因为我只讲 V2Ray 的配置,而基本不管其它的操作,看不看得懂就是有没有基础的区别了。至今我却觉得有些尴尬,因为配置指南的读者定位是至少搭建过 ss 的,搭建过 ss 那么基本的东西就不必再多费口舌了,但是毕竟太年轻,万万没想到基本上是从一键脚本过来的,他妈的连个 ls 都不知道是什么东西;另外一方面,有些东西我想写,看得懂的早就懂了,看不懂的也不会去弄懂。所以这就比较尴尬了。当然了,配置指南的定位不会变,顶多加几篇话外篇科普一下基础知识。我当时写这配置指南是想让大家快速理解 V2Ray 的配置格式,然后通过指南与官方文档对比参照之下学会使用更深层的配置。
关于配置指南,今后的计划一个是增加路由相关的内容。我认为 V2Ray 核心不在 nginx 这类的反代,而是路由,而且我感觉 V2Ray 也快到填坑的时候了(希望不打脸)。所以今后我会主要更新有关于路由的东西,如果有条件还会维护一个/一些路由表。当然,这是以年计。
- 元旦记
新的一年到了,祝各位新年快乐,顺便发文感慨一番。
首先是关于 Shadowsocks 和 V2Ray 的对比/区别,前文中我只是简单提了一下,但还是众多网友经常问及,所以我在这扩展讲一下。
关于这两者的对比,其实我不太愿意说太多,其中一个原因是它们的定位不一样。与 Shadowsocks 对比的应该是 VMess(此处将 Shadowssocks 定义成一种协议)。Shadowsocks 首先是自用的小工具,用了一段时间后于 2012 年开源立项,当年的背景是领导没如今的这么强势,网络环境也没现在这么恶劣,Shadowsocks 无论是速度上还是稳定性上都非常不错,经过多年的发展形成了独特的生态。无论从哪方面来讲,Shadowsocks 都影响了一大批的软件,说是先驱者、开一代之先河都不为过。到如今,Shadowsocks 依然是占用率最高的。然而大家都低估了领导的控制欲,直到 clowwindy 黯然而去。此时 V2Ray 出世,它的目标是提供一个软件平台,在这样的一个平台上可以运行各种各样的协议,包括 Shadowsocks,开发者也可以这样的平台灵活开发出不同的软件。这就是 V2Ray 与 shadowsocks 的最大区别。如果要对比,我们对比一下 VMess 和 Shadowsocks。VMess 是 V2Ray 项目组开发一种代理协议,与 Shadowsocks 类似,主要的不同在于:
- 天生支持多用户
- 可以对不同3. 认证基于时间和 UUID 等级的用户做不同的策略限制
- 无状态
前两点比较好解释,就是对多用户/射线场环境比较好。后两点是针对 Shadowsocks 的固有缺陷做出改进。对于普通用户而言,能明显感知到的是第 3 点,时间要准确是防重放攻击的手段,这也是 V2Ray 用户最容易忽视的。而 UUID 可以简单认为是 Shadowsocks 上的密码,使用 UUID 的一个原因是防止用户像在 Shadowsocks 上一样设置弱密码。
从速度上来说,就目前的常规环境下两者基本一样,像官方那样的测试环境超级大企业才会用到。说到速度,拜托大伙别再看 YouTube 的 Connection Speed 了,你要当真,对不起它是不准确的。
再来看看 V2Ray,前面说了它是一个平台,因为这样的平台,它可以运行各种协议,而使用什么协议则是通过路由来决定,另外 V2Ray 还拥有着不同的传输模式。这正是 V2Ray 最独特的地方,也正是我坚定上 V2Ray 这辆车的原因之一。这样不同的组合形成了不同的配置,然而这对于不同的人有不同的看法,喜欢的/会用的觉得多变、灵活,不喜欢的/不用会的觉得麻烦。
作为一个平台,虽然经过了两年多的开发,V2Ray 还没达到设想的样子。其中一个原因是项目组并非全职开发 V2Ray,其二是像平台、基础设施这样的东西,花费的资源非常庞大,远不是一朝一夕能完成的。这就是 V2Ray 还不适合在大模部署射线场的原因之一。
那么到底是用 V2Ray 还是 Shadowsocks 呢?开心就好。要是觉得 Shadowsocks 好就继续用呗,又不是只能用 V2Ray。对于想用 V2Ray 的朋友,我提个忠告,请你想清楚为什么要用 V2Ray,也请你多试试什么样的配置才是适合自己的,并且知道自己在做什么,为什么要这么做,不要盲目跟随。
我还想谈谈小白的问题。首先声明,有人觉得小白这样的称呼包含轻视等意味,在这里是中性词,仅指某一领域的新手用户。今天 V2Ray 群里又对小白/一键脚本展开了激烈的讨论,这也不是一次两次了。对此我也是很无奈,比如说 V2Ray,一些该注意的东西我都说了,还是有很多人去撞墙。指南里已经明确说了不要用 CentOS 6,要校准时间,别用记事本,不知道这些人是没看还是看不懂汉字。结果出问题了就跑到群里:“各位大佬帮忙看一下,为什么用不了……”问就问,然而问问题还描述不清楚。说新版,谁知道新版是什么版。问时间校准了没,答准了,结果是西 4 区设东 8 区的时间,穿越吗?诸如此数不胜数。说真的,请大伙仔细看文档和教程,并学会思考,问问题所花的时间比看文档要多得多。雨落无声因为这样的无奈最终终止了脚本的开发。同样的原因,我也早想停止配置指南的更新,然而心中总有股不甘,如果哪天真的停更了,也许就是我这股不甘已经磨平了。
有朋友说白话文教程通篇讽刺,我接受这位朋友的批评,向各位说声抱歉。因为我本人所处的特殊环境,积累了不少负面情绪,另外也看不惯部分人的做法,最终有部分情绪无意识地通过教程发泄了,请各位见谅。