配置文件格式

V2Ray 的配置文件形式如下,客户端和服务器通用一种形式,只是实际的配置不一样。

{
  "log": {},
  "api": {},
  "dns": {},
  "stats": {},
  "routing": {},
  "policy": {},
  "reverse": {},
  "inbounds": [],
  "outbounds": [],
  "transport": {}
}

log: LogObject

日志配置,表示 V2Ray 如何输出日志。

api: ApiObject

内置的远程控置 API,详见远程控制配置

dns: DnsObject

内置的 DNS 服务器,若此项不存在,则默认使用本机的 DNS 设置。详见DNS 配置

routing: RoutingObject

路由配置

policy: PolicyObject

本地策略可进行一些权限相关的配置,详见本地策略

inbounds: [InboundObject]

一个数组,每个元素是一个入站连接配置

outbounds: [OutboundObject]

一个数组,每个元素是一个出站连接配置。列表中的第一个元素作为主出站协议。当路由匹配不存在或没有匹配成功时,流量由主出站协议发出。

transport: TransportObject

用于配置 V2Ray 如何与其它服务器建立和使用网络连接。详见底层传输配置

stats: StatsObject

当此项存在时,开启统计信息

reverse: ReverseObject

反向代理配置。

LogObject

{
  "access": "文件地址",
  "error": "文件地址",
  "loglevel": "warning"
}

access: string

访问日志的文件地址,其值是一个合法的文件地址,如"/tmp/v2ray/_access.log"(Linux)或者"C:\\Temp\\v2ray\\_access.log"(Windows)。当此项不指定或为空值时,表示将日志输出至 stdout。V2Ray 4.20 加入了特殊值none,即关闭access log。

error: string

错误日志的文件地址,其值是一个合法的文件地址,如"/tmp/v2ray/_error.log"(Linux)或者"C:\\Temp\\v2ray\\_error.log"(Windows)。当此项不指定或为空值时,表示将日志输出至 stdout。V2Ray 4.20 加入了特殊值none,即关闭error log(跟loglevel: "none"等价)。

loglevel: "debug" | "info" | "warning" | "error" | "none"

错误日志的级别。默认值为"warning"

  • "debug": 只有开发人员能看懂的信息。同时包含所有"info"内容。
  • "info": V2Ray 在运行时的状态,不影响正常使用。同时包含所有"warning"内容。
  • "warning": V2Ray 遇到了一些问题,通常是外部问题,不影响 V2Ray 的正常运行,但有可能影响用户的体验。同时包含所有"error"内容。
  • "error": V2Ray 遇到了无法正常运行的问题,需要立即解决。
  • "none": 不记录任何内容。

InboundObject

入站连接用于接收从客户端(浏览器或上一级代理服务器)发来的数据,可用的协议请见协议列表

{
  "port": 1080,
  "listen": "127.0.0.1",
  "protocol": "协议名称",
  "settings": {},
  "streamSettings": {},
  "tag": "标识",
  "sniffing": {
    "enabled": false,
    "destOverride": ["http", "tls"]
  },
  "allocate": {
    "strategy": "always",
    "refresh": 5,
    "concurrency": 3
  }
}

port: number | "env:variable" | string

端口。接受的格式如下:

  • 整型数值: 实际的端口号。
  • 环境变量: 以"env:"开头,后面是一个环境变量的名称,如"env:PORT"。V2Ray 会以字符串形式解析这个环境变量。
  • 字符串: 可以是一个数值类型的字符串,如"1234";或者一个数值范围,如"5-10"表示端口 5 到端口 10 这 6 个端口。

当只有一个端口时,V2Ray 会在此端口监听入站连接。当指定了一个端口范围时,取决于allocate设置。

listen: address

监听地址,只允许 IP 地址,默认值为"0.0.0.0",表示接收所有网卡上的连接。除此之外,必须指定一个现有网卡的地址。

protocol: string

连接协议名称,可选的值见协议列表

settings: InboundConfigurationObject

具体的配置内容,视协议不同而不同。详见每个协议中的InboundConfigurationObject

streamSettings: StreamSettingsObject

底层传输配置

tag: string

此入站连接的标识,用于在其它的配置中定位此连接。当其不为空时,其值必须在所有tag中唯一。

sniffing: SniffingObject

尝试探测流量的类型

allocate: AllocateObject

端口分配设置

SniffingObject

{
  "enabled": false,
  "destOverride": ["http", "tls"]
}

enabled: true | false

是否开启流量探测。

destOverride: ["http" | "tls"]

当流量为指定类型时,按其中包括的目标地址重置当前连接的目标。

AllocateObject

{
  "strategy": "always",
  "refresh": 5,
  "concurrency": 3
}

strategy: "always" | "random"

端口分配策略。"always"表示总是分配所有已指定的端口,port中指定了多少个端口,V2Ray 就会监听这些端口。"random"表示随机开放端口,每隔refresh分钟在port范围中随机选取concurrency个端口来监听。

refresh: number

随机端口刷新间隔,单位为分钟。最小值为2,建议值为5。这个属性仅当strategy = random时有效。

concurrency: number

随机端口数量。最小值为1,最大值为port范围的三分之一。建议值为3

OutboundObject

出站连接用于向远程网站或下一级代理服务器发送数据,可用的协议请见协议列表

{
  "sendThrough": "0.0.0.0",
  "protocol": "协议名称",
  "settings": {},
  "tag": "标识",
  "streamSettings": {},
  "proxySettings": {
    "tag": "another-outbound-tag"
  },
  "mux": {}
}

sendThrough: address

用于发送数据的 IP 地址,当主机有多个 IP 地址时有效,默认值为"0.0.0.0"

protocol: string

连接协议名称,可选的值见协议列表

settings: OutboundConfigurationObject

具体的配置内容,视协议不同而不同。详见每个协议中的OutboundConfigurationObject

tag: string

此出站连接的标识,用于在其它的配置中定位此连接。当其值不为空时,必须在所有 tag 中唯一。

streamSettings: StreamSettingsObject

底层传输配置

proxySettings: ProxySettingsObject

出站代理配置。当出站代理生效时,此出站协议的streamSettings将不起作用。

mux: MuxObject

Mux 配置

ProxySettingsObject

{
  "tag": "another-outbound-tag"
}

tag: string

当指定另一个出站协议的标识时,此出站协议发出的数据,将被转发至所指定的出站协议发出。