在VPS上安装v2ray实现网络代理

tutorial
remote
Author

Shan Jin

Published

February 14, 2023

这是一篇关于如何在VPS上安装v2ray实现网络代理的教程,在购买VPS、购买域名、以及如何通过二次代理访问一些审查严格的网站(如google scholar, chatgpt 等)等方面提供一些个人经验。

购买VPS

第一步,我们需要租用一台国外的服务器,即所谓的VPS (Virtual Private Server). 可以自己Google搜索便宜VPS,值得注意的是不同厂商的收费方式有别,有按年计费的,也有按月计费的,建议新手还是选择按小时计费的,如 vultr 的服务器,万一遇到不会处理的报错,直接删服务器重来也是非常方便。vultr主要的优点是可以随时更换新的服务器,比如要更换服务器IP时,只需要新建一个新的服务器,再把旧的删除即可。因为vultr的每一台VPS是单独按小时扣费的,所以更换新的VPS不会导致额外的费用(新建服务器一小时内删除只会扣除1美分)。

vlutr官网 注册新账号之后,它会先让你添加支付方式,可以选择VISA卡或者支付宝。在选择支付宝之后,它会让你先进行充值,这个充值金额是进入到vlutr账户的余额当中的,在创建服务器之后,它会根据服务器的使用时间实时扣钱。如果不放心,可以少充一点,用完了再充。

充值完余额后,进入My Account, 点击左边向导栏的Products, 点击屏幕上的蓝色的➕号即可添加服务器。如果只是用于网络代理,不需要太高的性能,所有的配置都选最低即可。 在配置选项页面做如下选择:在Choose Server 选择 Cloud Computer, 在CPU & Storage Technology 选择 intel Regular Performance.

关于 Server Location,我个人推荐选美国地区的,速度的话西海岸的 LA, Silicon Valley 会比东海岸的 NY 等地稍快。我也试过东京的服务器,速度很慢,当然也可能存在个体差异,可以多尝试。

Server Image 选择操作系统,一般都会有 Ubuntu 的选项, 在大部分地区 Server Size 处的最低选项是5美元/月。值得一提的是,如果在前面的地区处选择 New York,并且操作系统选 Debain,则会有 3.5/月 的选项,这也是我目前在用的。Debian 系统的操作和 Ubuntu 几乎相同,能便宜点何乐而不为呢。注意的是,实际扣费时是按小时扣费的,不会一次性扣5美元或3.5美元。

在部分地区(比如 NY),提供 ipv6 only 的服务器,仅需 2.5美元/月。这个服务器的特点是没有ipv4地址,只能通过ipv6地址连接。感兴趣的可以去如何搜在仅ipv6服务器上安装v2ray的教程。我也成功搭建过,但是没能在这样的服务器上实现cf warp的二次代理,也就是说,无法访问对ip地址要求严格的网站,如 google scholar, openai 等。如果没有访问这类网站的需求,仅ipv6的服务器不失为性价比首选。

Add Auto Backuups 将同步功能关闭,之后的选项保持默认,点Deploy Now 会创建服务器。几秒种之后系统安装完成,可以点进去查看VPS的具体配置,里面有服务器的ip地址和ssh密码。在本地ping VPS的ip地址会有回应。如果 ping 了没有响应,可以稍等几分钟在试试,如果还没有响应,那么很有可能该ip已经被封了,这时先不要删除服务器,先按照上面的流程,重新创建一台服务器,在确认新服务器的ip地址能ping通之后,再删除旧的服务器。如果先删除了旧的,再创建新的,它大概率还会给你的服务器分配刚才的ip地址,就白忙活了。 在等待5-10分钟后,ssh通道建立成功,在本地用 ssh root@<ip address> 可连接到服务器。

注册及解析域名

注册域名的目的,是为了将v2ray伪装成网站,不易被封锁。有很多购买便宜域名的网站,需要警惕的是有些网站提供的域名第一年的费用很便宜,第二年开始会很贵(当然如果不闲麻烦,第二年可以买新的域名)。 我推荐 gen.xyz,在这个网站上申请7位以上纯数字的域名,一年只需0.99美元,最多一次可以买10年,也只要9.9美元。在购买域名之后,在域名管理页面给域名添加 A 类 DNS, 其中IPV4地址填VPS的ip地址,其他保持默认,提交即可。如果它存在其他的 A 类 DNS,删除. 等待5-10分钟(有可能会一个小时以上),解析完成,在本地ping 你创建的域名,它会显示ip地址是你的VPS的地址。

如果不嫌麻烦,可以把域名托管到cloudflare. 在Cloudflare 创建账号并登录后,点击 Add a Site 添加已申请的域名,然后在你购买域名的网站上,进入域名管理页面,选中你的域名,在 Change Nameservers处, 删除已有的servers, 添加cloudflare的servers, 完成托管。此时在cloudflare网站上进入托管的域名,选择左侧向导栏的 DNS, 可以看到网站的A 类DNS的 Proxy status 是打开的,图标是一个黄色云朵。此时ping你的域名是ping不通的。选择Edit, 将 Proxy status 关闭,然后保存,此时 Proxy status 呈一个灰色的云朵。在本地ping 你的域名,确认能ping通。

搭建v2ray服务器

ssh连接到你购买的VPS,按照网上的教程,先安装时间同步组件(这一步不确定是不是必须的,但执行也没有坏处)

apt install ntp -y

然后执行v2ray的一键安装脚本

