手动安装V2ray

Page content

在Ubuntu 20.4 上手动安装V2ray,因为发现自动安装脚本安装的版本不能正常工作;手动安装了稳定版本的v4.34。

校准时区

> timedatectl list-timezones | grep Shanghai
Asia/Shanghai

> sudo timedatectl set-timezone Asia/Shanghai

> date -R
Sat, 26 Jun 2021 18:03:36 +0800

对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。 所以系统时间一定要正确,只要保证时间误差在 90 秒 之内就没问题。

常规更新

sudo apt update && sudo apt upgrade && sudo apt autoremove
sudo apt install curl openssl

开启BBR

sudo bash -c "echo 'net.core.default_qdisc=fq' >> /etc/sysctl.conf"
sudo bash -c "echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.conf"
# 重载生效
sudo sysctl --system

# 检查 - sysctl 命令验证配置是否生效
sudo sysctl net.core.default_qdisc   # 结果是:net.core.default_qdisc = fq
sudo sysctl net.ipv4.tcp_congestion_control  # 结果是:net.ipv4.tcp_congestion_control = bbr
lsmod | grep bbr  # 可以看到 tcp_bbr

下载和解压

sudo apt update
sudo apt install wget unzip
wget https://github.com/v2fly/v2ray-core/releases/download/v4.34.0/v2ray-linux-64.zip
mkdir v2ray
unzip -d v2ray v2ray-linux-64.zip

V2Ray的程序目录文件详情情况:

  • 其中v2ray和v2ctl是V2Ray的主程序和控制程序
  • geoip.dat和geosite.dat是程序所需要数据文件
  • systemd和systemv两个目录中包含了用于生成服务的文件
  • vpoint_vmess_freedom.json, vpoint_socks_vmess.json是配置文件

复制必须的程序到安装目录

准备安装在/usr/local/v2ray下,先创建目录,然后复制文件

cd v2ray
sudo mkdir /usr/local/v2ray
sudo cp v2* /usr/local/v2ray/
sudo cp geo* /usr/local/v2ray/

sudo mkdir /usr/local/etc/v2ray/
sudo cp vpoint_vmess_freedom.json /usr/local/etc/v2ray/config.json

最后一条命令是将当前的vpoint_vmess_freedom.json配置文件复制到指定位置,并修改其为config.json

由于V2Ray是不区分服务端和客户端的,同一个程序可以配置成服务器也可以配置成客户端。 程序目录中的vpoint_vmess_freedom.json一般用于配置服务器,而vpoint_socks_vmess.json用于配置成为客户端。

设置systemctl

sudo cp v2ray.service /usr/lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable v2ray
sudo systemctl start v2ray

Linux命令生成uuid

cat /proc/sys/kernel/random/uuid

配置多用户

自行搭建好v2ray科学上网环境后,可以设置一个不同的端口或者id再分享。

v2ray一键脚本 运行完后,会输出配置文件路径,默认是 /etc/v2ray/config.json,其内容类似这样:

{
  "log": {
    "loglevel": "info",
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log"
  },
  "inbounds": [{
    "port": 8888,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "6be0aa25-xxxx-xxxx-xxxx-75cd3485021f",
          "level": 1,
          "alterId": 53
        }
      ]
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "blocked"
      }
    ]
  }
}

v2ray多用户分成两种:同端口不同id,不同端口不同id。v2ray两种类型都支持,接下来分别做介绍。

同端口不同id

这是最简单的配置多用户方式。方法是编辑 /etc/v2ray/config.json 文件,在”clients“一节中增加新增用户配置。

例如在上面配置基础上增加一个用户:

{
  "log": {
    "loglevel": "info",
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log"
  },
  "inbounds": [{
    "port": 8888,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "12345625-xxxx-xxxx-xxxx-75cd3485021f",
          "level": 1,
          "alterId": 53
        },
        {
          "id": "12345625-xxxx-xxxx-xxxx-75cd3485021f",
          "level": 1,
          "alterId": 63 # 建议50-150之间的一个整数
        }
      ]
    }
  }],
# 下面的内容保持不变

注意:“#”和后面的东西都不能出现在配置文件中,上面只是为了解释说明。

编辑好文件后,先检查修改后的配置是否有语法错误 cat /etc/v2ray/config.json | python -m json.tool, 然后重启 v2ray:service v2ray restart

如果命令失败,或者 netstat -nltp | grep v2ray 输出为空,说明配置文件有错误,请仔细检查,改好后再重启。

接下来就可以用新的id和alterId配置客户端,其余信息保持不变。

不同端口不同id

如果希望端口也不一样,请按照如下步骤做:

首先编辑 /etc/v2ray/config.json 文件,按照”inbounds“格式新增入口和用户。例如新增一个端口和用户后,配置文件变成:

{
  "log": {
    "loglevel": "info",
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log"
  },
  "inbounds": [{
    "port": 8888,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "12345625-xxxx-xxxx-xxxx-75cd3485021f",
          "level": 1,
          "alterId": 53
        }
      ]
    }
  }, # 逗号不能省,原来这里是"}],"
  # 以下是新增的配置
  {
    "port": 8889, # 端口是1000-65535之间的一个整数
    "protocol": "vmess", # 也可以改成其他协议,如果你知道怎么配置的话
    "settings": {
      "clients": [
        {
          "id": "12345625-xxxx-xxxx-xxxx-75cd3485021f", # id可以用 /usr/bin/v2ray/v2ctl uuid生成
          "level": 1, # 0或1都可以
          "alterId": 57 # 建议50-150之间的一个整数
        }
      ]
    }
  }],
 # 新增内容结束
 # 下面的内容保持不变

注意:“#”和后面的东西都不能出现在配置文件中,上面只是为了解释说明。

编辑好文件后,重启 v2ray:service v2ray restart。 如果命令失败,或者 netstat -nltp | grep v2ray 输出为空,说明配置文件有错误,请仔细检查,改好后再重启。