mcp-xray-pilot 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +502 -0
- package/data/docs/_index.json +533 -0
- package/data/docs/basic__api.md +148 -0
- package/data/docs/basic__dns.md +366 -0
- package/data/docs/basic__fakedns.md +202 -0
- package/data/docs/basic__geodata.md +64 -0
- package/data/docs/basic__inbound.md +159 -0
- package/data/docs/basic__index.md +136 -0
- package/data/docs/basic__log.md +67 -0
- package/data/docs/basic__metrics.md +262 -0
- package/data/docs/basic__observatory.md +115 -0
- package/data/docs/basic__outbound.md +164 -0
- package/data/docs/basic__policy.md +140 -0
- package/data/docs/basic__reverse.md +268 -0
- package/data/docs/basic__routing.md +474 -0
- package/data/docs/basic__stats.md +61 -0
- package/data/docs/basic__transport.md +1283 -0
- package/data/docs/features__features_browser_dialer.md +61 -0
- package/data/docs/features__features_env.md +66 -0
- package/data/docs/features__features_fallback.md +110 -0
- package/data/docs/features__features_index.md +17 -0
- package/data/docs/features__features_multiple.md +144 -0
- package/data/docs/features__features_xtls.md +13 -0
- package/data/docs/inbounds__inbounds_dokodemo.md +11 -0
- package/data/docs/inbounds__inbounds_http.md +80 -0
- package/data/docs/inbounds__inbounds_hysteria.md +60 -0
- package/data/docs/inbounds__inbounds_index.md +22 -0
- package/data/docs/inbounds__inbounds_shadowsocks.md +118 -0
- package/data/docs/inbounds__inbounds_socks.md +87 -0
- package/data/docs/inbounds__inbounds_trojan.md +78 -0
- package/data/docs/inbounds__inbounds_tun.md +47 -0
- package/data/docs/inbounds__inbounds_tunnel.md +86 -0
- package/data/docs/inbounds__inbounds_vless.md +135 -0
- package/data/docs/inbounds__inbounds_vmess.md +95 -0
- package/data/docs/inbounds__inbounds_wireguard.md +78 -0
- package/data/docs/outbounds__outbounds_blackhole.md +42 -0
- package/data/docs/outbounds__outbounds_dns.md +97 -0
- package/data/docs/outbounds__outbounds_freedom.md +170 -0
- package/data/docs/outbounds__outbounds_http.md +70 -0
- package/data/docs/outbounds__outbounds_hysteria.md +39 -0
- package/data/docs/outbounds__outbounds_index.md +24 -0
- package/data/docs/outbounds__outbounds_loopback.md +65 -0
- package/data/docs/outbounds__outbounds_shadowsocks.md +105 -0
- package/data/docs/outbounds__outbounds_socks.md +58 -0
- package/data/docs/outbounds__outbounds_trojan.md +49 -0
- package/data/docs/outbounds__outbounds_vless.md +122 -0
- package/data/docs/outbounds__outbounds_vmess.md +76 -0
- package/data/docs/outbounds__outbounds_wireguard.md +141 -0
- package/data/docs/transports__transports_grpc.md +137 -0
- package/data/docs/transports__transports_h2.md +11 -0
- package/data/docs/transports__transports_http.md +11 -0
- package/data/docs/transports__transports_httpupgrade.md +61 -0
- package/data/docs/transports__transports_hysteria.md +110 -0
- package/data/docs/transports__transports_index.md +19 -0
- package/data/docs/transports__transports_mkcp.md +125 -0
- package/data/docs/transports__transports_quic.md +11 -0
- package/data/docs/transports__transports_raw.md +156 -0
- package/data/docs/transports__transports_splithttp.md +11 -0
- package/data/docs/transports__transports_tcp.md +11 -0
- package/data/docs/transports__transports_websocket.md +75 -0
- package/data/docs/transports__transports_xhttp.md +11 -0
- package/dist/data/compatibility.js +170 -0
- package/dist/data/compatibility.js.map +1 -0
- package/dist/data/geocatalogue.js +191 -0
- package/dist/data/geocatalogue.js.map +1 -0
- package/dist/docs.js +339 -0
- package/dist/docs.js.map +1 -0
- package/dist/handlers.js +217 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/lint.js +737 -0
- package/dist/lint.js.map +1 -0
- package/dist/schemas/protocols/blackhole.js +16 -0
- package/dist/schemas/protocols/blackhole.js.map +1 -0
- package/dist/schemas/protocols/common.js +32 -0
- package/dist/schemas/protocols/common.js.map +1 -0
- package/dist/schemas/protocols/dns.js +14 -0
- package/dist/schemas/protocols/dns.js.map +1 -0
- package/dist/schemas/protocols/dokodemo.js +17 -0
- package/dist/schemas/protocols/dokodemo.js.map +1 -0
- package/dist/schemas/protocols/freedom.js +45 -0
- package/dist/schemas/protocols/freedom.js.map +1 -0
- package/dist/schemas/protocols/http.js +38 -0
- package/dist/schemas/protocols/http.js.map +1 -0
- package/dist/schemas/protocols/hysteria.js +51 -0
- package/dist/schemas/protocols/hysteria.js.map +1 -0
- package/dist/schemas/protocols/index.js +50 -0
- package/dist/schemas/protocols/index.js.map +1 -0
- package/dist/schemas/protocols/loopback.js +11 -0
- package/dist/schemas/protocols/loopback.js.map +1 -0
- package/dist/schemas/protocols/shadowsocks.js +60 -0
- package/dist/schemas/protocols/shadowsocks.js.map +1 -0
- package/dist/schemas/protocols/socks.js +42 -0
- package/dist/schemas/protocols/socks.js.map +1 -0
- package/dist/schemas/protocols/trojan.js +34 -0
- package/dist/schemas/protocols/trojan.js.map +1 -0
- package/dist/schemas/protocols/tun.js +19 -0
- package/dist/schemas/protocols/tun.js.map +1 -0
- package/dist/schemas/protocols/vless.js +44 -0
- package/dist/schemas/protocols/vless.js.map +1 -0
- package/dist/schemas/protocols/vmess.js +48 -0
- package/dist/schemas/protocols/vmess.js.map +1 -0
- package/dist/schemas/protocols/wireguard.js +34 -0
- package/dist/schemas/protocols/wireguard.js.map +1 -0
- package/dist/schemas/security/index.js +16 -0
- package/dist/schemas/security/index.js.map +1 -0
- package/dist/schemas/security/reality.js +35 -0
- package/dist/schemas/security/reality.js.map +1 -0
- package/dist/schemas/security/tls.js +46 -0
- package/dist/schemas/security/tls.js.map +1 -0
- package/dist/schemas/security/xtls.js +17 -0
- package/dist/schemas/security/xtls.js.map +1 -0
- package/dist/schemas/transports/grpc.js +18 -0
- package/dist/schemas/transports/grpc.js.map +1 -0
- package/dist/schemas/transports/httpupgrade.js +14 -0
- package/dist/schemas/transports/httpupgrade.js.map +1 -0
- package/dist/schemas/transports/hysteria.js +25 -0
- package/dist/schemas/transports/hysteria.js.map +1 -0
- package/dist/schemas/transports/index.js +32 -0
- package/dist/schemas/transports/index.js.map +1 -0
- package/dist/schemas/transports/mkcp.js +34 -0
- package/dist/schemas/transports/mkcp.js.map +1 -0
- package/dist/schemas/transports/raw.js +19 -0
- package/dist/schemas/transports/raw.js.map +1 -0
- package/dist/schemas/transports/websocket.js +15 -0
- package/dist/schemas/transports/websocket.js.map +1 -0
- package/dist/schemas/transports/xhttp.js +34 -0
- package/dist/schemas/transports/xhttp.js.map +1 -0
- package/dist/search.js +78 -0
- package/dist/search.js.map +1 -0
- package/dist/state.js +87 -0
- package/dist/state.js.map +1 -0
- package/dist/tools.js +274 -0
- package/dist/tools.js.map +1 -0
- package/dist/tools_impl/diff.js +55 -0
- package/dist/tools_impl/diff.js.map +1 -0
- package/dist/tools_impl/github.js +416 -0
- package/dist/tools_impl/github.js.map +1 -0
- package/dist/tools_impl/merge.js +181 -0
- package/dist/tools_impl/merge.js.map +1 -0
- package/dist/tools_impl/refresh.js +46 -0
- package/dist/tools_impl/refresh.js.map +1 -0
- package/dist/tools_impl/suggest.js +169 -0
- package/dist/tools_impl/suggest.js.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +81 -0
- package/dist/utils.js.map +1 -0
- package/dist/validate.js +408 -0
- package/dist/validate.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
url: https://xtls.github.io/en/config/inbounds/shadowsocks.html
|
|
3
|
+
source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/shadowsocks.md
|
|
4
|
+
title: Shadowsocks
|
|
5
|
+
category: inbounds
|
|
6
|
+
slug: inbounds/shadowsocks
|
|
7
|
+
fetched_at: 2026-05-04T18:42:50.217Z
|
|
8
|
+
---
|
|
9
|
+
# Shadowsocks
|
|
10
|
+
|
|
11
|
+
The [Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) protocol, compatible with most other version implementations.
|
|
12
|
+
|
|
13
|
+
Current compatibility is as follows:
|
|
14
|
+
|
|
15
|
+
- Supports TCP and UDP packet forwarding, where UDP can be optionally disabled;
|
|
16
|
+
- Recommended encryption methods:
|
|
17
|
+
- 2022-blake3-aes-128-gcm
|
|
18
|
+
- 2022-blake3-aes-256-gcm
|
|
19
|
+
- 2022-blake3-chacha20-poly1305
|
|
20
|
+
- Other encryption methods:
|
|
21
|
+
- aes-256-gcm
|
|
22
|
+
- aes-128-gcm
|
|
23
|
+
- chacha20-poly1305 (or chacha20-ietf-poly1305)
|
|
24
|
+
- xchacha20-poly1305 (or xchacha20-ietf-poly1305)
|
|
25
|
+
- none (or plain)
|
|
26
|
+
|
|
27
|
+
The Shadowsocks 2022 new protocol format improves performance and includes complete replay protection, resolving the following security issues of the old protocol:
|
|
28
|
+
|
|
29
|
+
- [Severe vulnerabilities in the design of Shadowsocks AEAD encryption, unable to guarantee communication reliability](https://github.com/shadowsocks/shadowsocks-org/issues/183)
|
|
30
|
+
- The false positive rate of the original TCP replay filter increases over time
|
|
31
|
+
- No UDP replay protection
|
|
32
|
+
- TCP behavior that can be used for active probing
|
|
33
|
+
|
|
34
|
+
::: danger
|
|
35
|
+
Under the "none" encryption method, traffic will be transmitted in plain text. To ensure security, do not use it on public networks.
|
|
36
|
+
:::
|
|
37
|
+
|
|
38
|
+
## InboundConfigurationObject
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"settings": {
|
|
43
|
+
"network": "tcp,udp",
|
|
44
|
+
"method": "aes-256-gcm",
|
|
45
|
+
"password": "114514",
|
|
46
|
+
"level": 0,
|
|
47
|
+
"email": "love@xray.com",
|
|
48
|
+
"clients": [
|
|
49
|
+
{
|
|
50
|
+
"password": "1919810",
|
|
51
|
+
"method": "aes-128-gcm"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> `network`: "tcp" | "udp" | "tcp,udp"
|
|
59
|
+
|
|
60
|
+
The network type that the server port **listens** on. The default value is `"tcp"`.
|
|
61
|
+
|
|
62
|
+
Note that this is only for listening; it mainly affects and controls the native UDP transmission of Shadowsocks. Setting it to `"tcp"` does not mean the inbound will reject UDP proxy requests. UDP proxy requests can still be wrapped into TCP packets by Shadowsocks outbound features like UoT or mux.cool and sent to the server, and are not controlled by this option.
|
|
63
|
+
|
|
64
|
+
> `method`: string
|
|
65
|
+
|
|
66
|
+
Encryption method. See above for options.
|
|
67
|
+
|
|
68
|
+
> `password`: string
|
|
69
|
+
|
|
70
|
+
Required.
|
|
71
|
+
|
|
72
|
+
- Shadowsocks 2022
|
|
73
|
+
|
|
74
|
+
Uses a pre-shared key similar to WireGuard as the password.
|
|
75
|
+
|
|
76
|
+
Use `openssl rand -base64 <length>` to generate a key compatible with shadowsocks-rust. The length depends on the encryption method used.
|
|
77
|
+
|
|
78
|
+
| Encryption Method | Key Length |
|
|
79
|
+
| ----------------------------- | ---------: |
|
|
80
|
+
| 2022-blake3-aes-128-gcm | 16 |
|
|
81
|
+
| 2022-blake3-aes-256-gcm | 32 |
|
|
82
|
+
| 2022-blake3-chacha20-poly1305 | 32 |
|
|
83
|
+
|
|
84
|
+
In the Go implementation, 32-byte keys always work.
|
|
85
|
+
|
|
86
|
+
- Other encryption methods
|
|
87
|
+
|
|
88
|
+
Any string. There is no limit on password length, but short passwords are more likely to be cracked. It is recommended to use passwords of 16 characters or longer.
|
|
89
|
+
|
|
90
|
+
> `level`: number
|
|
91
|
+
|
|
92
|
+
User level. The connection will use the [local policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
93
|
+
The value of `level` corresponds to the `level` value in [policy](../policy.md#levelpolicyobject). If not specified, the default is 0.
|
|
94
|
+
|
|
95
|
+
> `email`: string
|
|
96
|
+
|
|
97
|
+
User email, used to distinguish traffic from different users (logs, statistics).
|
|
98
|
+
|
|
99
|
+
## ClientObject
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"password": "1919810",
|
|
104
|
+
"method": "aes-256-gcm",
|
|
105
|
+
"level": 0,
|
|
106
|
+
"email": "love@xray.com"
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
When this option exists, it indicates that multi-user mode is enabled.
|
|
111
|
+
|
|
112
|
+
When the `method` in `InboundConfigurationObject` is not an SS2022 option, you can specify `"method"` for each user here (only non-SS2022 options are supported in `"method"`) along with `"password"` (at the same time, the `"password"` set in `InboundConfigurationObject` will be ignored).
|
|
113
|
+
|
|
114
|
+
When the `method` in `InboundConfigurationObject` is an SS2022 option, for security reasons, setting `"method"` for individual users is no longer supported. It is unified to the `"method"` specified in `InboundConfigurationObject`.
|
|
115
|
+
|
|
116
|
+
Note that SS2022 does not ignore the upper-level `"password"` like the old SS did. The correct password format for the client should be `ServerPassword:UserPassword`. For example: `"password": "114514:1919810"`.
|
|
117
|
+
|
|
118
|
+
The remaining options have the same meaning as in `InboundConfigurationObject`.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
url: https://xtls.github.io/en/config/inbounds/socks.html
|
|
3
|
+
source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/socks.md
|
|
4
|
+
title: Socks
|
|
5
|
+
category: inbounds
|
|
6
|
+
slug: inbounds/socks
|
|
7
|
+
fetched_at: 2026-05-04T18:42:50.715Z
|
|
8
|
+
---
|
|
9
|
+
# Socks
|
|
10
|
+
|
|
11
|
+
Standard Socks protocol implementation, compatible with [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol), [Socks 4a](https://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4A.protocol), Socks 5, and **HTTP**.
|
|
12
|
+
|
|
13
|
+
::: danger
|
|
14
|
+
**The Socks protocol does not encrypt transmission and is not suitable for transmission over the public internet.**
|
|
15
|
+
:::
|
|
16
|
+
|
|
17
|
+
A more meaningful usage of `Socks` inbound is to listen within a LAN or on the local machine to provide local services for other programs.
|
|
18
|
+
|
|
19
|
+
## InboundConfigurationObject
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"auth": "noauth",
|
|
24
|
+
"accounts": [
|
|
25
|
+
{
|
|
26
|
+
"user": "my-username",
|
|
27
|
+
"pass": "my-password"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"udp": false,
|
|
31
|
+
"ip": "127.0.0.1",
|
|
32
|
+
"userLevel": 0
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
> `auth`: "noauth" | "password"
|
|
37
|
+
|
|
38
|
+
Authentication method for the Socks protocol. Supports `"noauth"` (anonymous) and `"password"` (user/password).
|
|
39
|
+
|
|
40
|
+
When using password, HTTP requests sent to this inbound will also require the same account and password.
|
|
41
|
+
|
|
42
|
+
Default value is `"noauth"`.
|
|
43
|
+
|
|
44
|
+
> `accounts`: \[ [AccountObject](#accountobject) \]
|
|
45
|
+
|
|
46
|
+
An array where each element is a user account.
|
|
47
|
+
|
|
48
|
+
This option is only valid when `auth` is set to `password`.
|
|
49
|
+
|
|
50
|
+
Default value is empty.
|
|
51
|
+
|
|
52
|
+
> `udp`: true | false
|
|
53
|
+
|
|
54
|
+
Whether to enable UDP protocol support.
|
|
55
|
+
|
|
56
|
+
Default value is `false`.
|
|
57
|
+
|
|
58
|
+
> `ip`: address
|
|
59
|
+
|
|
60
|
+
When UDP is enabled, Xray needs to know the IP address of the local machine.
|
|
61
|
+
|
|
62
|
+
"The IP address of the local machine" means the IP that the client can use to find the server when initiating a UDP connection. By default, it is the local IP address when the server accepts the TCP connection. It should work normally in most cases, but when passing through systems behind NAT, it may cause malfunctions, requiring this parameter to be modified to the correct public IP.
|
|
63
|
+
|
|
64
|
+
Warning: If your machine has multiple IP addresses, you will be affected by the issue regarding UDP listening on 0.0.0.0 mentioned in [Inbound Listening](../inbound.md#inboundobject).
|
|
65
|
+
|
|
66
|
+
> `userLevel`: number
|
|
67
|
+
|
|
68
|
+
User level. Connections will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
69
|
+
|
|
70
|
+
The value of `userLevel` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, the default is 0.
|
|
71
|
+
|
|
72
|
+
### AccountObject
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"user": "my-username",
|
|
77
|
+
"pass": "my-password"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> `user`: string
|
|
82
|
+
|
|
83
|
+
Username, string type. Required.
|
|
84
|
+
|
|
85
|
+
> `pass`: string
|
|
86
|
+
|
|
87
|
+
Password, string type. Required.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
url: https://xtls.github.io/en/config/inbounds/trojan.html
|
|
3
|
+
source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/trojan.md
|
|
4
|
+
title: Trojan
|
|
5
|
+
category: inbounds
|
|
6
|
+
slug: inbounds/trojan
|
|
7
|
+
fetched_at: 2026-05-04T18:42:51.217Z
|
|
8
|
+
---
|
|
9
|
+
# Trojan
|
|
10
|
+
|
|
11
|
+
[Trojan](https://trojan-gfw.github.io/trojan/protocol) protocol.
|
|
12
|
+
|
|
13
|
+
::: danger
|
|
14
|
+
Trojan is designed to work over correctly configured encrypted TLS tunnels.
|
|
15
|
+
:::
|
|
16
|
+
|
|
17
|
+
## InboundConfigurationObject
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"clients": [
|
|
22
|
+
{
|
|
23
|
+
"password": "password",
|
|
24
|
+
"email": "love@xray.com",
|
|
25
|
+
"level": 0
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"fallbacks": [
|
|
29
|
+
{
|
|
30
|
+
"dest": 80
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
> `clients`: \[ [ClientObject](#clientobject) \]
|
|
37
|
+
|
|
38
|
+
An array representing a group of users accepted by the server.
|
|
39
|
+
|
|
40
|
+
Each item is a [ClientObject](#clientobject).
|
|
41
|
+
|
|
42
|
+
> `fallbacks`: \[ [FallbackObject](../features/fallback.md) \]
|
|
43
|
+
|
|
44
|
+
An array containing a series of powerful fallback configurations (optional).
|
|
45
|
+
For specific configuration of fallbacks, please click [FallbackObject](../features/fallback.md#fallbackobject).
|
|
46
|
+
|
|
47
|
+
::: tip
|
|
48
|
+
Xray's Trojan has complete support for fallbacks, and the configuration method is exactly the same as VLESS.
|
|
49
|
+
The conditions for triggering fallback are also similar to VLESS: the length of the first packet < 58, OR the 57th byte is not `\r` (because Trojan has no protocol version), OR authentication fails.
|
|
50
|
+
:::
|
|
51
|
+
|
|
52
|
+
### ClientObject
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"password": "password",
|
|
57
|
+
"email": "love@xray.com",
|
|
58
|
+
"level": 0
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> `password`: string
|
|
63
|
+
|
|
64
|
+
Required, any string.
|
|
65
|
+
|
|
66
|
+
> `email`: string
|
|
67
|
+
|
|
68
|
+
Email address, optional, used to identify the user.
|
|
69
|
+
|
|
70
|
+
::: danger
|
|
71
|
+
If there are multiple ClientObjects, please note that emails must not be duplicated.
|
|
72
|
+
:::
|
|
73
|
+
|
|
74
|
+
> `level`: number
|
|
75
|
+
|
|
76
|
+
User level. Connections will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
77
|
+
|
|
78
|
+
The value of `userLevel` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
url: https://xtls.github.io/en/config/inbounds/tun.html
|
|
3
|
+
source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/tun.md
|
|
4
|
+
title: TUN
|
|
5
|
+
category: inbounds
|
|
6
|
+
slug: inbounds/tun
|
|
7
|
+
fetched_at: 2026-05-04T18:42:53.756Z
|
|
8
|
+
---
|
|
9
|
+
# TUN
|
|
10
|
+
|
|
11
|
+
Creates a TUN interface; traffic sent to this interface will be processed by Xray. Currently, only Windows and Linux are supported.
|
|
12
|
+
|
|
13
|
+
## InboundConfigurationObject
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"name": "xray0",
|
|
18
|
+
"MTU": 1500,
|
|
19
|
+
"UserLevel": 0
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
> `name`: string
|
|
24
|
+
|
|
25
|
+
The name of the created TUN interface. Default is `"xray0"`.
|
|
26
|
+
|
|
27
|
+
> `MTU`: number
|
|
28
|
+
|
|
29
|
+
The MTU of the interface. Default is `1500`.
|
|
30
|
+
|
|
31
|
+
> `userLevel`: number
|
|
32
|
+
|
|
33
|
+
User level. The connection will use the [local policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
34
|
+
|
|
35
|
+
The value of `userLevel` corresponds to the `level` value in [policy](../policy.md#policyobject). If not specified, the default is 0.
|
|
36
|
+
|
|
37
|
+
## Usage Tips
|
|
38
|
+
|
|
39
|
+
Currently, Xray does not automatically modify the system routing table. You need to manually configure routes to direct data to the created TUN interface; otherwise, it remains just an interface.
|
|
40
|
+
|
|
41
|
+
If you only want to proxy specific process(es), the process name routing in the Xray routing system will be very useful.
|
|
42
|
+
|
|
43
|
+
::: warning
|
|
44
|
+
Be aware of potential traffic loop issues. After setting routes, requests initiated by Xray might be sent back to Xray, causing a loop!
|
|
45
|
+
Use `interface` in `sockopt` to bind to the actual physical network interface to avoid this problem. `ipconfig` (Windows) or `ip a` (Linux) will help you find the interface name you need.
|
|
46
|
+
Alternatively, use the outbound `sendThrough` setting. It is available directly in `OutboundObject` without the deep nesting level of `sockOpt.interface`. Here you need to use the IP address on the network card, such as 192.168.1.2 (As you can see, its disadvantage is that it cannot automatically support dual-stack; please choose according to the IP actually used for your outbound connection).
|
|
47
|
+
:::
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
url: https://xtls.github.io/en/config/inbounds/tunnel.html
|
|
3
|
+
source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/tunnel.md
|
|
4
|
+
title: Tunnel (dokodemo-door)
|
|
5
|
+
category: inbounds
|
|
6
|
+
slug: inbounds/tunnel
|
|
7
|
+
fetched_at: 2026-05-04T18:42:49.225Z
|
|
8
|
+
---
|
|
9
|
+
# Tunnel (dokodemo-door)
|
|
10
|
+
|
|
11
|
+
Tunnel, formerly known as dokodemo-door (Arbitrary Door), can listen on multiple local ports and send all received data to a specific port on a specified server via an outbound, thereby achieving the effect of port mapping.
|
|
12
|
+
|
|
13
|
+
## InboundConfigurationObject
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"address": "8.8.8.8",
|
|
18
|
+
"port": 53,
|
|
19
|
+
"portMap": {
|
|
20
|
+
"5555": "1.1.1.1:7777",
|
|
21
|
+
"5556": ":8888", // overrides port only
|
|
22
|
+
"5557": "example.com:" // overrides address only
|
|
23
|
+
},
|
|
24
|
+
"network": "tcp",
|
|
25
|
+
"followRedirect": false,
|
|
26
|
+
"userLevel": 0
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
> `address`: address
|
|
31
|
+
|
|
32
|
+
Forward traffic to this address. It can be an IP address, like `"1.2.3.4"`, or a domain name, like `"xray.com"`. String type, defaults to `"localhost"`.
|
|
33
|
+
|
|
34
|
+
> `port`: number
|
|
35
|
+
|
|
36
|
+
Forward traffic to the specified port of the target address. Range \[0, 65535\], numeric type. If omitted or 0, it defaults to the listening port.
|
|
37
|
+
|
|
38
|
+
> `portMap`: map[string]string
|
|
39
|
+
|
|
40
|
+
A map mapping local ports to required remote addresses/ports (if the inbound listens on multiple ports). If the local port is not included in this map, it is handled according to the `address`/`port` settings.
|
|
41
|
+
|
|
42
|
+
> `network`: "tcp" | "udp" | "tcp,udp"
|
|
43
|
+
|
|
44
|
+
Accepted network protocol types. For example, when specified as `"tcp"`, only TCP traffic will be received. Default value is `"tcp"`.
|
|
45
|
+
|
|
46
|
+
> `followRedirect`: true | false
|
|
47
|
+
|
|
48
|
+
When set to `true`, dokodemo-door will recognize data forwarded by iptables and forward it to the corresponding target address.
|
|
49
|
+
|
|
50
|
+
Please refer to the `tproxy` setting in [Transport Configuration](../transport.md#sockoptobject).
|
|
51
|
+
|
|
52
|
+
> `userLevel`: number
|
|
53
|
+
|
|
54
|
+
User level. Connections will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
55
|
+
|
|
56
|
+
The value of `userLevel` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.
|
|
57
|
+
|
|
58
|
+
## Usage
|
|
59
|
+
|
|
60
|
+
The "Arbitrary Door" has two main uses: one is for transparent proxy (see below), and the other is for mapping a port.
|
|
61
|
+
|
|
62
|
+
Sometimes some services do not support forward proxies like Socks5, and using Tun or Tproxy is overkill. If these services only communicate with a single IP and port (e.g., iperf, Minecraft server, Wireguard endpoint), you can use dokodemo-door.
|
|
63
|
+
|
|
64
|
+
For example, the following Config (assuming the default outbound is a valid proxy):
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"listen": "127.0.0.1",
|
|
69
|
+
"port": 25565,
|
|
70
|
+
"protocol": "tunnel",
|
|
71
|
+
"settings": {
|
|
72
|
+
"address": "mc.hypixel.net",
|
|
73
|
+
"port": 25565,
|
|
74
|
+
"network": "tcp",
|
|
75
|
+
"followRedirect": false,
|
|
76
|
+
"userLevel": 0
|
|
77
|
+
},
|
|
78
|
+
"tag": "mc"
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
In this case, the core will listen on 127.0.0.1:25565 and forward it to mc.hypixel.net:25565 (a MC server) via the default outbound. Connecting the Minecraft client to 127.0.0.1:25565 is equivalent to connecting to the Hypixel server via a proxy.
|
|
83
|
+
|
|
84
|
+
## Transparent Proxy Configuration Example
|
|
85
|
+
|
|
86
|
+
For this section, please refer to [Transparent Proxy (TProxy) Configuration Tutorial](../../document/level-2/tproxy).
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
url: https://xtls.github.io/en/config/inbounds/vless.html
|
|
3
|
+
source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/vless.md
|
|
4
|
+
title: VLESS (XTLS Vision Seed)
|
|
5
|
+
category: inbounds
|
|
6
|
+
slug: inbounds/vless
|
|
7
|
+
fetched_at: 2026-05-04T18:42:51.696Z
|
|
8
|
+
---
|
|
9
|
+
# VLESS (XTLS Vision Seed)
|
|
10
|
+
|
|
11
|
+
VLESS is a stateless, lightweight transport protocol. It is divided into inbound and outbound parts and can serve as a bridge between Xray clients and servers.
|
|
12
|
+
|
|
13
|
+
Unlike [VMess](./vmess.md), VLESS does not depend on system time. The authentication method is also UUID.
|
|
14
|
+
|
|
15
|
+
## InboundConfigurationObject
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"clients": [
|
|
20
|
+
{
|
|
21
|
+
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
|
22
|
+
"level": 0,
|
|
23
|
+
"email": "love@xray.com",
|
|
24
|
+
"flow": "xtls-rprx-vision",
|
|
25
|
+
"reverse": {}
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"decryption": "none",
|
|
29
|
+
"fallbacks": [
|
|
30
|
+
{
|
|
31
|
+
"dest": 80
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
> `clients`: \[ [ClientObject](#clientobject) \]
|
|
38
|
+
|
|
39
|
+
An array representing a group of users approved by the server.
|
|
40
|
+
|
|
41
|
+
Each item is a user [ClientObject](#clientobject).
|
|
42
|
+
|
|
43
|
+
> `decryption`: "none"
|
|
44
|
+
|
|
45
|
+
[VLESS Encryption](https://github.com/XTLS/Xray-core/pull/5067) settings. Cannot be left empty; to disable, explicitly set it to `"none"`.
|
|
46
|
+
|
|
47
|
+
It is recommended for most users to use `./xray vlessenc` to automatically generate this field to ensure no errors in writing. The detailed configuration below is recommended for advanced users only.
|
|
48
|
+
|
|
49
|
+
Its format is a string of detailed configuration fields connected by `.`. For example: `mlkem768x25519plus.native.600s.100-111-1111.75-0-111.50-0-3333.ptjHQxBQxTJ9MWr2cd5qWIflBSACHOevTauCQwa_71U`. This document refers to the individual parts separated by dots as blocks.
|
|
50
|
+
|
|
51
|
+
- The 1st block is the handshake method. Currently, there is only `mlkem768x25519plus`. Requires the server and client to match.
|
|
52
|
+
- The 2nd block is the encryption method. Options are `native`/`xorpub`/`random`, corresponding to: raw format packets / raw format + obfuscated public key part / full random numbers (similar to VMess/Shadowsocks). Requires the server and client to match.
|
|
53
|
+
- The 3rd block is the session resumption ticket validity time. Format is `600s` or `100-500s`. The former will pick a random time between that duration and half of that duration (e.g., `600s` = `300-600s`); the latter manually specifies a random range.
|
|
54
|
+
|
|
55
|
+
Following this is padding. After the connection is established, the server sends some garbage data to obfuscate length characteristics. This does not need to be the same as the client (the same part in the outbound is the padding sent from the client to the server). It is a variable-length part, formatted as `padding.delay.padding`+`(.delay.padding)`\*n (multiple paddings can be inserted, requiring a delay block between two padding blocks). For example, you can write an ultra-long `padding.delay.padding.delay.padding.delay.padding.delay.padding.delay.padding`.
|
|
56
|
+
|
|
57
|
+
- The `padding` format is `probability-min-max`, e.g., `100-111-1111` means 100% probability of sending a padding with a length of 111~1111.
|
|
58
|
+
- The `delay` format is also `probability-min-max`, e.g., `75-0-111` means 75% probability of waiting for 0~111 milliseconds.
|
|
59
|
+
|
|
60
|
+
The first padding block has special requirements: it requires 100% probability and a minimum length greater than 0. If no padding exists, the core automatically uses `100-111-1111.75-0-111.50-0-3333` as the padding setting.
|
|
61
|
+
|
|
62
|
+
The last block is identified by the core as the parameter used to authenticate the client. It can be generated using `./xray x25519` (using the PrivateKey part) or `./xray mlkem768` (using the Seed part). It must correspond to the client. `mlkem768` is a post-quantum algorithm that prevents the private key from being cracked by quantum computers (in the future) to impersonate the server if client parameters are leaked. This parameter is only used for verification; the handshake process is post-quantum secure regardless, and existing encrypted data cannot be cracked by future quantum computers.
|
|
63
|
+
|
|
64
|
+
> `fallbacks`: \[ [FallbackObject](../features/fallback.md) \]
|
|
65
|
+
|
|
66
|
+
An array containing a series of powerful fallback distribution configurations (optional).
|
|
67
|
+
For specific fallback configurations, please click [FallbackObject](../features/fallback.md#fallbacks-configuration).
|
|
68
|
+
|
|
69
|
+
### ClientObject
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
|
74
|
+
"level": 0,
|
|
75
|
+
"email": "love@xray.com",
|
|
76
|
+
"flow": "xtls-rprx-vision",
|
|
77
|
+
"reverse" {}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> `id`: string
|
|
82
|
+
|
|
83
|
+
The user ID for VLESS. It can be any string less than 30 bytes or a valid UUID.
|
|
84
|
+
A custom string and its mapped UUID are equivalent, which means you can write the id in the configuration file to identify the same user like this:
|
|
85
|
+
|
|
86
|
+
- Write `"id": "我爱🍉老师1314"`,
|
|
87
|
+
- Or write `"id": "5783a3e7-e373-51cd-8642-c83782b807c5"` (This UUID is the UUID mapping of `我爱🍉老师1314`).
|
|
88
|
+
|
|
89
|
+
The mapping standard is described in [VLESS UUID Mapping Standard: Mapping Custom Strings to a UUIDv5](https://github.com/XTLS/Xray-core/issues/158).
|
|
90
|
+
|
|
91
|
+
You can use the command `xray uuid -i "custom string"` to generate the UUID mapped from the custom string.
|
|
92
|
+
|
|
93
|
+
> You can also use the command `xray uuid` to generate a random UUID.
|
|
94
|
+
|
|
95
|
+
> `level`: number
|
|
96
|
+
|
|
97
|
+
User level. The connection will use the [local policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
98
|
+
|
|
99
|
+
The value of `level` corresponds to the `level` value in [policy](../policy.md#policyobject). If not specified, the default is 0.
|
|
100
|
+
|
|
101
|
+
> `email`: string
|
|
102
|
+
|
|
103
|
+
User email, used to distinguish traffic from different users (reflected in logs and statistics).
|
|
104
|
+
|
|
105
|
+
> `flow`: string
|
|
106
|
+
|
|
107
|
+
Flow control mode, used to select the XTLS algorithm.
|
|
108
|
+
|
|
109
|
+
Currently, the following flow control modes are available in the inbound protocol:
|
|
110
|
+
|
|
111
|
+
- No `flow` or empty string: Use standard TLS proxy.
|
|
112
|
+
- `xtls-rprx-vision`: Use the new XTLS mode, including inner handshake random padding.
|
|
113
|
+
|
|
114
|
+
XTLS is only available under the following combinations:
|
|
115
|
+
|
|
116
|
+
- TCP+TLS/Reality: In this case, encrypted data is directly copied at the underlying layer (if transmitting TLS 1.3).
|
|
117
|
+
- VLESS Encryption: No underlying transport restrictions. If the underlying layer does not support direct copying (see above), it only penetrates Encryption.
|
|
118
|
+
|
|
119
|
+
> `reverse`: struct
|
|
120
|
+
|
|
121
|
+
VLESS simplified reverse proxy configuration. It functions the same as the core's internal general reverse proxy but with simpler configuration.
|
|
122
|
+
|
|
123
|
+
The presence of this item indicates that connections from this user can be used to establish a reverse proxy tunnel.
|
|
124
|
+
|
|
125
|
+
Current syntax:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
"reverse": {
|
|
129
|
+
"tag": "r-outbound"
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
`tag` is the outbound proxy tag for this reverse proxy. Routing traffic to this outbound using routing rules will forward it through the reverse proxy to the connected client's routing system (see VLESS Outbound for client configuration details).
|
|
134
|
+
|
|
135
|
+
When multiple different connections (potentially from different devices) are connected, the core will randomly select one to dispatch reverse proxy data for each request.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
url: https://xtls.github.io/en/config/inbounds/vmess.html
|
|
3
|
+
source_url: https://raw.githubusercontent.com/XTLS/Xray-docs-next/main/docs/en/config/inbounds/vmess.md
|
|
4
|
+
title: VMess
|
|
5
|
+
category: inbounds
|
|
6
|
+
slug: inbounds/vmess
|
|
7
|
+
fetched_at: 2026-05-04T18:42:52.214Z
|
|
8
|
+
---
|
|
9
|
+
# VMess
|
|
10
|
+
|
|
11
|
+
[VMess](../../development/protocols/vmess.md) is an encrypted transport protocol, commonly acting as a bridge between the Xray client and server.
|
|
12
|
+
|
|
13
|
+
::: danger
|
|
14
|
+
VMess depends on system time. Please ensure that the system UTC time of the device running Xray is within 120 seconds of the actual time, regardless of the time zone. On Linux systems, you can install the `ntp` service to automatically synchronize system time.
|
|
15
|
+
:::
|
|
16
|
+
|
|
17
|
+
## InboundConfigurationObject
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"clients": [
|
|
22
|
+
{
|
|
23
|
+
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
|
24
|
+
"level": 0,
|
|
25
|
+
"email": "love@xray.com"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"default": {
|
|
29
|
+
"level": 0
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
> `clients`: \[ [ClientObject](#clientobject) \]
|
|
35
|
+
|
|
36
|
+
An array representing a group of users accepted by the server.
|
|
37
|
+
|
|
38
|
+
Each item is a [ClientObject](#clientobject).
|
|
39
|
+
|
|
40
|
+
When this configuration is used for dynamic ports, Xray will automatically create users.
|
|
41
|
+
|
|
42
|
+
> `default`: [DefaultObject](#defaultobject)
|
|
43
|
+
|
|
44
|
+
Optional. Default configuration for clients. Only valid when used in conjunction with `detour`.
|
|
45
|
+
|
|
46
|
+
### ClientObject
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
|
|
51
|
+
"level": 0,
|
|
52
|
+
"email": "love@xray.com"
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
> `id`: string
|
|
57
|
+
|
|
58
|
+
User ID for VMess. It can be any string less than 30 bytes, or a valid UUID.
|
|
59
|
+
|
|
60
|
+
::: tip
|
|
61
|
+
A custom string and its mapped UUID are equivalent. This means you can identify the same user in the configuration file by writing the ID in either way:
|
|
62
|
+
|
|
63
|
+
- Write `"id": "我爱🍉老师1314"`,
|
|
64
|
+
- Or write `"id": "5783a3e7-e373-51cd-8642-c83782b807c5"` (This UUID is the UUID mapping of `我爱🍉老师1314`)
|
|
65
|
+
:::
|
|
66
|
+
|
|
67
|
+
The mapping standard is described in [VLESS UUID Mapping Standard: Mapping Custom Strings to UUIDv5](https://github.com/XTLS/Xray-core/issues/158).
|
|
68
|
+
|
|
69
|
+
You can use the command `xray uuid -i "custom string"` to generate the UUID mapped from a custom string.
|
|
70
|
+
|
|
71
|
+
> You can also use the command `xray uuid` to generate a random UUID.
|
|
72
|
+
|
|
73
|
+
> `level`: number
|
|
74
|
+
|
|
75
|
+
User level. The connection will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
76
|
+
|
|
77
|
+
The value of `level` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.
|
|
78
|
+
|
|
79
|
+
> `email`: string
|
|
80
|
+
|
|
81
|
+
User email address, used to distinguish traffic from different users.
|
|
82
|
+
|
|
83
|
+
### DefaultObject
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"level": 0
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
> `level`: number
|
|
92
|
+
|
|
93
|
+
User level. The connection will use the [Local Policy](../policy.md#levelpolicyobject) corresponding to this user level.
|
|
94
|
+
|
|
95
|
+
The value of `level` corresponds to the value of `level` in [policy](../policy.md#policyobject). If not specified, it defaults to 0.
|