mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-09-28 18:08:01 +03:00
Add: config (wip)
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
---
|
||||
alwaysopen: false
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
# head: <hr/>
|
||||
hide:
|
||||
- toc
|
||||
# post: " \U0001F44B"
|
||||
title: Outbounds 可用协议列表
|
||||
weight: 6
|
||||
---
|
||||
|
||||
{{% alert theme="warning" %}}**这个章节包含了目前所有可用于 Outbounds 的协议及具体配置细节.**{{% /alert %}}
|
||||
|
||||
## 协议列表
|
||||
---
|
||||
>[Blackhole](./blackhole)
|
||||
Blackhole(黑洞)是一个出站数据协议,它会阻碍所有数据的出站,配合 [路由(Routing)](../routing) 一起使用,可以达到禁止访问某些网站的效果。
|
||||
>[DNS](./dns)
|
||||
DNS 是一个出站协议,主要用于拦截和转发 DNS 查询。此出站协议只能接收 DNS 流量(包含基于 UDP 和 TCP 协议的查询),其它类型的流量会导致错误。
|
||||
>[Freedom](./freedom)
|
||||
Freedom 是一个出站协议,可以用来向任意网络发送(正常的) TCP 或 UDP 数据。
|
||||
>[HTTP](./http)
|
||||
HTTP 协议
|
||||
>[Socks](./socks)
|
||||
标准 Socks 协议实现,兼容 [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)、Socks 4a 和 [Socks 5](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)。
|
||||
>[VLESS](./vless)
|
||||
VLESS 是一个无状态的轻量传输协议,可以作为 Xray 客户端和服务器之间的桥梁。
|
||||
>[VMess](./vmess)
|
||||
[VMess](../../develop/protocols/vmess) 是一个加密传输协议,可以作为 Xray 客户端和服务器之间的桥梁。
|
||||
>[Trojan](./trojan)
|
||||
[Trojan](https://trojan-gfw.github.io/trojan/protocol) 协议。
|
||||
>[Shadowsocks](./shadowsocks)
|
||||
[Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) 协议。
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: Blackhole
|
||||
weight: 1
|
||||
---
|
||||
|
||||
Blackhole(黑洞)是一个出站数据协议,它会阻碍所有数据的出站,配合 [路由配置](../../routing) 一起使用,可以达到禁止访问某些网站的效果。
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"response": {
|
||||
"type": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `response`: [ResponseObject](#responseobject)
|
||||
|
||||
配置黑洞的响应数据。
|
||||
|
||||
Blackhole 会在收到待转发数据之后,发送指定的响应数据,然后关闭连接,待转发的数据将被丢弃。</br>
|
||||
如不指定此项,Blackhole 将直接关闭连接。
|
||||
|
||||
|
||||
### ResponseObject
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "none"
|
||||
}
|
||||
```
|
||||
|
||||
> `type`: "http" | "none"
|
||||
|
||||
当 `type` 为 `"none"`(默认值)时,Blackhole 将直接关闭连接。
|
||||
|
||||
当 `type` 为 `"http"` 时,Blackhole 会发回一个简单的 HTTP 403 数据包,然后关闭连接。
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: DNS
|
||||
weight: 2
|
||||
---
|
||||
|
||||
DNS 是一个出站协议,主要用于拦截和转发 DNS 查询。
|
||||
|
||||
此出站协议只能接收 DNS 流量(包含基于 UDP 和 TCP 协议的查询),其它类型的流量会导致错误。
|
||||
|
||||
在处理 DNS 查询时,此出站协议会将 IP 查询(即 A 和 AAAA)转发给内置的 [DNS 服务器](../../dns)。其它类型的查询流量将被转发至它们原本的目标地址。
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"network": "tcp",
|
||||
"address": "1.1.1.1",
|
||||
"port": 53
|
||||
}
|
||||
```
|
||||
|
||||
> `network`: "tcp" | "udp"
|
||||
|
||||
修改 DNS 流量的传输层协议,可选的值有 `"tcp"` 和 `"udp"`。当不指定时,保持来源的传输方式不变。
|
||||
|
||||
> `address`: address
|
||||
|
||||
修改 DNS 服务器地址。当不指定时,保持来源中指定的地址不变。
|
||||
|
||||
> `port`: number
|
||||
|
||||
修改 DNS 服务器端口。当不指定时,保持来源中指定的端口不变。
|
||||
|
||||
|
||||
|
||||
## DNS配置实例
|
||||
---
|
||||
|
||||
{{% badge warning %}}In progress{{% /badge %}}
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: Freedom
|
||||
weight: 3
|
||||
---
|
||||
|
||||
Freedom 是一个出站协议,可以用来向任意网络发送(正常的) TCP 或 UDP 数据。
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"domainStrategy": "AsIs",
|
||||
"redirect": "127.0.0.1:3366",
|
||||
"userLevel": 0
|
||||
}
|
||||
```
|
||||
|
||||
> `domainStrategy`: "AsIs" | "UseIP" | "UseIPv4" | "UseIPv6"
|
||||
|
||||
在目标地址为域名时, 配置相应的值, Freedom 的行为模式如下:
|
||||
- `"AsIs"`: Freedom 通过系统DNS服务器解析获取IP, 向此域名发出连接.
|
||||
- `"UseIP"`、`"UseIPv4"` 和 `"UseIPv6"`: Xray 使用[内置 DNS 服务器](../../base/dns)解析获取IP, 向此域名发出连接.
|
||||
默认值为 `"AsIs"`。
|
||||
|
||||
::: tip
|
||||
**TIP 1**\
|
||||
当使用 `"UseIP"` 模式,并且[出站连接配置](../outbounds#outboundobject) 中指定了 `sendThrough` 时,Freedom 会根据 `sendThrough` 的值自动判断所需的 IP 类型,IPv4 或 IPv6。
|
||||
|
||||
::: tip
|
||||
**TIP 2**\
|
||||
当使用 `"UseIPv4"` 或 `"UseIPv6"` 模式时,Freedom 会只使用对应的 IPv4 或 IPv6 地址。当 `sendThrough` 指定了不匹配的本地地址时,将导致连接失败。
|
||||
|
||||
|
||||
> `redirect`: address_port
|
||||
|
||||
Freedom 会强制将所有数据发送到指定地址(而不是 inbound 指定的地址)。
|
||||
|
||||
其值为一个字符串,样例:`"127.0.0.1:80"`,`":1234"`。</br>
|
||||
|
||||
当地址不指定时,如 `":443"`,Freedom 不会修改原先的目标地址。</br>
|
||||
当端口为 `0` 时,如 `"xray.com: 0"`,Freedom 不会修改原先的端口。
|
||||
|
||||
> `userLevel`: number
|
||||
|
||||
用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
|
||||
|
||||
userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
|
||||
@@ -0,0 +1,99 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: HTTP
|
||||
weight: 4
|
||||
---
|
||||
|
||||
HTTP 协议。
|
||||
|
||||
::: danger
|
||||
**http 协议没有对传输加密,不适宜经公网中传输,更容易成为被人用作攻击的肉鸡。**
|
||||
|
||||
`http inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。
|
||||
|
||||
|
||||
::: tip
|
||||
`http proxy` 只能代理 tcp 协议,udp 系的协议均不能通过。
|
||||
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"servers": [
|
||||
{
|
||||
"address": "192.168.108.1",
|
||||
"port": 3128,
|
||||
"users": [
|
||||
{
|
||||
"user": "my-username",
|
||||
"pass": "my-password"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
::: tip
|
||||
目前 HTTP 协议 outbound 中 `streamSettings` 设置 `security` 和 `tlsSettings` 是生效的。
|
||||
|
||||
|
||||
> `servers`: \[ [ServerObject](#serverobject) \]
|
||||
|
||||
HTTP 服务器列表,其中每一项是一个服务器配置,若配置多个,循环使用 (RoundRobin)。
|
||||
|
||||
|
||||
|
||||
### ServerObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"address": "192.168.108.1",
|
||||
"port": 3128,
|
||||
"users": [
|
||||
{
|
||||
"user": "my-username",
|
||||
"pass": "my-password"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `address`: string
|
||||
|
||||
HTTP 代理服务器地址,必填。
|
||||
|
||||
> `port`: int
|
||||
|
||||
HTTP 代理服务器端口,必填。
|
||||
|
||||
> `user`: \[[AccountObject](#accountobject)\]
|
||||
|
||||
一个数组,数组中每个元素为一个用户帐号。默认值为空。
|
||||
|
||||
|
||||
|
||||
#### AccountObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"user": "my-username",
|
||||
"pass": "my-password"
|
||||
}
|
||||
```
|
||||
|
||||
> `user`: string
|
||||
|
||||
用户名,字符串类型。必填。
|
||||
|
||||
> `pass`: string
|
||||
|
||||
密码,字符串类型。必填。
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: Shadowsocks
|
||||
weight: 9
|
||||
---
|
||||
|
||||
[Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) 协议,兼容大部分其它版本的实现。
|
||||
|
||||
目前兼容性如下:
|
||||
|
||||
- 支持 TCP 和 UDP 数据包转发,其中 UDP 可选择性关闭;
|
||||
- 推荐的加密方式:
|
||||
|
||||
- AES-256-GCM
|
||||
- AES-128-GCM
|
||||
- ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
|
||||
- none 或 plain
|
||||
|
||||
不推荐的加密方式:
|
||||
|
||||
- AES-256-CFB
|
||||
- AES-128-CFB
|
||||
- ChaCha20
|
||||
- ChaCha20-IETF
|
||||
|
||||
::: danger
|
||||
"none" 不加密方式下,服务器端不会验证 "password" 中的密码。为确保安全性, 一般需要加上 TLS 并在传输层使用安全配置,例如 WebSocket 配置较长的 path
|
||||
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"servers": [
|
||||
{
|
||||
"email": "love@xray.com",
|
||||
"address": "127.0.0.1",
|
||||
"port": 1234,
|
||||
"method": "加密方式",
|
||||
"password": "密码",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `servers`: \[[ServerObject](#serverobject)\]
|
||||
|
||||
一个数组,代表一组 Shadowsocks 服务端设置, 其中每一项是一个 [ServerObject](#serverobject)。
|
||||
|
||||
|
||||
|
||||
### ServerObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"email": "love@xray.com",
|
||||
"address": "127.0.0.1",
|
||||
"port": 1234,
|
||||
"method": "加密方式",
|
||||
"password": "密码",
|
||||
"level": 0
|
||||
}
|
||||
```
|
||||
|
||||
> `email`: string
|
||||
|
||||
邮件地址,可选,用于标识用户
|
||||
|
||||
> `address`: address
|
||||
|
||||
Shadowsocks 服务端地址,支持 IPv4、IPv6 和域名。必填。
|
||||
|
||||
> `port`: number
|
||||
|
||||
Shadowsocks 服务端端口。必填。
|
||||
|
||||
> `method`: string
|
||||
|
||||
必填。
|
||||
* 推荐的加密方式:
|
||||
* AES-256-GCM
|
||||
* AES-128-GCM
|
||||
* ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
|
||||
* none 或 plain
|
||||
|
||||
> `password`: string
|
||||
|
||||
必填。任意字符串。
|
||||
|
||||
Shadowsocks 协议不限制密码长度,但短密码会更可能被破解,建议使用 16 字符或更长的密码。
|
||||
|
||||
> `level`: number
|
||||
|
||||
用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
|
||||
|
||||
`level` 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: Socks
|
||||
weight: 5
|
||||
---
|
||||
|
||||
标准 Socks 协议实现,兼容 [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)、Socks 4a 和 [Socks 5](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)。
|
||||
|
||||
::: danger
|
||||
**socks 协议没有对传输加密,不适宜经公网中传输**
|
||||
|
||||
`socks inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。
|
||||
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"servers": [
|
||||
{
|
||||
"address": "127.0.0.1",
|
||||
"port": 1234,
|
||||
"users": [
|
||||
{
|
||||
"user": "test user",
|
||||
"pass": "test pass",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `servers`: \[ [ServerObject](#serverobject) \]
|
||||
|
||||
Socks 服务器列表,其中每一项是一个服务器配置。
|
||||
|
||||
### ServerObject
|
||||
|
||||
```json
|
||||
{
|
||||
"address": "127.0.0.1",
|
||||
"port": 1234,
|
||||
"users": [
|
||||
{
|
||||
"user": "test user",
|
||||
"pass": "test pass",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `address`: address
|
||||
|
||||
服务器地址, 必填
|
||||
|
||||
::: tip
|
||||
仅支持连接到 Socks 5 服务器。
|
||||
|
||||
|
||||
> `port`: number
|
||||
|
||||
服务器端口, 必填
|
||||
|
||||
> `users`: \[ [UserObject](#userobject) \]
|
||||
|
||||
一个数组表示的用户列表,数组中每个元素为一个用户配置。
|
||||
|
||||
当列表不为空时,Socks 客户端会使用用户信息进行认证;如未指定,则不进行认证。
|
||||
|
||||
默认值为空。
|
||||
|
||||
|
||||
|
||||
#### UserObject
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"user": "test user",
|
||||
"pass": "test pass",
|
||||
"level": 0
|
||||
}
|
||||
```
|
||||
|
||||
> `user`: string
|
||||
|
||||
用户名,字符串类型。必填。
|
||||
|
||||
> `pass`: string
|
||||
|
||||
密码,字符串类型。必填。
|
||||
|
||||
> `level`: number
|
||||
|
||||
用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
|
||||
|
||||
userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: Trojan
|
||||
weight: 8
|
||||
---
|
||||
|
||||
[Trojan](https://trojan-gfw.github.io/trojan/protocol) 协议
|
||||
|
||||
::: danger
|
||||
Trojan 被设计工作在正确配置的加密 TLS 隧道
|
||||
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"servers": [
|
||||
{
|
||||
"address": "127.0.0.1",
|
||||
"port": 1234,
|
||||
"password": "password",
|
||||
"email": "love@xray.com",
|
||||
"flow": "xtls-rprx-direct",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `servers`: \[ [ServerObject](#serverobject) \]
|
||||
|
||||
一个数组,其中每一项是一个 [ServerObject](#serverobject)。
|
||||
|
||||
|
||||
|
||||
### ServerObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"address": "127.0.0.1",
|
||||
"port": 1234,
|
||||
"password": "password",
|
||||
"email": "love@xray.com",
|
||||
"flow": "xtls-rprx-direct",
|
||||
"level": 0
|
||||
}
|
||||
```
|
||||
|
||||
> `address`: address
|
||||
|
||||
服务端地址,支持 IPv4、IPv6 和域名。必填。
|
||||
|
||||
> `port`: number
|
||||
|
||||
服务端端口,通常与服务端监听的端口相同。
|
||||
|
||||
> `password`: string
|
||||
|
||||
密码. 必填,任意字符串。
|
||||
|
||||
> `email`: string
|
||||
|
||||
邮件地址,可选,用于标识用户
|
||||
|
||||
> `flow`: string
|
||||
|
||||
流控模式,用于选择 XTLS 的算法。
|
||||
|
||||
目前出站协议中有以下流控模式可选:
|
||||
|
||||
- `xtls-rprx-origin`:最初的流控模式。该模式纪念价值大于实际使用价值
|
||||
- `xtls-rprx-origin-udp443`:同 `xtls-rprx-origin`, 但放行了目标为 443 端口的 UDP 流量
|
||||
- `xtls-rprx-direct`:所有平台皆可使用的典型流控模式
|
||||
- `xtls-rprx-direct-udp443`:同 `xtls-rprx-direct`, 但是放行了目标为 443 端口的 UDP 流量
|
||||
- `xtls-rprx-splice`:Linux 平台下最建议使用的流控模式
|
||||
- `xtls-rprx-splice-udp443`:同 `xtls-rprx-splice`, 但是放行了目标为 443 端口的 UDP 流量
|
||||
|
||||
::: warning
|
||||
**注意**
|
||||
|
||||
当 `flow` 被指定时,还需要将该出站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。
|
||||
|
||||
此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
|
||||
|
||||
|
||||
{{% notice %}}
|
||||
**关于 `xtls-rprx-*-udp443` 流控模式**
|
||||
|
||||
启用了 Xray-core 的 XTLS 时,通往 UDP 443 端口的流量默认会被拦截(一般情况下为 QUIC),这样应用就不会使用 QUIC 而会使用 TLS,XTLS 才会真正生效。实际上,QUIC 本身也不适合被代理,因为 QUIC 自带了 TCP 的功能, 它作为 UDP 流量在通过 Trojan 协议传输时,底层协议为 TCP,就相当于两层 TCP 了。
|
||||
|
||||
若不需要拦截,请在客户端填写 `xtls-rprx-*-udp443`,服务端不变。
|
||||
|
||||
|
||||
::: danger
|
||||
Splice 是 Linux Kernel 提供的函数,系统内核直接转发 TCP,不再经过 Xray 的内存,大大减少了数据拷贝、CPU 上下文切换的次数。
|
||||
|
||||
Splice 模式的的使用限制:
|
||||
|
||||
- Linux 环境
|
||||
- 入站协议为 `Dokodemo door`、`Socks`、`HTTP` 等纯净的 TCP 连接, 或其它使用了 XTLS 的入站协议
|
||||
- 出站协议为 VLESS + XTLS 或 Trojan + XTLS
|
||||
|
||||
此外,使用 Splice 时网速显示会滞后,这是特性,不是 bug。
|
||||
|
||||
需要注意的是,使用 mKCP 协议时不会使用 Splice(是的,虽然没有报错,但实际上根本没用到)。
|
||||
|
||||
|
||||
> `level`: number
|
||||
|
||||
用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
|
||||
|
||||
level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
|
||||
@@ -0,0 +1,160 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: VLESS
|
||||
weight: 6
|
||||
---
|
||||
|
||||
::: danger
|
||||
目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。</br>
|
||||
目前 VLESS 不支持分享。</br>
|
||||
|
||||
|
||||
VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部分,可以作为 Xray 客户端和服务器之间的桥梁。
|
||||
|
||||
与 [VMess](../vmess) 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID,但不需要 alterId。
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"vnext": [
|
||||
{
|
||||
"address": "example.com",
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
||||
"encryption": "none",
|
||||
"flow": "xtls-rprx-direct",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `vnext`: \[ [ServerObject](#serverobject) \]
|
||||
|
||||
一个数组, 表示 VLESS 服务器列表,包含一组指向服务端的配置, 其中每一项是一个服务器配置。
|
||||
|
||||
|
||||
|
||||
### ServerObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"address": "example.com",
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
||||
"encryption": "none",
|
||||
"flow": "xtls-rprx-direct",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `address`: address
|
||||
|
||||
服务端地址,指向服务端,支持域名、IPv4、IPv6。
|
||||
|
||||
> `port`: number
|
||||
|
||||
服务端端口,通常与服务端监听的端口相同。
|
||||
|
||||
> `users`: \[ [UserObject](#userobject) \]
|
||||
|
||||
数组, 一组服务端认可的用户列表, 其中每一项是一个用户配置
|
||||
|
||||
|
||||
|
||||
### UserObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
||||
"encryption": "none",
|
||||
"flow": "xtls-rprx-direct",
|
||||
"level": 0
|
||||
}
|
||||
```
|
||||
|
||||
> `id`: string
|
||||
|
||||
VLESS 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID. </br>
|
||||
自定义字符串和其映射的 UUID 是等价的, 这意味着你将可以这样在配置文件中写id来标识同一用户,即
|
||||
- 写 "id": "我爱🍉老师1314",
|
||||
- 或写 "id": "5783a3e7-e373-51cd-8642-c83782b807c5" (此UUID是 `我爱🍉老师1314` 的 UUID 映射)
|
||||
|
||||
其映射标准在[VLESS UUID 映射标准:将自定义字符串映射为一个 UUIDv5](https://github.com/XTLS/Xray-core/issues/158)
|
||||
|
||||
你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID.</br>
|
||||
也可以使用命令 `xray uuid` 生成随机的UUID.
|
||||
|
||||
> `encryption`: "none"
|
||||
|
||||
需要填 `"none"`,不能留空。
|
||||
|
||||
该要求是为了提醒使用者没有加密,也为了以后出加密方式时,防止使用者填错属性名或填错位置导致裸奔。</br>
|
||||
若未正确设置 encryption 的值,使用 Xray 或 -test 时会收到错误信息。
|
||||
|
||||
> `flow`: string
|
||||
|
||||
流控模式,用于选择 XTLS 的算法。
|
||||
|
||||
目前出站协议中有以下流控模式可选:
|
||||
|
||||
- `xtls-rprx-origin`:最初的流控模式。该模式纪念价值大于实际使用价值
|
||||
- `xtls-rprx-origin-udp443`:同 `xtls-rprx-origin`, 但放行了目标为 443 端口的 UDP 流量
|
||||
- `xtls-rprx-direct`:所有平台皆可使用的典型流控模式
|
||||
- `xtls-rprx-direct-udp443`:同 `xtls-rprx-direct`, 但是放行了目标为 443 端口的 UDP 流量
|
||||
- `xtls-rprx-splice`:Linux 平台下最建议使用的流控模式
|
||||
- `xtls-rprx-splice-udp443`:同 `xtls-rprx-splice`, 但是放行了目标为 443 端口的 UDP 流量
|
||||
|
||||
::: warning
|
||||
**注意**
|
||||
|
||||
当 `flow` 被指定时,还需要将该出站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。
|
||||
|
||||
此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
|
||||
|
||||
|
||||
{{% notice %}}
|
||||
**关于 `xtls-rprx-*-udp443` 流控模式**
|
||||
|
||||
启用了 Xray-core 的 XTLS 时,通往 UDP 443 端口的流量默认会被拦截(一般情况下为 QUIC),这样应用就不会使用 QUIC 而会使用 TLS,XTLS 才会真正生效。实际上,QUIC 本身也不适合被代理,因为 QUIC 自带了 TCP 的功能,它作为 UDP 流量在通过 VLESS 协议传输时,底层协议为 TCP,就相当于两层 TCP 了。
|
||||
|
||||
若不需要拦截,请在客户端填写 `xtls-rprx-*-udp443`,服务端不变。
|
||||
|
||||
|
||||
::: danger
|
||||
Splice 是 Linux Kernel 提供的函数,系统内核直接转发 TCP,不再经过 Xray 的内存,大大减少了数据拷贝、CPU 上下文切换的次数。
|
||||
|
||||
Splice 模式的的使用限制:
|
||||
|
||||
- Linux 环境
|
||||
- 入站协议为 `Dokodemo door`、`Socks`、`HTTP` 等纯净的 TCP 连接, 或其它使用了 XTLS 的入站协议
|
||||
- 出站协议为 VLESS + XTLS 或 Trojan + XTLS
|
||||
|
||||
此外,使用 Splice 时网速显示会滞后,这是特性,不是 bug。
|
||||
|
||||
需要注意的是,使用 mKCP 协议时不会使用 Splice(是的,虽然没有报错,但实际上根本没用到)。
|
||||
|
||||
|
||||
> `level`: number
|
||||
|
||||
用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
|
||||
|
||||
level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
|
||||
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
---
|
||||
date: "2020-12-23T00:00:00.000Z"
|
||||
description: Project X 的文档.
|
||||
title: VMess
|
||||
weight: 7
|
||||
---
|
||||
|
||||
# VMess
|
||||
|
||||
[VMess](../../../develop/protocols/vmess) 是一个加密传输协议,通常作为 Xray 客户端和服务器之间的桥梁。
|
||||
|
||||
::: danger
|
||||
VMess 依赖于系统时间,请确保使用 Xray 的系统 UTC 时间误差在 90 秒之内,时区无关。在 Linux 系统中可以安装`ntp`服务来自动同步系统时间。</br>
|
||||
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"vnext": [
|
||||
{
|
||||
"address": "127.0.0.1",
|
||||
"port": 37192,
|
||||
"users": [
|
||||
{
|
||||
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
||||
"alterId": 0,
|
||||
"security": "auto",
|
||||
"level": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> `vnext`:\[ [ServerObject](#serverobject) \]
|
||||
|
||||
一个数组,包含一组的服务端配置.
|
||||
|
||||
其中每一项是一个服务端配置[ServerObject](#serverobject)。
|
||||
|
||||
|
||||
|
||||
### ServerObject
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"address": "127.0.0.1",
|
||||
"port": 37192,
|
||||
"users": []
|
||||
}
|
||||
```
|
||||
|
||||
> `address`: address
|
||||
|
||||
服务端地址,支持 IP 地址或者域名。
|
||||
|
||||
> `port`: number
|
||||
|
||||
服务端监听的端口号, 必填。
|
||||
|
||||
> `users`: \[ [UserObject](#userobject) \]
|
||||
|
||||
一个数组,代表一组服务端认可的用户.
|
||||
|
||||
其中每一项是一个用户[UserObject](#userobject)。
|
||||
|
||||
|
||||
|
||||
#### UserObject
|
||||
---
|
||||
```json
|
||||
{
|
||||
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
||||
"alterId": 0,
|
||||
"security": "auto",
|
||||
"level": 0
|
||||
}
|
||||
```
|
||||
|
||||
> `id`:string
|
||||
|
||||
Vmess 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID. </br>
|
||||
自定义字符串和其映射的 UUID 是等价的, 这意味着你将可以这样在配置文件中写id来标识同一用户,即
|
||||
- 写 "id": "我爱🍉老师1314",
|
||||
- 或写 "id": "5783a3e7-e373-51cd-8642-c83782b807c5" (此UUID是 `我爱🍉老师1314` 的 UUID 映射)
|
||||
|
||||
其映射标准在[VLESS UUID 映射标准:将自定义字符串映射为一个 UUIDv5](https://github.com/XTLS/Xray-core/issues/158)
|
||||
|
||||
你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID.</br>
|
||||
也可以使用命令 `xray uuid` 生成随机的UUID.
|
||||
|
||||
> `alterId`:number
|
||||
|
||||
为了进一步防止被探测,一个用户可以在主 ID 的基础上,再额外生成多个 ID。这里只需要指定额外的 ID 的数量,推荐值为 0 代表启用 VMessAEAD。
|
||||
最大值 65535。这个值不能超过服务器端所指定的值。
|
||||
|
||||
不指定的话,默认值是 0。
|
||||
|
||||
::: tip
|
||||
客户端 AlterID 设置为 0 代表启用 VMessAEAD ;服务端为自动适配,可同时兼容启用和未开启 VMessAEAD 的客户端。
|
||||
客户端可通过设置环境变量 Xray_VMESS_AEAD_DISABLED=true 强行禁用 VMessAEAD
|
||||
|
||||
|
||||
> `level`: number
|
||||
|
||||
用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
|
||||
|
||||
level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
|
||||
|
||||
> `security`: "aes-128-gcm" | "chacha20-poly1305" | "auto" | "none"
|
||||
|
||||
加密方式,客户端将使用配置的加密方式发送数据,服务器端自动识别,无需配置。
|
||||
|
||||
- `"aes-128-gcm"`:推荐在 PC 上使用
|
||||
- `"chacha20-poly1305"`:推荐在手机端使用
|
||||
- `"auto"`:默认值,自动选择(运行框架为 AMD64、ARM64 或 s390x 时为 aes-128-gcm 加密方式,其他情况则为 Chacha20-Poly1305 加密方式)
|
||||
- `"none"`:不加密
|
||||
|
||||
::: tip
|
||||
推荐使用`"auto"`加密方式,这样可以永久保证安全性和兼容性。
|
||||
Reference in New Issue
Block a user