从零开始,搭建科学上网工具,我是这么做的。

VPS主机:Amazon Lightsail

操作系统:Ubuntu 20.04 LTS

相关软件:V2ray、Warp

一、VPS主机

选择Amazon的Lightsail类型实例,最低配置为1Core 512M,流量为1TB /月,费用在 $3.5 /月,可无限免费更换公网静态IP。

链接直达:https://lightsail.aws.amazon.com/ls/webapp/home/instances

二、操作系统

考虑到后续众多软件的安装便利性和使用效果,强烈建议安装Debian系的发行版,如DebianUbuntu,笔者选择的是Ubuntu 20.04 LTS

1、关闭系统/软件自动更新

sed -i 's/"[0-9]"/"0"/g' /etc/apt/apt.conf.d/20auto-upgrades
sed -i 's/"[0-9]"/"0"/g' /etc/apt/apt.conf.d/10periodic

systemctl stop apt-daily.timer
systemctl stop apt-daily-upgrade.timer
systemctl stop apt-daily-upgrade.service
systemctl disable apt-daily.service
systemctl disable apt-daily.timer
systemctl disable apt-daily-upgrade.service
systemctl disable apt-daily-upgrade.timer

2、开启系统message日志

echo "*.=info;*.=notice;*.=warn;auth,authpriv.none;cron,daemon.none;mail,news.none          -/var/log/messages" >> /etc/rsyslog.d/50-default.conf
systemctl restart rsyslog.service

3、修改默认时区为东八区

timedatectl set-timezone Asia/Shanghai

三、工具软件

1、v2ray

科学上网的核心工具,功能和原理可参考官网:V2ray

安装脚本:

wget -N https://raw.githubusercontent.com/MinionTim/v2ray/main/install_v2ray.sh && bash install_v2ray.sh

前置准备:需要一个自有域名,且设置DNS解析的A记录到当前VPS服务器

安装选项:选择安装V2ray-VMESS+WS+TLS(推荐)

安装完成后具备的功能:

  • 集成到系统服务项,并开启开机自动启动,手动启停命令为systemctl start/stop v2ray ;

  • 集成并开启Nginx服务、并支持TLS证书,且证书支持自动更新;

    (若无需解锁ChatGPT,则无需关注下述内容,本文内容已完结)

2、Cloudflare WARP

​ Cloudflare WARP是一款由Cloudflare开发的VPN服务,旨在提供更快、更安全的互联网访问。WARP会自动将用户的互联网流量重定向到Cloudflare的全球网络,以加快用户的连接速度并提供更好的安全性。WARP还提供了基于TLS的加密,以确保用户的数据在传输过程中得到保护。

​ WARP基于wireguard协议,使用UDP来传输数据,也就意味着在公网中的高QOS,但是WARP的ip相对比较干净,对外访问网络的出口 IP 被很多网站视为真实用户,可以用来解锁流媒体,谷歌学术等。

​ WARP服务有三个版本:WARP、WARP+、Team(即Zero Trust),其中,WARP为免费版本,但另外二者也有不花钱使用的方式。

2.1 安装warp

Cloudfalre官方页面有详细的安装流程和原理,不赘述。可参考 https://developers.cloudflare.com/warp-client/setting-up/linux

以下主机以在Ubuntu amd64上安装WARP为例,介绍在vps上使用warp服务。

安装WARP客户端

curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
sudo apt update
sudo apt install cloudflare-warp

配置warp-cli

# 注册客户端
warp-cli register

# 设置WARP代理模式
warp-cli set-mode proxy

# 连接WARP,连接成功后,默认会开启SOCKS5代理端口40000
warp-cli connect

# 打开warp always-on
warp-cli enable-always-on

# 查看warp是否连接成功,接口返回的字段中:
# ip即表示落地ip,由CloudFlare提供,也可通过以下命令查看:curl -s ip.sb --socks5 127.0.0.1:40000
# warp即表示当前使用的warp服务类型,取值有:off(未连接)、plus(WARP+用户)、on(免费或Team用户)
curl -s https://www.cloudflare.com/cdn-cgi/trace --socks5 127.0.0.1:40000

# 更改license为自定义账号
warp-cli --accept-tos set-license [WARP-LICENSE]

2.2 配置v2ray分流规则

