Stream

{
  "transport":"tcp",
  "transportSettings":{},
  "security":"none",
  "securitySettings":{}
}

transport: name of <transport>

传输层协议名称。

transportSettings: settings of <transport>

传输层协议设置。

security: name of <security>

securitySettings: settings of <security>

socketSettings: SocketConfigObject

支持的传输流协议

TLS

security.tls

serverName: string

指定服务器端证书的域名,在连接由 IP 建立时有用。当目标连接由域名指定时,比如在 Socks 入站时接收到了域名,或者由 Sniffing 功能探测出了域名,这个域名会自动用于 serverName,无须手动配置。

nextProtocol : [string]

一个字符串数组,指定了 TLS 握手时指定的 ALPN 数值。默认值为 ["h2", "http/1.1"]

disableSystemRoot: true | false

是否禁用操作系统自带的 CA 证书。默认值为 false。当值为 true 时,V2Ray 只会使用 certificates 中指定的证书进行 TLS 握手。当值为 false 时,V2Ray 只会使用操作系统自带的 CA 证书进行 TLS 握手。

pinnedPeerCertificateChainSha256 : [string]

使用 Base64 标准编码格式表示的远程服务器的证书链的SHA256散列值。在设置后,远程服务器的证书链的散列值必须为列表中的数值之一。

在连接因为此策略失败时,会展示此证书链散列。不建议使用这种方式获得证书链散列值,因为在这种情况下您没有机会验证此时服务器提供的证书是否为真实证书。

certificate: [CertificateObject]

CertificateObject

usage : string

证书用途,默认值为 "ENCIPHERMENT"

  • "ENCIPHERMENT": 证书用于 TLS 认证和加密。
  • "AUTHORITY_VERIFY": 证书用于验证远端 TLS 的证书。当使用此项时,当前证书必须为 CA 证书。
  • "AUTHORITY_VERIFY_CLIENT": 用于验证客户端身份的证书颁发机构证书。当使用此项时,当前证书必须为 CA 证书。
  • "AUTHORITY_ISSUE": 证书用于签发其它证书。当使用此项时,当前证书必须为 CA 证书。

TIP

当有新的客户端请求时,假设所指定的 serverName"v2ray.com",V2Ray 会先从证书列表中寻找可用于 "v2ray.com" 的证书,如果没有找到,则使用任一 usage"issue" 的证书签发一个适用于 "v2ray.com" 的证书,有效期为一小时。并将新的证书加入证书列表,以供后续使用。

Certificate: string

PEM 格式的证书。

Key: string

PEM 格式的私钥。

certificateFile: string

证书文件路径,如使用 OpenSSL 生成,后缀名为 .crt。

keyFile: string

密钥文件路径,如使用 OpenSSL 生成,后缀名为 .key。目前暂不支持需要密码的 key 文件。

uTLS

  • 名称: utls
  • 类型: 安全协议
  • ID: security.utls

uTLS 是一个修改版本的 TLS 实现。 这个项目通过模仿常用 TLS 实现的客户端握手包以期减少 Go 语言程序的 TLS 客户端特征。 (v5.2.0+)

此设置只在部分传输方式的客户端受到支持。如果您在尚不支持的部分使用了它,那么程序将会异常退出。

您可以在以下传输方式中使用 uTLS:

  • TCP
  • WebSocket

当您在部分传输方式中使用 uTLS 时,应用层协议协商的内容将被覆盖以便使该传输方式可以正常运作。这会导致客户端握手包的指纹和被模仿的指纹有些许不同。

tlsConfig: TLSConfig

嵌入的 TLS 设置,只有部分内容会被应用到 uTLS.

受到支持的选项:

  • 证书办法机构设置 (allowInsecure 会被忽略)

imitate: string

想要模拟的 TLS 客户端握手包指纹。

  • randomized
  • randomizedalpn
  • randomizednoalpn
  • firefox_auto
  • firefox_55
  • firefox_56
  • firefox_63
  • firefox_65
  • firefox_99
  • firefox_102
  • firefox_105
  • chrome_auto
  • chrome_58
  • chrome_62
  • chrome_70
  • chrome_72
  • chrome_83
  • chrome_87
  • chrome_96
  • chrome_100
  • chrome_102
  • ios_auto
  • ios_11_1
  • ios_12_1
  • ios_13
  • ios_14
  • android_11_okhttp
  • edge_auto
  • edge_85
  • edge_106
  • safari_auto
  • safari_16_0
  • 360_auto
  • 360_7_5
  • 360_11_0
  • qq_auto
  • qq_11_1

noSNI: bool

不发送服务器名称指示。可能会导致连接异常。

forceAlpn : "TRANSPORT_PREFERENCE_TAKE_PRIORITY" | "NO_ALPN" | "UTLS_PRESET"

控制连接的应用层协议协商 (ALPN) 扩展的数据来源。可以通过此设置来让连接的特征和被模拟的程序更相近。如果设置的内容不合适会导致连接失败。(v5.3.0+)

  • TRANSPORT_PREFERENCE_TAKE_PRIORITY : 默认值。优先使用用户在 TLS 设置中手动制定了 APLN 的值,否则使用传输协议的默认 ALPN 设置。
  • NO_ALPN : 不发送 ALPN TLS 扩展
  • UTLS_PRESET: 以 uTLS 的特征模板中的 ALPN 设置为准。
{
    "mark": 0,
    "tcpFastOpen": false,
    "tproxy": "off",
    "tcpKeepAliveInterval": 0
}

SocketConfigObject

mark: number

一个整数。当其值非零时,在出站连接上标记 SO_MARK。

  • 仅适用于 Linux 系统。
  • 需要 CAP_NET_ADMIN 权限。

tcpFastOpen: true | false

是否启用 TCP Fast Openopen in new window。当其值为 true 时,强制开启 TFO;当其值为 false 时,强制关闭 TFO;当此项不存在时,使用系统默认设置。可用于入站出站连接。

  • 仅在以下版本(或更新版本)的操作系统中可用:
    • Windows 10 (1604)
    • Mac OS 10.11 / iOS 9
    • Linux 3.16:系统已默认开启,无需配置。
    • FreeBSD 10.3

tcpFastOpenQueueLength: number 入站连接的 TCP Fast Openopen in new window 队列长度,默认值为 4096,仅在 Linux 中可用。

tproxy: "redirect" | "tproxy" | "off"

是否开启透明代理(仅适用于 Linux)。

  • "redirect":使用 Redirect 模式的透明代理。支持 TCP 和 UDP 连接。
  • "tproxy":使用 TProxy 模式的透明代理。支持 TCP 和 UDP 连接。
  • "off":关闭透明代理。

透明代理需要 Root 或 CAP_NET_ADMIN 权限。

TIP

Dokodemo-door 中指定了 followRedirect,且 sockopt.tproxy 为空时,sockopt.tproxy 的值会被设为 "redirect"

tcpKeepAliveInterval: number

TCP 保持活跃的数据包的发送间隔,以秒为单位(仅适用于 Linux)。

0 代表保持默认值。

bindToDevice: string

将连接绑定到指定的网络设备(Linux: v5.0.6+, Windows/Darwin: v5.2.0+)。