V2Ray于2015年11月30日正式推出1.0版本,那时候妾刚看到这个项目,功能简陋,只有socks4/5

这周正好放假,闲着没事又去了一趟它github的主页,发现到现在已经发展的这么快了(

果然高三一年会摧残掉人的所有爱好哦(认真脸)

官方主页:https://www.v2ray.com/

Github:https://github.com/v2ray/v2ray-core

废话不多说,下面正式开始。

安装之前,请先确保使用的计算机和UTC时间的时差在两分钟之内,时区无关

举个栗子,现在是UTC的零点,而计算机的时间(假设你在东八区)在7:58-8:02之间就是可以的。

至于安装,Windows下只需要下载可执行文件即可,Linux下官方提供了一件脚本,请以root权限执行

bash <(curl -L -s https://install.direct/go.sh)

根据官方说明:

此脚本会自动安装以下文件:

/usr/bin/v2ray/v2ray:V2Ray 程序;
/etc/v2ray/config.json:配置文件;
此脚本会配置自动运行脚本。自动运行脚本会在系统重启之后,自动运行 V2Ray。目前自动运行脚本只支持带有 Systemd 的系统,以及 Debian / Ubuntu 全系列。

运行脚本位于系统的以下位置:

/lib/systemd/system/v2ray.service: Systemd
/etc/init.d/v2ray: SysV
脚本运行完成后,你需要:

编辑 /etc/v2ray/config.json 文件来配置你需要的代理方式;
运行 service v2ray start 来启动 V2Ray 进程;
之后可以使用 service v2ray start|stop|status|reload|restart|force-reload 控制 V2Ray 的运行。

妾在这里用Debian来作为环境。

假设你在服务器上安装好了这个脚本,并将v2ray的程序下载到了客户端上

服务端设置

运行如下的命令开始服务端设置:

nano /etc/v2ray/config.json

服务端有许多参数可选,根据官方说明,有以下几项:

{
  "log": {}, //日志设置,一般可以不用管
  "dns": {}, /*DNS解析设置,留空使用系统DNS
(国外的vps大多都是8.8.8.8,(对国外的来说)没有污染,此处留空)*/
  "routing": {}, //路由设置,默认配置已经够用了,如果有进一步的要求可以阅读官网说明
  "inbound": {}, //传入设置,如果是服务器着重设置这里
  "outbound": {}, //传出设置,如果是客户端着重设置这里
  "inboundDetour": [], //额外的传入设置
  "outboundDetour": [], //额外的传出设置
  "transport": {} //底层传输设置
}

传入设置:

{
  "port": 1080, //该设置使用的端口
  "listen": "127.0.0.1", //监听IP
  "protocol": "", //协议名称,有多种可选,详见下文
  "settings": {}, //协议详细设置 
  "streamSettings": {}, //传输设置,默认即可
  "allowPassive": false /*是否允许被动模式
比如IMAP这种要求建立连接时期待服务端先发送数据的协议,当此项为false时会被阻止。
只有客户端和服务端都开才有效*/
}

传出设置:

{
  "sendThrough": "0.0.0.0", //多IP的机器可以设置为某一个IP
  "protocol": "协议名称",
  "settings": {},
  "streamSettings": {}
}

基本同传入设置。

可选的协议(该部分给出的代码,请放入传入传出设置的settings部分的大括号中)

Blackhole(传出协议):

嗯对,就是黑洞。

吃掉所有的数据,阻止传出。

{
  "response": {
    "type": "none" //none或http,none直接关闭连接,http会返回一个403
  }
}

Dokodemo-door(传入协议):

是的,任意门。

它可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果(至于怎么发送,取决于传出协议的设置)。

{
  "address": "8.8.8.8", //监听地址
  "port": 53, //端口
  "network": "tcp", //协议,tcp或udp
  "timeout": 0,
  "followRedirect": false //如果设为true,任意门会识别由 iptables 转发而来的数据,并转发到相应的目标地址。
}

目前只支持 Linux。支持 TCP/IPv4 连接和UDP/IPv4 连接,UDP需要 root (CAP_NET_ADMIN) 权限。
Freedom(传出协议)

正常发送数据包,不做任何处理。

{
  "domainStrategy": "AsIs",//操作系统解析域名
  "timeout": 0
}

如果服务器的环境没有干扰,传出用这个就可以了
HTTP(传入协议)

{
  "timeout": 0
}

其实就是个http代理

Shadowsocks(入/出)

作为传入协议配置:

{
  "method": "加密方式",//支持aes-256-cfb aes-128-cfb chacha20 chacha20-ietf四种
  "password": "密码",
  "udp": false,//是否开启udp转发
  "level": 0
}

作为传出协议配置:

{
"servers": [
  {
    "method": "加密方式",// 同样只有四种
    "password": "密码",
    "ota": false //是否开启一次性验证
  }
]
}

Socks(传入协议)

{
  "auth": "noauth", //是否验证,noauth为匿名,设置为password则采用下面数组中的值验证
  "accounts": [  //这是一个数组,如果要多个密码,这样就可以了
 { "user": "Foobar", "pass": "barfoo" },
 { "user": "Foo!", "pass": "Bar!" }
  ],
  "udp": false, //是否开启UDP支持
  "ip": "127.0.0.1", //监听IP
  "timeout": 0
}

VMess(入/出)

作为传入协议配置:

{
  "vnext": [
    {
      "address": "127.0.0.1", //监听IP
      "port": 37192, //端口
      "users": [
        {
          "id": "27848739-7e62-4138-9fd3-098a63964b6b", //这就是用户验证身份用的,必须是UUID,双方必须相同
          "alterId": 10 //双方必须一致
        }
      ]
    }
  ]
}

作为传出协议配置:

 {
      "vnext": [
        {
          "address": "服务器地址",
          "port": , //端口
          "users": [
            {
              "id": "c5201a5e-ede5-41a1-b91c-8e8023df4020", //双方必须一致
              "alterId": 64 //双方必须一致
            }
          ]
        }
      ]
    }

使用这些配置就可以组装出能用的实际配置文件了

几点tips

客户端的配置文件和服务端语法规则等都是相同的
客户端建议配置为socks传入,vmess/shadowsocks传出,服务端如果有Shadowsocks也可配合v2ray,或者采用vmess传入,freedom传出
同样也可以做中转