以笔者的配置文件路径/etc/v2ray/config.json为例.

  • inbounds要启动sniffing

    "sniffing": {
    "enabled": true,
    "destOverride": ["http", "tls"]
    }
  • 修改outboundsrouting,指定的路由域名将从127.0.0.1:40000

    "outbounds": [{
    "tag": "default",
    "protocol": "freedom"
    },
    {
    "tag":"socks_out",
    "protocol": "socks",
    "settings": {
    "servers": [
    {
    "address": "127.0.0.1",
    "port": 40000
    }
    ]
    }
    }
    ],
    "routing": {
    "rules": [
    {
    "type": "field",
    "outboundTag": "socks_out",
    "domain": [
    "example.com",
    "openai.com",
    "hcaptcha.com"
    ]
    },
    {
    "type": "field",
    "outboundTag": "default",
    "network": "udp,tcp"
    }
    ]
    }

2.3 重启v2ray

systemctl restart v2ray

3、Cloudflare WARP续(WARP+ / Team)

在使用warp时,通过warp-cli disconnect + warp-cli connect的操作,可以实现更改CloudFlare IP的效果。但是因为受限于vps所在地区的节点,可供切换的ip数量很有限。理论上来讲WARP+Team账号提供的连接会更稳定高效,以下将介绍这两种账号的使用方案。

3.1 WARP+

当前普通账号通过邀请新用户注册,即可获取WARP+流量,自动升级为WARP+账户,流量用完后即降级为WARP账户。也可以通过脚本刷流量的方法,自动获取WARP+账户,自动刷量的脚本可以参考:

warp-up

warp-plus-cloudflare (当前仓库已不可用)

操作步骤:

  • 获取warp id,打开App右上角菜单 三 –> 高级 –> 诊断 –> ID,复制出来备用。
  • 打开刷流量网页 –> RUN –> 填入上步获取的ID–> 回车。
  • 脚本会自动运行,每18秒就会有1G的warp流量入账。

将当前warp-cli在使用免费WARP账号更新为WARP+账号:

# 更改license为自定义账号
warp-cli --accept-tos set-license [WARP-LICENSE]
# 查看账号类型,应显示为Plus
warp-cli account

获取WARP-LICENSE,打开App右上角菜单 三 –> 账户 –> 按键(Key),复制密钥即可。

3.2 Team / Zero Trust

  • 在CloudFlare上创建Zero Trust团队,需要绑定信用卡支付方法(如Visa),绑定即可无需支付。

  • 设置认证方式:

    1. 依次点击My Team—Devices—connect a device

    2. 设置一个你常用邮箱的后缀,例如@gmail.com

    3. 设置成功后即可在你们需要登录Team的设备上进行登录

  • 设置客户端连接模式(Team账号下客户端默认为WARP模式,如需调整为proxy模式,必须在账号网页后台调整)

    1. Settings – Warp Client – Device settings ,选择Default – Configure,调整相关选项值:

      Mode switch –> Enabled

      Service mode –> Proxy mode

  • warp-cli登录Team账号

    (用你申请zero trust的时候使用的名字,替换下面的team名。)

    1、打开下面的网页:https://你的team名.cloudflareaccess.com/warp,按照步骤验证登录。

    操作最后一步时,在浏览器点击F12,抓取 JWT token,格式如下:

    com.cloudflare.warp://你的team名.cloudflareaccess.com/auth?token=<JWT token>

    抓取这一串URL。

    warp-cli --accept-tos teams-enroll-token "<抓取的URL>"

    出现 Success 即可。注意JWT的exp很短,要尽快抓,如果失败就刷新网页重新抓取。

    2、查看并确认warp连接模式

    # 查看账户类型,应显示为:Team
    warp-cli account
    # 查看配置
    warp-cli settings

    此时看到ModeWarpProxy on port 40000,即表示代理模式设置成功。否则,需要检查Zero Trust后台设置,具体可参考上文“设置客户端连接模式”的内容。

    3、开启连接

    warp-cli connect

四、参考链接

WARP使用教程-1 入门篇

Linux 开启 warp team (ZeroTrust)代理

WARP使用教程

v2ray_install

https://github.com/hausa-han/Cloudflare-WARP-proxy

https://github.com/fscarmen/warp