前言
目前常用的xx协议有:
- shadowsocks
- VMESS
- VLESS(VMESS的改进版)
- Trojan
shadowsocks和VMESS目前使用依旧广泛。VLESS是为了解决“总结近期发现的V2ray的弱点”中提出的问题而重新设计的一种协议,相比VMESS更加轻量、安全、高效。目前VMESS和VLESS最常用的组合为WebSocket+TLS+VMESS/VLESS的形式,这种形式在安全性上可以说和“主打”安全的Trojan基本相同(基本原理相同)。但是前者的配置相对来说更加复杂,而且前者性能相比后者差了很多(单机测试)。
本文主要介绍在同一台机器上配置V2ray+Trojan-Go并且二者共同使用443端口方法。整个网络流量流向图如下
配置基础环境
本文基于ubuntu 18.04进行配置
准备工作
- 一个能正常访问的vps
- 一个域名
- 解决基本依赖问题的能力
安装docker
1 |
|
安装Nginx
使用lnmp一键安装包进行安装
1 | wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 |
申请证书
申请证书前需要先将域名解析到vps的ip上
1 | # 安装包管理工具snap |
V2ray
安装
1 | # 安装主体程序 |
配置
这部分参照终极配置添加了适当的注释说明,强烈建议使用vless+xtls的方式。VMESS已经不是很安全了。实际使用需要去掉注释。
1 | { |
运行
1 | sudo service v2ray start |
Trojan
安装
使用docker的方式部署trojan
1 | git clone https://github.com/p4gefau1t/trojan-go.git && cd trojan-go/ |
配置
参照官方的完整配置文件进行修改说明,实际使用需要去掉注释。
1 | { |
运行
1 | # 注意下面的映射地址需要根据实际情况填写 |
Nginx配置
Nginx配置是实现443端口复用的关键,因此作为单独一部分进行介绍,如果仅使用v2ray或者trojan,那么这部分可以跳过。
直接上配置文件部分,基于程小白博客中的内容进行修改,在此感谢。使用lnmp安装的nginx的配置文件在/usr/local/nginx/conf/
目录下。
修改好配置文件后使用nginx -s reload
命令重新加载配置文件。
1 | user nginx; |
注意事项
上面生成证书时如果已经直接修改了nginx,那这里我们需要去掉server中已经配置好的对443端口的监听。
其他注意事项
证书问题
更新
免费的证书有效期为3个月,因此每三个月需要更新一次,可以使用crontab进行自动调度。
1 | 0 3 * * * certbot renew >> /dev/null |
VMESS+WS+TLS兼容问题
笔者在配置的过程中遇到过始终无法兼容旧版VMESS+WS+TLS的问题。通过实测,感觉应该是服务器v2ray-core与客户端版本不兼容导致的。因此当出现不兼容问题时,建议先升级客户端的v2ray-core版本。