source <(curl -sL https://multi.netlify.app/v2ray.sh) --zh

安装完成后需要更改配置,一共分三步:

  1. 输入 v2ray 进入v2ray 管理页面,然后依次选择 3.更改配置-5.更改传输方式- 3.WebSocket,然后输入你申请的域名,回车。

  2. 依次选择 3.更改配置-6.更改TLS设置- 1.开启 TLS-Let’s Encrypt 生成证书(准备域名),输入域名,回车。

  3. 依次选择 3.更改配置-11.走CDN(需要域名),回车,接着依次选择1.443-1.Vmess协议-Let’s Encrypt 生成证书(准备域名), 回车。

Note

v2ray的脚本有很多,这里选了其中一个。如果之前安装过其他的,后来又卸载了重新安装这个脚本,会导致v2ray管理页面进入不了,此时可以在命令行输入xray来安装xray命令,此后用xray命令来进步v2ray管理页面。

客户端配置

mac 端推荐使用clashX, 在下载安装后状态栏会有一个小猫咪的图标。

Note

猫咪图标的第一个选项Proxy Mode中的rule是分流代理的意思,即只有规定的网址才走代理。这个规则是在配置文件中书写和更改的。global 是全局代理。

客户端需要自行书写配置文件,可以查找“clash配置文件”的书写教程。如果你有别人写好的模版,那么将模版中的节点信息替换成自己的即可。节点信息的获取方式:ssh连接远程服务器,输入v2ray 进入管理页面,选择 4.查看配置,可以获得v2ray服务器的配置信息。写好配置文件后,点击猫咪头像,选择 Config – Open config folder,将配置文件放入其中。再次点击Clash图标, 选择Config, 选择刚刚添加的配置。再次点击Clash图标,选择 Set as system proxy 即开启代理。

值得注意的是,ssh连接远程服务器,输入v2ray 进入管理页面,选择 4.查看配置,除了返回配置信息,它还会返回一段vmess链接,这段vmess链接实际上包含了v2ray的全部配置信息。有些网站可以将vmess链接直接转换成Clash配置文件,通过url下载。如果不会书写配置文件,可以通过此类网站生成。但会有很大的安全隐患,因为你实际上提供了你的全部的v2ray配置信息。

Warning

若采用通过vmess生成url订阅的方式获得配置文件,为了确保安全性,应立即删除url (Config – Remote config – Manage – Delete). 在VPS上输入v2ray, 选择 3.更改配置-2.更改UUID, 获得新的uuid, 然后点击猫咪头像,选择 Config – Open config folder, 打开相应的配置文件,将uuid改成重新修改过的uuid.

ios 端推荐使用 Shadowrocket(一次性购买),配置方法分两种:

  1. 如果你用远程的配置文件,点击右上角的➕,在 Type 中选择 Subscribe, 在URL一栏填写远端url.

  2. 也可以使用本地的配置文件,将你写好的 config 文件保存在 iCloud 上,点击 Shadowrocket 下方的 Config, 选择 Import From Cloud, 点 Browse, 选择config文件。回到主页,选择节点,打开开关即可连接。手机上的代理也是分流,即不会影响国内网站的访问速度,平时一直开着也没事,使用时还是很方便的。

利用 Cloudflare warp 进行2次代理

按上述方法搭建v2ray,虽然可以科学上网,但是无法访问一些对ip要求严格的网站。比如在访问 Google Scholar时 会遇到403错误

Your client does not have permission to get URL/from this server

解决方法是在VPS上安装 Cloudflare warp, 二次代理到 Cloudflare 的网络来访问 Scholar. 按照官方文档的说明即可安装 warp-cli,如果你系统选的是 ubuntu 23.04,则可以参照这个回答进行安装。 安装完成后,依次输入下述指令开启 warp 代理:

warp-cli register
warp-cli set-mode proxy
warp-cli set-proxy-port 1249
warp-cli connect

最后这个端口号可以自行选择。然后打开v2ray配置文件

vim /etc/v2ray/config.json

修改相应模块如下:(注意socks的端口是上面设置的端口)

 "outbounds": [
    ...
    {
      "protocol": "socks",
      "settings": {
        "version": "5",
        "servers": [
          {
            "address": "127.0.0.1",
            "port": 1249
          }
        ]
      },
       "tag": "scholar"
    }
  ],

"routing": {
    "domainStrategy": "AsIs",
    "rules": [
      ...
      {
        "type": "field",
        "domains": [
          "scholar.google",
          "scholar.googleusercontent",
          "www.cloudflare.com"
          "openai.com"
          "chatgpt.com"
          "ai.com"
        ],
        "outboundTag": "scholar"
      }
    ]
  }

重启 v2ray 后即可正常访问 Google Scholar. 同样的方法可以处理一系列风控严格的网站,比如 chatGPT 的 “Access denied” 问题,以及国际版bing的访问等,只需将相应的域名(chatgpt.com, bing.com)加入到后端配置文件里(旧的chatgpt域名 chat.openai.com 现在会自动跳转到新的域名 chatgpt.com,须要代理新域名才能正常访问)。

一些问题及处理办法

记录一些我在使用过程中遇到的问题及当时的解决办法。

warp 始终连接不上

可以科学上网,但是走二次代理的网站访问不了,登录VPS检查一下是 warp的问题,输入 warp-cli status 始终显示正在连接:

Status update: Connecting
Success

重复查询之后显示

Status update: Disconnected. Reason: Manual Disconnection

可能是因为之前买过warp+后来过期了的原因。尝试了删除账户、重新注册、重复之前的连接流程,问题就解决了。

warp-cli delete
warp-cli register
warp-cli set-mode proxy
warp-cli set-proxy-port 1249
warp-cli connect

新版 warp-cli 命令:

warp-cli registration delete
warp-cli registration new
warp-cli mode proxy
warp-cli proxy port 1249
warp-cli connect