V2Ray 科学上网搭建流程

科学上网(fanqiang)的大体原理都是通过一台在防火墙之外的 VPS 作为媒介,实现国内网络和防火墙之外的网络之间的互通,因此一台不受防火墙骚扰的 VPS 是必备的。而 v2ray 负责的是你的网络和 VPS 之间的网络通信功能。借助 V2ray 你可以实现透过防火墙,自由穿梭于网络。你需要做的是分别在你的设备(手机、PC 等)和 VPS 上分别部署一下 v2ray。

image-20230222160049399

一、购买 VPS

1.1 搬瓦工 VPS 购买

我这里推荐的是搬瓦工平台:https://www.bandwagonhost.net/,里面有完整的购买教程,个人使用的话建议 CN2 入门级即可。

image-20230222162941672

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 服务器,配置如下。

image-20230222174239507

开启服务方法:

  • 系统代理 → 自动配置系统代理
  • 路由 → 绕过大陆

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.分流工具

image-20240903194950253

选择 1.WARP分流【第三方 IPv4】

image-20240903195114238

2.添加域名,多个域名用逗号隔开,比如openai.com,netflix.com

image-20240903195306831