mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-09-26 16:48:32 +03:00
Add: config (wip)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 环境变量
|
||||
|
||||
Xray 提供以下环境变量以供修改 Xray 的一些底层配置。
|
||||
|
||||
## XTLS 信息显示
|
||||
|
||||
### VLESS
|
||||
|
||||
- 名称:`xray.vless.xtls.show` 或 `XRAY_VLESS_XTLS_SHOW`。
|
||||
- 默认值:`""`。
|
||||
|
||||
使用 VLESS 协议时,设置此环境变量为 true 时, 会在终端或日志中输出 XTLS 的相关信息.
|
||||
|
||||
::: tip
|
||||
可打开此环境变量并根据是否有输出 XTLS 相关信息, 来确定 XTLS 是否成功被应用.
|
||||
:::
|
||||
|
||||
### TROJAN
|
||||
|
||||
- 名称:`xray.trojan.xtls.show` 或 `XRAY_TROJAN_XTLS_SHOW`。
|
||||
- 默认值:`""`。
|
||||
|
||||
使用 trojan 协议时, 设置此环境变量为 true 时, 会在终端或日志中输出 XTLS 的相关信息.
|
||||
|
||||
::: tip
|
||||
可打开此环境变量并根据是否有输出 XTLS 相关信息, 来确定 XTLS 是否成功被应用.
|
||||
:::
|
||||
|
||||
|
||||
## 资源文件路径
|
||||
|
||||
- 名称:`xray.location.asset` 或 `XRAY_LOCATION_ASSET`。
|
||||
- 默认值:和 Xray 文件同路径。
|
||||
|
||||
这个环境变量指定了一个文件夹位置,这个文件夹应当包含 geoip.dat 和 geosite.dat 文件。
|
||||
|
||||
## 配置文件位置
|
||||
|
||||
- 名称:`xray.location.config` 或 `XRAY_LOCATION_CONFIG`。
|
||||
- 默认值:和 Xray 文件同路径。
|
||||
|
||||
这个环境变量指定了一个文件夹位置,这个文件夹应当包含 config.json 文件。
|
||||
|
||||
## 多配置目录
|
||||
|
||||
- 名称:`xray.location.confdir` 或 `XRAY_LOCATION_CONFDIR`。
|
||||
- 默认值:`""`。
|
||||
|
||||
这个目录内的 `.json` 文件会按文件名顺序读取,作为多配置选项。
|
||||
@@ -0,0 +1,104 @@
|
||||
# Fallback 回落
|
||||
|
||||
> **Fallback 是 Xray 的最强大功能之一, 可有效防止主动探测, 自由配置常用端口多服务共享**
|
||||
|
||||
fallback 为 Xray 提供了高强度的防主动探测性, 并且具有独创的首包回落机制.
|
||||
|
||||
fallback 也可以将不同类型的流量根据 path 进行分流, 从而实现一个端口, 多种服务共享.
|
||||
|
||||
目前您可以在使用 VLESS 或者 trojan 协议时, 通过配置 fallbacks 来使用回落这一特性, 并且创造出非常丰富的组合玩法.
|
||||
|
||||
|
||||
## fallbacks 配置
|
||||
|
||||
```json
|
||||
"fallbacks": [
|
||||
{
|
||||
"dest": 80
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
> `fallbacks`: \[ [FallbackObject](#fallbackobject) \]
|
||||
|
||||
一个数组,包含一系列强大的回落分流配置。
|
||||
|
||||
### FallbackObject
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "",
|
||||
"alpn": "",
|
||||
"path": "",
|
||||
"dest": 80,
|
||||
"xver": 0
|
||||
}
|
||||
```
|
||||
|
||||
**`fallbacks` 是一个数组,这里是其中一个子元素的配置说明。**
|
||||
|
||||
`fallbacks` 项是可选的,只能用于 TCP+TLS 传输组合
|
||||
|
||||
- 该项有子元素时,[Inbound TLS](../base/transport/#tlsobject) 需设置 `"alpn":["http/1.1"]`。\*\*
|
||||
|
||||
通常,你需要先设置一组 `alpn` 和 `path` 均省略或为空的默认回落,然后再按需配置其它分流。
|
||||
|
||||
VLESS 会把 TLS 解密后首包长度 < 18 或协议版本无效、身份认证失败的流量转发到 `dest` 指定的地址。
|
||||
|
||||
其它传输组合必须删掉 `fallbacks` 项或所有子元素,此时也不会开启 Fallback,VLESS 会等待读够所需长度,协议版本无效或身份认证失败时,将直接断开连接。
|
||||
|
||||
> `name`: string
|
||||
尝试匹配 TLS SNI(Server Name Indication),空为任意,默认为 ""
|
||||
|
||||
> `alpn`: string
|
||||
|
||||
尝试匹配 TLS ALPN 协商结果,空为任意,默认为 ""
|
||||
|
||||
有需要时,VLESS 才会尝试读取 TLS ALPN 协商结果,若成功,输出 info `realAlpn =` 到日志。
|
||||
用途:解决了 Nginx 的 h2c 服务不能同时兼容 http/1.1 的问题,Nginx 需要写两行 listen,分别用于 1.1 和 h2c。
|
||||
注意:fallbacks alpn 存在 `"h2"` 时,[Inbound TLS](../base/transport/#tlsobject) 需设置 `"alpn":["h2","http/1.1"]`,以支持 h2 访问。
|
||||
|
||||
::: tip
|
||||
Fallback 内设置的 "alpn" 是匹配实际协商出的 ALPN,而 Inbound TLS 设置的 "alpn" 是握手时可选的 ALPN 列表,两者含义不同。
|
||||
:::
|
||||
|
||||
> `path`: string
|
||||
|
||||
尝试匹配首包 HTTP PATH,空为任意,默认为空,非空则必须以 `"/"` 开头,不支持 h2c。
|
||||
|
||||
智能:有需要时,VLESS 才会尝试看一眼 PATH(不超过 55 个字节;最快算法,并不完整解析 HTTP),若成功,输出 info `realPath =` 到日志。
|
||||
用途:分流其它 inbound 的 WebSocket 流量或 HTTP 伪装流量,没有多余处理、纯粹转发流量,理论性能比 Nginx 更强。
|
||||
|
||||
注意:**fallbacks 所在入站本身必须是 TCP+TLS**,这是分流至其它 WS 入站用的,被分流的入站则无需配置 TLS。
|
||||
|
||||
> `dest`: string | number
|
||||
|
||||
决定 TLS 解密后 TCP 流量的去向,目前支持两类地址:(该项必填,否则无法启动)
|
||||
|
||||
1. TCP,格式为 `"addr:port"`,其中 addr 支持 IPv4、域名、IPv6,若填写域名,也将直接发起 TCP 连接(而不走内置的 DNS)。
|
||||
2. Unix domain socket,格式为绝对路径,形如 `"/dev/shm/domain.socket"`,可在开头加 `"@"` 代表 [abstract](https://www.man7.org/linux/man-pages/man7/unix.7.html),`"@@"` 则代表带 padding 的 abstract。
|
||||
|
||||
若只填 port,数字或字符串均可,形如 `80`、`"80"`,通常指向一个明文 http 服务(addr 会被补为 `"127.0.0.1"`)。
|
||||
|
||||
> `xver`: number
|
||||
|
||||
发送 [PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt),专用于传递请求的真实来源 IP 和端口,填版本 1 或 2,默认为 0,即不发送。若有需要建议填 1。
|
||||
|
||||
目前填 1 或 2,功能完全相同,只是结构不同,且前者可打印,后者为二进制。Xray 的 TCP 和 WS 入站均已支持接收 PROXY protocol。
|
||||
|
||||
|
||||
::: warning
|
||||
若你正在 [配置 Nginx 接收 PROXY protocol](https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#configuring-nginx-to-accept-the-proxy-protocol),除了设置 proxy_protocol 外,还需设置 set_real_ip_from,否则可能会出问题。
|
||||
:::
|
||||
|
||||
|
||||
### 补充说明
|
||||
|
||||
- 将匹配到最精确的子元素,与子元素的排列顺序无关。若配置了几个 alpn 和 path 均相同的子元素,则会以最后的为准。
|
||||
- 回落分流均是解密后 TCP 层的转发,而不是 HTTP 层,只在必要时检查首包 PATH。
|
||||
- 您可以查看更多的关于 Fallbacks 的使用技巧和心得
|
||||
- [Fallbacks 功能简析](../../documents/level-1/fallbacks-lv1)
|
||||
|
||||
|
||||
## Fallbacks 设计理论 <Badge text="WIP" type="warning"/>
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
# 多文件配置
|
||||
|
||||
Xray 程序支持使用多个配置文件。
|
||||
|
||||
多配置文件的主要作用在于分散不同作用模块配置,便于管理和维护。
|
||||
|
||||
该功能主要考虑是为了丰富 Xray 的生态链,比如对于 GUI 的客户端,一般只实现节点选择等固定的功能,对于太复杂的配置难以图形化实现;只需留一个 `confdir` 的自定义配置目录供配置复杂的功能;对于服务器的部署脚本,只需往 `confdir` 添加文件即可实现配置多种协议。
|
||||
|
||||
## 多文件启动
|
||||
|
||||
::: tip
|
||||
启动信息中会提示依次读入的每个配置文件,留意启动信息是否符合你预设的顺序。
|
||||
:::
|
||||
|
||||
```shell
|
||||
$ xray run -confdir /etc/xray/confs
|
||||
```
|
||||
|
||||
也可使用 `Xray.location.confdir` 或 `Xray_LOCATION_CONFDIR` 指定 `confdir`。
|
||||
|
||||
参数 `-confdir` 的作用优先于环境变量,如果参数指定了有效的目录则不再读取环境变量中的路径。
|
||||
|
||||
## 规则说明
|
||||
|
||||
### 普通对象(`{}`)
|
||||
|
||||
**在 json 的顶级对象当中,后者覆盖或补充前者。**
|
||||
|
||||
比如:
|
||||
|
||||
* base.json
|
||||
|
||||
```json
|
||||
{
|
||||
"log": {},
|
||||
"api": {},
|
||||
"dns": {},
|
||||
"stats": {},
|
||||
"policy": {},
|
||||
"transport": {},
|
||||
"routing": {},
|
||||
"inbounds": []
|
||||
}
|
||||
```
|
||||
|
||||
* outbounds.json
|
||||
|
||||
```json
|
||||
{
|
||||
"outbounds": []
|
||||
}
|
||||
```
|
||||
|
||||
以多配置启动 Xray:
|
||||
|
||||
```bash
|
||||
$ xray run -confdir /etc/xray/confs
|
||||
```
|
||||
|
||||
这两个配置文件的就等效于合成一起的整配置。当需要修改出口节点,只需要修改 `outbounds.json` 内容。
|
||||
|
||||
如果需要改编日志 log 的级别,也不需要改 `base.json`,只需后续增加一个配置:
|
||||
|
||||
* debuglog.json
|
||||
|
||||
```json
|
||||
{
|
||||
"log": {
|
||||
"loglevel": "debug"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
启动顺序放置在 base 后,即可输出 debug 级别的日志
|
||||
|
||||
### 数组(`[]`)
|
||||
|
||||
在 json 配置中的`inbounds`和`outbounds`是数组结构,他们有特殊的规则:
|
||||
|
||||
* 当配置中的数组元素有 2 或以上,覆盖前者的 inbounds/oubounds;
|
||||
* 当配置中的数组元素只有 1 个时,查找原有`tag`相同的元素进行覆盖;若无法找到:
|
||||
- 对于 inbounds,添加至最后(inbounds 内元素顺序无关)
|
||||
- 对于 outbounds,添加至最前(outbounds 默认首选出口);但如果文件名含有 tail(大小写均可),添加至最后。
|
||||
|
||||
借助多配置,可以很方便为原有的配置添加不同协议的 inbound,而不必修改原有配置。
|
||||
|
||||
以下例子不是有效配置,只为展示上述规则。
|
||||
|
||||
* 000.json
|
||||
|
||||
```json
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"protocol": "socks",
|
||||
"tag":"socks",
|
||||
"port": 1234
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
* 001.json
|
||||
|
||||
```json
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"protocol": "http",
|
||||
"tag":"http"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
* 002.json
|
||||
|
||||
```json
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"protocol": "socks",
|
||||
"tag":"socks",
|
||||
"port": 4321
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
三个配置将会合成为:
|
||||
|
||||
```json
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"protocol": "socks",
|
||||
"tag":"socks",
|
||||
"port": 4321 // < 002顺序在000后,因此覆盖tag为socks的inbound端口为4321
|
||||
},
|
||||
{
|
||||
"protocol": "http",
|
||||
"tag":"http"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 推荐的多文件列表
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
for BASE in 00_log 01_api 02_dns 03_routing 04_policy 05_inbounds 06_outbounds 07_transport 08_stats 09_reverse; do echo '{}' > "/etc/Xray/$BASE.json"; done
|
||||
```
|
||||
|
||||
或
|
||||
|
||||
```bash
|
||||
for BASE in 00_log 01_api 02_dns 03_routing 04_policy 05_inbounds 06_outbounds 07_transport 08_stats 09_reverse; do echo '{}' > "/usr/local/etc/Xray/$BASE.json"; done
|
||||
```
|
||||
|
||||
```bash
|
||||
.
|
||||
├── 00_log.json
|
||||
├── 01_api.json
|
||||
├── 02_dns.json
|
||||
├── 03_routing.json
|
||||
├── 04_policy.json
|
||||
├── 05_inbounds.json
|
||||
├── 06_outbounds.json
|
||||
├── 07_transport.json
|
||||
├── 08_stats.json
|
||||
└── 09_reverse.json
|
||||
|
||||
0 directories, 10 files
|
||||
```
|
||||
@@ -0,0 +1,46 @@
|
||||
# VLESS 协议详解
|
||||
|
||||
> **VLESS 是原创的无状态的轻量传输协议, 也是 Xray 一切的开始**
|
||||
|
||||
## 协议详解 <Badge text="WIP" type="warning"/>
|
||||
|
||||
## 配置模板
|
||||
|
||||
[Xray-examples](https://github.com/xtls/Xray-examples) 有完整的 VLESS 配置示例供参考。(但目前不能保证其它协议的配置示例质量)
|
||||
|
||||
## 客户端开发指引
|
||||
|
||||
1. VLESS 协议本身还会有不兼容升级,但客户端配置文件参数基本上是只增不减的。**所以如果你开发了用 core 的客户端,现在就可以适配。** iOS 客户端的协议实现则需紧跟升级。
|
||||
2. **视觉标准:UI 标识请统一用 VLESS**,而不是 VLess / Vless / vless,配置文件不受影响,代码内则顺其自然。
|
||||
3. `encryption` 应做成输入框而不是选择框,新配置的默认值应为 `none`,若用户置空则应代填 `none`。
|
||||
|
||||
**以下为已支持图形化配置 VLESS 的部分客户端列表,推荐使用:**(排名不分先后顺序)
|
||||
|
||||
- OpenWrt
|
||||
- [PassWall](https://github.com/xiaorouji/openwrt-passwall)
|
||||
- [Hello World](https://github.com/jerrykuku/luci-app-vssr)
|
||||
- [ShadowSocksR Plus+](https://github.com/fw876/helloworld)
|
||||
- Windows
|
||||
- [v2rayN](https://github.com/2dust/v2rayN)
|
||||
- [Qv2ray](https://github.com/Qv2ray/Qv2ray)
|
||||
- Android
|
||||
- [v2rayNG](https://github.com/2dust/v2rayNG)
|
||||
- [Kitsunebi](https://github.com/rurirei/Kitsunebi/tree/release_xtls)
|
||||
- iOS / Mac
|
||||
- [Shadowrocket](https://apps.apple.com/app/shadowrocket/id932747118)
|
||||
|
||||
|
||||
## Fallbacks
|
||||
|
||||
Fallbacks 是 Xray 独创的新型协议回落模式解析, 可有效防止主动探测, 自由配置常用端口多服务共享.
|
||||
|
||||
目前 Xray 中的 VLESS 和 trojan 协议支持Fallbacks.
|
||||
- [Fallbacks 配置说明](../fallback/#fallbacks-配置)
|
||||
- [Fallbacks 功能简析]()
|
||||
- [Fallbacks 设计理论](../fallback/#fallbacks-设计理论)
|
||||
|
||||
|
||||
## VLESS 分享链接标准
|
||||
感谢<img src="https://avatars2.githubusercontent.com/u/7822648?s=32" width="32px" height="32px" alt="a"/> [@DuckSoft](https://github.com/DuckSoft) 的提案!
|
||||
|
||||
目前为初步提案, 详情请见[VMessAEAD / VLESS 分享链接标准提案](https://github.com/XTLS/Xray-core/issues/91)
|
||||
@@ -0,0 +1,5 @@
|
||||
# XTLS 深度剖析
|
||||
|
||||
> **XTLS 是 Xray 的原创黑科技, 也是使 Xray 性能一骑绝尘的核心动力**
|
||||
|
||||
<Badge text="WIP" type="warning"/>
|
||||
Reference in New Issue
Block a user