一、开启BBR
Debian9 自带BBR,所以可以直接通过参数开启BBR加速。打开/etc/sysctl.conf,添加以下2行代码:
说明:作者习惯用windows连接工具登录到vps进行修改,下面链接是WINSCP连接VPS的教程,喜欢的小伙伴可以去看看。
winscp工具使用教程
1 | net.core.default_qdisc=fq |
添加并保存,完成之后别忘了执行以下命令重启:
1 | sysctl -p |
二、安装v2ray
首先打开 vm 实例的 ssh 终端,依次执行以下命令:
1.切换成root用户
1 | sudo -i |
2.查看当前时间
1 | date -R |
3.同步本地时间
1 | cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
4.执行一键安装脚本
1 | bash <(curl -L -s https://install.direct/go.sh) |
终端显示”V2Ray v4.22.1 is installed.”,表示安装完成。
v2ray相关命令:
| 启动: | service v2ray start |
| 停止: | service v2ray stop |
|查看状态: | service v2ray status |
| 重启: | service v2ray restart |
| 重载: |service v2ray reload |
| 强行重载: | service v2ray force-reload |
三、安装Ngnix
安装命令:
1 | apt-get install nginx |
重启Ngnix命令:
1 | systemctl restart nginx |
检查Ngnix状态命令:
1 | systemctl status nginx |
打开浏览器,访问vps的ip地址,出现欢迎页面。
Nginx 配置文件目录: /etc/nginx/sites-available
Nginx 默认网页文件目录/var/www/html 存放着 Nginx 的默认主页(欢迎页)
将/etc/nginx/sites-available 的defaut里面的内容全部删除,复制下面这段放到default中。
访问自己的域名,出现欢迎页面即说明解析成功。
1 | server { |
四、 TLS证书
准备工作
证书的生成有许多方法,这里使用的是比较简单的方法:使用 acme.sh 脚本生成。
注意:针对debian9系统,在执行安装acme.sh脚本之前,需要提前安装必备软件包。不然会有提示”It is recommended to install socat first”等错误信息提示。
必备软件包安装执行命令:
1 | apt-get update && apt-get install curl -y && apt-get install cron -y && apt-get install socat -y |
安装 acme.sh
执行以下命令:
1 | curl https://get.acme.sh | sh |
安装成功后执行 以下命令,以确保脚本所设置的命令别名生效:
1 | source ~/.bashrc |
如果安装报错,那么可能是因为系统缺少 acme.sh 所需要的依赖项,acme.sh 的依赖项主要是 netcat(nc),我们通过以下命令来安装这些依赖项,然后重新安装一遍 acme.sh:(注:debian9在安装过程中没有报错,所以这步不需要执行)
1 | apt-get -y install netcat |
以下的命令会临时监听 80 端口,而80端口被Ngnix服务占用,所以要暂停Ngnix服务:
1 | systemctl stop nginx |
生成证书(注意:脚本中的域名改成自己的)
1 | ~/.acme.sh/acme.sh --issue -d mydomain.me --standalone -k ec-256 |
证书自动生成到 /etc/v2ray/ 文件夹,可以自行查阅。
证书更新(脚本自动)
由于 Let’s Encrypt 的证书有效期只有 3 个月,因此需要 90 天至少要更新一次证书,acme.sh 脚本会每 60 天自动更新证书。所以这步不需要做。(但如果你不放心,也把手动更新的指令提供一下,供参考。)
手动更新 ECC 证书,执行:
1 | ~/.acme.sh/acme.sh --renew -d mydomain.com --force --ecc |
如果是 RSA 证书则执行:
1 | sudo ~/.acme.sh/acme.sh --renew -d mydomain.com --force |
由于本例中将证书生成到 /etc/v2ray/ 文件夹,更新证书之后还得把新证书生成到 /etc/v2ray。
安装证书和密钥(ECC和RSA二选一)
ECC优点:同等长度 ECC 比 RSA 更安全
ECC缺点:兼容性会差一些,Android 4.x 以下和 Windows XP 不支持。
只要您的设备不是非常老的老古董,建议使用 ECC 证书。
ECC 证书将证书和密钥安装到 /etc/v2ray 中执行:(注意:脚本中的域名改成自己的)
1 | $ sudo ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/v2ray/v2ray.crt --keypath /etc/v2ray/v2ray.key --ecc |
RSA 证书执行:(这条列出来供参考,别执行)
1 | $ sudo ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/v2ray/v2ray.crt --keypath /etc/v2ray/v2ray.key |
注意:无论什么情况,密钥(即上面的v2ray.key)都不能泄漏,如果你不幸泄漏了密钥,可以使用 acme.sh 将原证书吊销,再生成新的证书,吊销方法请自行参考 acme.sh 的手册。
五、配置
v2ray服务端
最终v2ray服务端的配置只需要复制下面这一段,把/etc/v2ray下面的config.json里的内容全部删除,用这一段替换。注意有些需要修改成自己的(port、id、alterid、path需要修改)
1 | { |
Ngnix配置
将/etc/nginx/sites-available 的defaut里面的内容全部删除,复制下面这段放到default中。
注意:需要修改location和proxy_pass这两项,和v2ray服务端保持一致。
1 | server { |
注意:配置完成后别忘了重启v2ray和ngnix,上面有重启命令。
六、快乐出国
PC端:
v2ray客户端我们选择v2rayN(win64为例)
下载 v2rayN-Core
下载链接:https://github.com/2dust/v2rayN/releases/latest
然后选择 v2rayN-Core.zip 下载,下载完成后,按如下步骤进行配置:
- 解压。
- 运行v2rayN.exe。
- 双击v2rayN图标,打开图形界面,点击“服务器”–“添加[VMess]服务器”
- 按下图配置客户端,填完后保存。
- 然后在v2ray图标上点击右键,选择开启http代理。大功告成!!!
iOS客户端:
ios客户端有:
Kitsuneb,目前售价$4.99;
Quantumult,目前售价$3.99。
作者用的是Quantumult,某宝上有兑换码,搜关键字:Quantumult 兑换码就出来了,售价2.99人民币,作者用了个某宝红包,最后只花了8毛钱搞定。
注意:App Store账号必须是美区的id。
安卓客户端:
安卓客户端使用v2rayNG:
项目地址 : https://github.com/2dust/v2rayNG/releases
这是工具是免费的。
问题解决
全部过程搭建好以后,频繁报下面这个错误:
1 | v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://我的域名/download/): > dial tcp 这里是ip地址:443: i/o timeout v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://我的域名/download/): > dial tcp: operation was canceled] > v2ray.com/core/common/retry: all retry attempts failed |
我的解决方法:将cloudflare里的cdn关闭就可以了。理论上cdn是加速的,但可能是cloudflare的服务器是国外的导致的。