自建V2Ray+TLS翻墙配置方法
bannedbook修订历史
2020-02-26 bannedbook:为保护主域名免被封,增加子域名配置方式。
2020-02-26 bannedbook:增加个人使用体验,增加域名注册推荐,启用Google BBR加速推荐。
技术上,目前v2ray比Shadowsocks翻墙效果更好,据网络传言,2019年中期开始Shadowsocks能够被墙自动探测阻断,因此,目前自建V2ray翻墙 就成了更加成熟和稳定的翻墙方案。
以个人实际感受而言,近期使用Shadowsocks翻墙即使是使用了新版的AEAD加密模式,也是一两周时间会被封端口,不得不定期更换Shadowsocks服务器监听端口。而同时在使用的v2ray(仅仅默认配置,未加TLS配置)则一直坚挺。而V2Ray+TLS翻墙模式,则比V2Ray默认配置更加安全稳定,翻墙效果更好,不易被检测,因此推荐愿意动手折腾的网友不妨折腾一下。
线路上,最少用cn2,如果预算允许,最好上cn2 gia,推荐搬瓦工VPS,可选cn2或cn2 gia线路。在2017年时,普通的cn2线路就可流畅看1080P youtube,但到2019、2020年,cn2线路则经常卡顿。 在操作系统上,可加入最新的bbr技术,详见: 最简单的Google BBR 一键加速VPS教程。BBR技术,可以更好地抢占带宽,从而达到同样带宽,速度更快的目的。
本文以自建V2ray服务器简明教程 为基础,介绍更加安全可靠的V2Ray+TLS翻墙配置方法。
V2ray 从 v1.19 起引入了 TLS,TLS 中文译名是传输层安全,如果你没听说过,请 Google 了解一下。以下给出些我认为介绍较好的文章链接:
注册一个域名
如果已经注册有域名了可以跳过。 TLS 需要一个域名,域名有免费的和有付费的,如果你不舍得为一个域名每年花点钱,用个免费域名也可以,但总体来说付费的会优于免费的,我看到有网友因为用了免费域名,结果出现域名解析故障而翻墙失败。所以,还是推荐买个便宜点的域名。关于域名注册商,推荐namesilo ,这家域名商有不少便宜的域名选择,比如.xyz域名,一年才0.99美元,很便宜,而且可选择免费域名隐私保护。为了方便,在本文中我就忽略如何注册购买域名了。关于如何获取域名,具体可搜索相关文章教程。
注册好域名之后务必记得添加一个 A 记录指向你的 VPS!
另外,为了避免主域名被封锁,推荐先使用子域名,所以预备一些子域名也 A 记录指向你的 VPS! 比如: v01.mydomain.me v02.mydomain.me v03.mydomain.me v04.mydomain.me v05.mydomain.me v06.mydomain.me v07.mydomain.me v08.mydomain.me v09.mydomain.me
以下假设注册的域名为 mydomain.me,请将之替换成自己的域名。
证书生成
TLS 是证书认证机制,所以使用 TLS 需要证书,证书也有免费付费的,同样的这里使用免费证书,证书认证机构为 Let's Encrypt。 证书的生成有许多方法,这里使用的是比较简单的方法:使用 acme.sh 脚本生成,本部分说明部分内容参考于acme.sh README。
证书有两种,一种是 ECC 证书(内置公钥是 ECDSA 公钥),一种是 RSA 证书(内置 RSA 公钥)。简单来说,同等长度 ECC 比 RSA 更安全,也就是说在具有同样安全性的情况下,ECC 的密钥长度比 RSA 短得多(加密解密会更快)。但问题是 ECC 的兼容性会差一些,Android 4.x 以下和 Windows XP 不支持。只要您的设备不是非常老的老古董,建议使用 ECC 证书。
以下将给出这两类证书的生成方法,请大家根据自身的情况自行选择其中一种证书类型。
证书生成只需在服务器上操作。
安装 acme.sh
执行以下命令,acme.sh 会安装到 ~/.acme.sh 目录下。
安装成功后执行 source ~/.bashrc 以确保脚本所设置的命令别名生效。
如果安装报错,那么可能是因为系统缺少 acme.sh 所需要的依赖项,acme.sh 的依赖项主要是 netcat(nc),我们通过以下命令来安装这些依赖项,然后重新安装一遍 acme.sh:
使用 acme.sh 生成证书
如果报错 Please install socat tools first.
如果生成证书时报错 ......Please install socat tools first. , 请先执行以下命令:
apt-get install socat or yum install socat
主域名证书生成
此步骤仅仅生产主域名的证书,为了防止主域名被封锁,我们可以同时生成一些子域名证书,使用的时候先使用子域名,如果子域名被封了,可以再换一个子域名来用,不用重新申请新的域名。而如果直接使用主域名,主域名一旦被封,就只能申请新域名了。如果想同时生成一些子域名,请跳过此步骤,直接看后文:同时生成多个子域名证书。
执行以下命令生成主域名证书: 以下的命令会临时监听 80 端口,请确保执行该命令前 80 端口没有使用
-k 表示密钥长度,后面的值可以是 ec-256 、ec-384、2048、3072、4096、8192,带有 ec 表示生成的是 ECC 证书,没有则是 RSA 证书。在安全性上 256 位的 ECC 证书等同于 3072 位的 RSA 证书。
同时生成多个子域名证书
执行以下命令生成多个子域名证书: 以下的命令会临时监听 80 端口,请确保执行该命令前 80 端口没有使用,并确保所有子域名的A记录到VPS的ip地址。
证书更新
由于 Let's Encrypt 的证书有效期只有 3 个月,因此需要 90 天至少要更新一次证书,acme.sh 脚本会每 60 天自动更新证书。也可以手动更新。
手动更新 ECC 证书,执行:
或者同时更新子域名,执行:
如果是 RSA 证书则执行:
或者同时更新子域名,执行:
由于本例中将证书生成到 /etc/v2ray/ 文件夹,更新证书之后还得把新证书生成到 /etc/v2ray。
安装证书和密钥
ECC 证书
将证书和密钥安装到 /etc/v2ray 中:
或者同时将子域名证书和密钥安装到 /etc/v2ray 中:
RSA 证书
或者同时将子域名证书和密钥安装到 /etc/v2ray 中:
注意:无论什么情况,密钥(即上面的v2ray.key)都不能泄漏,如果你不幸泄漏了密钥,可以使用 acme.sh 将原证书吊销,再生成新的证书,吊销方法请自行参考 acme.sh 的手册
配置 V2Ray
服务器
客户端
验证
一般来说,按照以上步骤操作完成,V2Ray 客户端能够正常联网说明 TLS 已经成功启用。但要是有个可靠的方法来验证是否正常开启 TLS 无疑更令人放心。 验证的方法有很多,我仅介绍一种小白化一点的,便是 Qualys SSL Labs's SSL Server Test。
注意:使用 Qualys SSL Labs's SSL Server Test 要求使用 443 端口,意味着你服务器配置的 inbound.port 应当是 443
打开 Qualys SSL Labs's SSL Server Test,在 Hostname 中输入你的域名,点提交,过一会结果就出来了。 
这是对于你的 TLS/SSL 的一个总体评分,我这里评分为 A,看来还不错。有这样的界面算是成功了。
这是关于证书的信息。从图中可以看出,我的这个证书有效期是从 2016 年 12 月 27 号到 2017 年的 3 月 27 号,密钥是 256 位的 ECC,证书签发机构是 Let's Encrypt,重要的是最后一行,Trusted 为 Yes,表明我这个证书可信。
温馨提醒
V2Ray 的 TLS 不是伪装或混淆,这是完整、真正的 TLS。因此才需要域名和证书。下一篇我们将要介绍的 V2ray WS(WebSocket) 也不是伪装。因此,V2ray搭建好后还可以套CDN【详见:V2Ray之TLS+WebSocket+Nginx+CDN配置方法】,套CDN不是一个必须的步骤,但套CDN可以有效保护IP,甚至被墙的ip也能复活,如果套国内CDN,据说速度可以飞起来。
本文fork修订自 ToutyRater 的教程,感谢ToutyRater。
Last updated
Was this helpful?