V2Ray 科学上网搭建流程
科学上网(fanqiang)的大体原理都是通过一台在防火墙之外的 VPS 作为媒介,实现国内网络和防火墙之外的网络之间的互通,因此一台不受防火墙骚扰的 VPS 是必备的。而 v2ray 负责的是你的网络和 VPS 之间的网络通信功能。借助 V2ray 你可以实现透过防火墙,自由穿梭于网络。你需要做的是分别在你的设备(手机、PC 等)和 VPS 上分别部署一下 v2ray。
一、购买 VPS
1.1 搬瓦工 VPS 购买
我这里推荐的是搬瓦工平台:https://www.bandwagonhost.net/,里面有完整的购买教程,个人使用的话建议 CN2 入门级即可。
1.2 远程连接 VPS
购买完之后进入服务界面:https://bwh81.net/services,刚刚购买的 VPS 已经在列表里了。包含机房地址,公网 IP 地址,创建日期,到期日期。点击小齿轮,选择 Open KiwiVM 进入 VPS 设置界面。
- Main controls
该界面包含了 VPS 的大部分信息,需要我们关注的有公网 IP、SSH 端口、操作系统。操作系统我使用的是 centOS-7-x86_64-Minimal-1810.iso 这个镜像。
- Root password modification
该菜单可以生成一串 ROOT 密码,点击 Generate and set new root password
按钮,生成一串密码,保存该密码。
- Root shell - basic
这个界面下可以以 Root 管理员身份输入命令,可以查看防火墙是否关闭,SSH 服务是否开启。
systemctl status firewalld
systemctl status sshd
获取到公网 IP、SSH 端口、管理员密码后,可以使用终端工具如 Xshell 远程管理我们的 VPS 了。
二、安装 V2Ray 服务端
2.1 系统内核升级
具体操作:CentOS 7 内核升级
2.2 服务端安装
这里使用开发者提供的一件安装脚本安装
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
卸载脚本
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --remove
2.3 配置文件更改
vim /usr/local/etc/v2ray/config.json
配置文件内容如下:
{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbounds": [{
"port": 11055,
"protocol": "vmess",
"settings": {
"clients": [{
"id": "e364c132-b496-4d51-abdd-a2f4e52f03a5",
"level": 1,
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/tech"
}
}
}
],
"outbounds": [{
"protocol": "freedom"
}
]
}
2.4 启动服务端
systemctl start v2ray && systemctl enable v2ray
查看 11055 端口是否启用
[root@great-wall-1 ~]# netstat -anpt | grep 11055
tcp6 0 0 :::11055 :::* LISTEN 3463/v2ray
2.5 使用 Nginx 代理
可以使用 Nginx 代理域名的方式访问后端 v2ray 服务,这样客户端配置更方便。域名解析文档与免费 SSL 证书获取文档。
- Nginx 安装命令
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
systemctl start nginx.service
systemctl enable nginx.service
- Nginx 配置文件,增加一个 server 段
vim /etc/nginx/nginx.conf
server {
# 监听端口,后面客户端连接需要使用
listen 1010 ssl http2;
# 解析至该服务器的域名
server_name ss.xxx.com;
root /usr/share/nginx/html;
# 域名 SSL 证书,可去公有云厂商免费申请一年的
ssl_certificate "8974354_ss.xxx.com.pem";
ssl_certificate_key "8974354_ss.xxx.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 请求转发的路径
location /tech {
proxy_redirect off;
proxy_pass http://127.0.0.1:11055;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
- 启动 Nginx 服务
systemctl start nginx && systemctl enable nginx
三、安装 V2Ray 客户端
3.1 下载地址
链接:https://pan.baidu.com/s/1OcAopVmV2UU5d1Btkw2C-A?pwd=9ybc
提取码:9ybc
3.2 PC 客户端配置
打开软件,选择服务器 → 添加 Vmess 服务器,配置如下。
开启服务方法:
- 系统代理 → 自动配置系统代理
- 路由 → 绕过大陆
3.3 手机客户端配置
电脑配置没问题后,可以分享连接在手机端打开,可直接配置成功,简单又轻松。
四、Google BBR 开启加速
BBR 开启后可显着提高服务器的吞吐量并减少连接延迟。
echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
验证
[root@great-wall-1 ~]# sudo sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
[root@great-wall-1 ~]# sudo sysctl -n net.ipv4.tcp_congestion_control
bbr
[root@great-wall-1 ~]# lsmod | grep bbr
tcp_bbr 16384 30
五、context deadline exceeded 问题
这个错误提示表示连不上服务端了,有可能是该端口被封,可更换服务端 Nginx 端口解决该问题。
listen 1010 ssl http2; # 更改此处的端口号
更该端口后重启 Nginx 服务
systemctl restart nginx
客户端也别忘了更改连接端口。
如何解决端口被封自动更改端口呢,可以找一台国内的服务器,运行以下检测脚本,mail 服务自行配置。
#!/bin/bash
# 远程服务器的IP地址和SSH端口
REMOTE_SERVER="176.xx.xx.9"
REMOTE_PORT="2xx1"
SOCKET_PORT=`cat /opt/port`
# 远程服务器的用户名和密码
REMOTE_USER="root"
REMOTE_PASS="Uxxxxxd"
# 要修改的 nginx 监听端口
NEW_PORT=`expr $SOCKET_PORT + 1`
# 检测 socket 服务的端口是否被封禁
nc -z -w 2 ss.xxxx.host $SOCKET_PORT > /dev/null
if [ $? -ne 0 ]; then
# 检测服务器是否正常登录
nc -z -w 2 ss.xxxx.host $REMOTE_PORT > /dev/null
if [ $? -ne 0 ]; then
mail -s "VPS状态" 13900009458@163.com < /opt/info
exit 0
fi
# 远程执行的命令
CMD="sed -i 's/listen $SOCKET_PORT/listen $NEW_PORT/g' /etc/nginx/nginx.conf && nginx -s reload"
# 使用ssh连接到远程服务器并执行命令
sshpass -p "$REMOTE_PASS" ssh -o StrictHostKeyChecking=no -p "$REMOTE_PORT" "$REMOTE_USER"@"$REMOTE_SERVER" "$CMD"
# 将更改后的端口记录到 port 文件
echo $NEW_PORT > /opt/port
# 更改后的新端口发送到邮箱
mail -s "最新端口" 13900009458@163.com < /opt/port
fi
定时任务,每半小时检测一次
*/30 * * * * /opt/check.sh
六、通过WARP解锁chatgpt和netflix
chatgpt 和 netflix 都对 IP 地址有限制,一些 vps 即使搭了梯子也不一定能访问。
curl -o /root/install.sh "https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh"
运行脚本
bash install.sh
选择 11.分流工具
选择 1.WARP分流【第三方 IPv4】
选 2.添加域名,多个域名用逗号隔开,比如openai.com,netflix.com