V2Ray 简单部署
24 Jun 2019
关于 V2Ray
Project V 是一个工具集合,它可以帮助你打造专属的基础通信网络。Project V 的核心工具称为V2Ray,其主要负责网络协议和功能的实现,与其它 Project V 通信。V2Ray 可以单独运行,也可以和其它工具配合,以提供简便的操作流程。
更多的信息和资料请参阅:https://v2ray.com/。
V2Ray 更像个工具平台,支持一系列的协议,当然也支持 Shadowsocks,只不过从最近的稳定性和可用性来看,不推荐使用 ss。本文使用的是 VMess 的协议。
部署
以下操作基于已经部署完 VPS,并使用 root 用户登录的前提下。具体可以参考文章:科学上网完全指南
下载 V2Ray
[root@ss-1 ~]# wget https://install.direct/go.sh
--2019-06-24 07:32:51-- https://install.direct/go.sh
正在解析主机 install.direct (install.direct)... 104.31.178.6, 104.31.179.6, 2606:4700:30::681f:b306, ...
正在连接 install.direct (install.direct)|104.31.178.6|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [text/plain]
正在保存至: “go.sh”
[ <=> ] 13,871 --.-K/s 用时 0s
2019-06-24 07:32:51 (81.7 MB/s) - “go.sh” 已保存 [13871]
然后执行脚本安装 V2Ray:
[root@ss-1 ~]# bash go.sh
Installing V2Ray v4.19.1 on x86_64
Downloading V2Ray: https://github.com/v2ray/v2ray-core/releases/download/v4.19.1/v2ray-linux-64.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 608 0 608 0 0 2026 0 --:--:-- --:--:-- --:--:-- 2033
100 11.2M 100 11.2M 0 0 4894k 0 0:00:02 0:00:02 --:--:-- 7245k
Updating software repo
http://mirror.nodesdirect.com/epel/7/x86_64/repodata/d61cfa966bb2988b5ecc41dc76376385f8d0094d473a3d2bfb26c0416adda7eb-updateinfo.xml.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。
To address this issue please refer to the below wiki article
https://wiki.centos.org/yum-errors
If above article doesn't help to resolve this issue please use https://bugs.centos.org/.
https://mirror.vcu.edu/pub/gnu%2Blinux/epel/7/x86_64/repodata/ac968a1fb8c66bbce1c8f8e5f524fad2163e3dd799f35a02fd138ed8ae0f6797-filelists.sqlite.bz2: [Errno 14] HTTPS Error 404 - Not Found
正在尝试其它镜像。
http://mirror.us.leaseweb.net/epel/7/x86_64/repodata/8b3a849ac7aae91918aba9fb66c2d2532e9bb39a2700c8168eff11ad0b6e7b7e-other.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。
Installing unzip
Extracting V2Ray package to /tmp/v2ray.
Archive: /tmp/v2ray/v2ray.zip
inflating: /tmp/v2ray/config.json
creating: /tmp/v2ray/doc/
inflating: /tmp/v2ray/doc/readme.md
inflating: /tmp/v2ray/geoip.dat
inflating: /tmp/v2ray/geosite.dat
creating: /tmp/v2ray/systemd/
inflating: /tmp/v2ray/systemd/v2ray.service
creating: /tmp/v2ray/systemv/
inflating: /tmp/v2ray/systemv/v2ray
inflating: /tmp/v2ray/v2ctl
extracting: /tmp/v2ray/v2ctl.sig
inflating: /tmp/v2ray/v2ray
extracting: /tmp/v2ray/v2ray.sig
inflating: /tmp/v2ray/vpoint_socks_vmess.json
inflating: /tmp/v2ray/vpoint_vmess_freedom.json
PORT:11234
UUID:62b1262c-8c69-4f04-aa33-b45bf1eb8414
Created symlink from /etc/systemd/system/multi-user.target.wants/v2ray.service to /etc/systemd/system/v2ray.service.
V2Ray v4.19.1 is installed.
以上的 PORT:11234
和 UUID:62b1262c-8c69-4f04-aa33-b45bf1eb8414
,在后面会用到。
启动 V2Ray
systemctl start v2ray
开启防火墙
这个步骤一定不要漏,否则后面配置再久也没用。CentOS 7.0 默认使用的是 firewall 作为防火墙。
开启端口
firewall-cmd –zone=public –add-port=80/tcp –permanent
命令含义:
– zone #作用域 – add-port=80/tcp #添加端口,格式为:端口/通讯协议 – permanent #永久生效,没有此参数重启后失效
[root@ss-1 ~]# firewall-cmd --zone=public --add-port=11234/tcp --permanent
success
以上的 11234
来自于执行脚本安装输出中的 PORT:11234
。然后可以使用 firewall-cmd --list-ports
查看配置。
如果是 CentOS 6.0,则应该是 iptables。
命令:
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 11234 -j ACCEPT
systemctl restart iptables.service #重启防火墙使配置生效
客户端安装
我使用的是 Mac,所以我选用的是 V2RayX。其他平台可以在这里选择下载。
服务器端配置
V2Ray 配置使用 json 格式,相对复杂。当然如果是程序猿,应该会感到亲切的。服务器端默认的配置路径 /etc/v2ray/config.json
。
编辑配置 vi /etc/v2ray/config.json
。
{
"inbounds": [{
"port": 11234,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "62b1262c-8c69-4f04-aa33-b45bf1eb8414",
"level": 1,
"alterId": 64
}
]
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
}
}
必要的解释:
"port": 11234
,就是之前提到的端口。注意,这是服务器的端口。
"id": "62b1262c-8c69-4f04-aa33-b45bf1eb8414",
,这是客户端 id,需要与客户端的配置一致,后面会提到。
"level": 1,
和 "alterId": 64
在后面客户端配置也会用到,配置一致就可以了。
客户端配置
打开 V2RayX 后,查看其菜单,打开 Configure
。
然后按照上面 json 的配置填入相应的配置。
确定后再在菜单里面勾选 Load core
。若前面的步骤没问题,则此时应该可以科学上网了。
排错及优化
这里只提供基本的思路和方法。
V2Ray 是有日志的,方便我们排错。客户端的配置和日志这样查看。
服务端的日志需要先配置下,才能会进行记录。
编辑配置 vi /etc/v2ray/config.json
。
添加配置,注意,不要漏掉英文状态的逗号。
{
"inbounds": [{
"port": 11234,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "62b1262c-8c69-4f04-aa33-b45bf1eb8414",
"level": 1,
"alterId": 64
}
]
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
},
"log": {
"loglevel": "info",
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log"
}
}
这样,便可以通过命令 tail -f /var/log/v2ray/error.log
查看服务器端的日志。我在第一次配置时漏掉了开启防火墙端口,便是通过查看日志之后推测出来的。
另外,我们使用 tcp 协议,可以进行 HttpHeader 的伪装。具体可以参见这里。
关键配置是:
"streamSettings": {
"network": "tcp",
"tcpSettings": {
"header": {
"type": "http",
"response": {
"version": "1.1",
"status": "200",
"reason": "OK",
"headers": {
"Content-Type": ["application/octet-stream", "application/x-msdownload", "text/html", "application/x-shockwave-flash"],
"Transfer-Encoding": ["chunked"],
"Connection": ["keep-alive"],
"Pragma": "no-cache"
}
}
}
}
}
添加在服务器配置的 inbounds
中,与 port
同级。同时在客户端的配置中也要添加,只不过是添加在 outbounds
中。
优化主要是用 BBR。
注意,一定要检查系统版本。以下是在 CentOS 7 下的版本,如果其他版本,重启时系统就起不来了。如果是 CentOS 8,看后面。
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
TCP加速 一键安装管理脚本 [v1.3.1]
-- 就是爱生活 | 94ish.me --
0. 升级脚本
————————————内核管理————————————
1. 安装 BBR/BBR魔改版内核
2. 安装 BBRplus版内核
3. 安装 Lotserver(锐速)内核
————————————加速管理————————————
4. 使用BBR加速
5. 使用BBR魔改版加速
6. 使用暴力BBR魔改版加速(不支持部分系统)
7. 使用BBRplus版加速
8. 使用Lotserver(锐速)加速
————————————杂项管理————————————
9. 卸载全部加速
10. 系统配置优化
11. 退出脚本
————————————————————————————————
当前状态: 已安装 BBR 加速内核 , 未安装加速模块
请输入数字 [0-11]:
选择 1 就好了。安装完成后需要重启 VPS,然后再次启动 V2Ray,systemctl start v2ray
,再运行刚才的脚本 ./tcp.sh
,选择 5,5. 使用BBR魔改版加速
,就完成了。
CentOS 8 默认内核版本为 4.18.x,内核版本高于 4.9 就可以直接开启 BBR,所以 CentOS 8 启用 BBR 非常简单。
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
然后重启一下系统。
sysctl -n net.ipv4.tcp_congestion_control
lsmod | grep bbr
如果输出包含 BBR,说明启用成功。
实际上还有更多优化,但是实在是没时间搞,暂时先这样。