Xray-docs-next/docs/config/inbound.md

134 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 入站代理
入站连接用于接收发来的数据,可用的协议请见[inbound 可用协议列表](./inbounds)。
## InboundObject
`InboundObject` 对应配置文件中 `inbounds` 项的一个子元素。
```json
{
"inbounds": [
{
"listen": "127.0.0.1",
"port": 1080,
"protocol": "协议名称",
"settings": {},
"streamSettings": {},
"tag": "标识",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"allocate": {
"strategy": "always",
"refresh": 5,
"concurrency": 3
}
}
]
}
```
>`listen`: address
监听地址IP 地址或 Unix domain socket默认值为 `"0.0.0.0"`,表示接收所有网卡上的连接.
可以指定一个系统可用的 IP 地址。
支持填写 Unix domain socket格式为绝对路径形如 `"/dev/shm/domain.socket"`,可在开头加 `"@"` 代表 [abstract](https://www.man7.org/linux/man-pages/man7/unix.7.html)`"@@"` 则代表带 padding 的 abstract。
填写 Unix domain socket 时,`port` 和 `allocate` 将被忽略,协议目前可选 VLESS、VMess、Trojan传输方式可选 TCP、WebSocket、HTTP/2。
>`port`: number | "env:variable" | string
端口。接受的格式如下:
- 整型数值:实际的端口号。
- 环境变量:以 `"env:"` 开头,后面是一个环境变量的名称,如 `"env:PORT"`。Xray 会以字符串形式解析这个环境变量。
- 字符串:可以是一个数值类型的字符串,如 `"1234"`;或者一个数值范围,如 `"5-10"` 表示端口 5 到端口 10这 6 个端口。
当只有一个端口时Xray 会在此端口监听入站连接。当指定了一个端口范围时,取决于 `allocate` 设置。
>`protocol`: string
连接协议名称,可选的协议类型见[inbound 可用协议列表](./inbounds)。
>`settings`: InboundConfigurationObject
具体的配置内容,视协议不同而不同。详见每个协议中的 `InboundConfigurationObject`
>`streamSettings`: [StreamSettingsObject](./transport#streamsettingsobject)
底层传输方式transport是当前 Xray 节点和其它节点对接的方式
>`tag`: string
此入站连接的标识,用于在其它的配置中定位此连接。
::: danger
当其不为空时,其值必须在所有 `tag`**唯一**。
:::
>`sniffing`: [SniffingObject](#sniffingobject)
流量探测主要作用于在透明代理等用途.
比如一个典型流程如下:
1. 如有一个设备上网,去访问abc.com,首先设备通过DNS查询得到abc.com的IP是1.2.3.4,然后设备会向1.2.3.4去发起连接.
2. 如果不设置嗅探,Xray收到的连接请求是1.2.3.4,并不能用于域名规则的路由分流.
3. 当设置了sniffing中的enable为true,Xray处理此连接的流量时,会从流量的数据中,嗅探出域名,即abc.com
4. Xray会把1.2.3.4重置为abc.com.路由就可以根据域名去进行路由的域名规则的分流
因为变成了一个向abc.com请求的连接, 就可以做更多的事情, 除了路由域名规则分流, 还能重新做DNS解析等其他工作.
当设置了sniffing中的enable为true, 还能嗅探出bittorrent类型的流量, 然后可以在路由中配置"protocol"项来设置规则处理BT流量, 比如服务端用来拦截BT流量, 或客户端固定转发BT流量到某个VPS去等.
>`allocate`: [AllocateObject](#allocateobject)
当设置了多个port时, 端口分配的具体设置
### SniffingObject
```json
{
"enabled": true,
"destOverride": ["http", "tls", "fakedns"],
"metadataOnly": false
}
```
>`enabled`: true | false
是否开启流量探测。
>`destOverride`: \["http" | "tls" | "fakedns" \]
当流量为指定类型时,按其中包括的目标地址重置当前连接的目标。
>`metadataOnly`: true | false
当启用时,将仅使用连接的元数据嗅探目标地址。此时,`http` 与 `tls` 将不能使用。
### AllocateObject
```json
{
"strategy": "always",
"refresh": 5,
"concurrency": 3
}
```
>`strategy`: "always" | "random"
端口分配策略。
- `"always"` 表示总是分配所有已指定的端口,`port` 中指定了多少个端口Xray 就会监听这些端口。
- `"random"` 表示随机开放端口,每隔 `refresh` 分钟在 `port` 范围中随机选取 `concurrency` 个端口来监听。
>`refresh`: number
随机端口刷新间隔,单位为分钟。最小值为 `2`,建议值为 `5`。这个属性仅当 `strategy` 设置为 `"random"` 时有效。
>`concurrency`: number
随机端口数量。最小值为 `1`,最大值为 `port` 范围的三分之一。建议值为 `3`