动态端口

通常情况下,V2Ray 的服务器端使用一个固定的端口来接收客户端的数据。这个端口由配置文件中的 port 属性指定。如果同一端口通信时间过长,或流量过大,则有可能被服务商限速。于是 V2Ray 提供了一个功能来动态调整通信端口。

在新的配置中,V2Ray 服务器端依然使用一个主端口(即上文的 port)接收请求,但可以配置一个绕路(detour)的特性。配置之后,服务器会主动告诉客户端,使用一个新的端口 X 来通信,X 是一个范围(可配置)内随机选取的值。此端口的有效期为 Y 分钟,客户端和服务器都会遵守这个时间,到期之后,客户端会继续向服务器请求新的端口来通信。以此循环。

要启用动态端口,需要在现有的服务器配置文件中进行一些修改,主要有以下两项。客户端配置不用更改,客户端会自动接收服务器的配置。

一、开启一个动态监听的 inboundDetour:

{
  "protocol": "vmess",
  "port": "10000-20000", // 端口范围
  "tag": "detour",       // 此传入协议的标签,在第二部分中会用到
  "settings": {
    "default": {
      "level": 1,
      "alterId": 32
    }
  },
  "allocate": {            // 分配模式
    "strategy": "random",  // 随机开启
    "concurrency": 2,      // 同时开放两个端口
    "refresh": 5           // 每五分钟刷新一次
  }
}

上述配置的具体细节可以在配置文件中找到,需要注意的是,1) 如果 VPS 有防火墙的话,整个端口范围要在防火墙中被允许,V2Ray 没有能力操作 VPS 的防火墙;2) 同时开放的端口数最大值是端口范围的一半。

二、在主传入协议中指定绕路到上述的 inboundDetour:

"inbound": {
  "port": 8888,
  "protocol": "vmess",
  "settings": {
    "clients": [         // clients 部分和原有配置一样
      {
        "id": "d17a1af7-efa5-42ca-b7e9-6a35282d737f",
        "level": 1,
        "alterId": 10,
        "email": "love@v2ray.com"
      }
    ],
    "detour": {        // 绕路设置
      "to": "detour"   // 指定绕路协议的标签,要和“一”中的标签一样
    }
  }
}

配置的具体细节参见协议列表

在约定绕路的端口时,服务器会根据当前用户的 Email 地址,在绕路协议中以同一个 Email 地址创建新的用户,以便区分不同用户的流量。若绕路协议中已经配置了同一个 Email 的用户,则使用该用户;否则自动创建一个新用户。