From 4d15aab6e2ffb108c3e226b6067bdfe1e50c1e2b Mon Sep 17 00:00:00 2001 From: JimhHan <50871214+JimhHan@users.noreply.github.com> Date: Tue, 16 Mar 2021 07:10:04 +0800 Subject: [PATCH] Change: reformat protocols --- .../{_index.md => README.md} | 17 ++------ docs/config/inbound-protocols/dokodemo.md | 13 +----- docs/config/inbound-protocols/http.md | 28 ++++--------- docs/config/inbound-protocols/shadowsocks.md | 9 +--- docs/config/inbound-protocols/socks.md | 9 +--- docs/config/inbound-protocols/trojan.md | 32 ++++----------- docs/config/inbound-protocols/vless.md | 41 +++++++------------ docs/config/inbound-protocols/vmess.md | 41 +++++++------------ docs/config/outbound-protocols/_index.md | 2 +- docs/config/transports/_index.md | 2 +- 10 files changed, 57 insertions(+), 137 deletions(-) rename docs/config/inbound-protocols/{_index.md => README.md} (73%) diff --git a/docs/config/inbound-protocols/_index.md b/docs/config/inbound-protocols/README.md similarity index 73% rename from docs/config/inbound-protocols/_index.md rename to docs/config/inbound-protocols/README.md index b58db4614..aec3cacca 100644 --- a/docs/config/inbound-protocols/_index.md +++ b/docs/config/inbound-protocols/README.md @@ -1,18 +1,9 @@ ---- -alwaysopen: false -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -# head:
-hide: -- toc -# post: " \U0001F44B" -title: Inbounds 可用协议列表 -weight: 5 ---- -{{% alert theme="warning" %}}**这个章节包含了目前所有可用于 Inbounds 的协议及具体配置细节.**{{% /alert %}} +# Inbounds 协议 + +> 这个章节包含了目前所有可用于 Inbounds 的协议及具体配置细节. ## 协议列表 ---- + >[Dokodemo-door](./dokodemo) Dokodemo door(任意门)可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果。 >[HTTP](./http) diff --git a/docs/config/inbound-protocols/dokodemo.md b/docs/config/inbound-protocols/dokodemo.md index ba64198d4..76c723a8f 100644 --- a/docs/config/inbound-protocols/dokodemo.md +++ b/docs/config/inbound-protocols/dokodemo.md @@ -1,16 +1,9 @@ ---- -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -title: Dokodemo door -weight: 2 ---- +# Dokodemo door Dokodemo door(任意门)可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果。 ## InboundConfigurationObject ---- - ```json { "address": "8.8.8.8", @@ -52,10 +45,6 @@ Dokodemo door(任意门)可以监听一个本地端口,并把所有进入 userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0. - - ## 透明代理配置样例 ---- - 此部分请参考[透明代理(TProxy)配置教程](../../../documents/level-2/tproxy)。 diff --git a/docs/config/inbound-protocols/http.md b/docs/config/inbound-protocols/http.md index e9c436329..976745eda 100644 --- a/docs/config/inbound-protocols/http.md +++ b/docs/config/inbound-protocols/http.md @@ -1,33 +1,25 @@ ---- -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -title: HTTP -weight: 3 ---- - +# HTTP HTTP 协议。 -::: danger +::: warning **http 协议没有对传输加密,不适宜经公网中传输,更容易成为被人用作攻击的肉鸡。** +::: `http inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。 -::: tip -**TIP 1**\ +::: tip TIP 1 `http proxy` 只能代理 tcp 协议,udp 系的协议均不能通过。 +::: - -::: tip -**TIP 2**\ +::: tip TIP 2 在 Linux 中使用以下环境变量即可在当前 session 使用全局 HTTP 代理(很多软件都支持这一设置,也有不支持的)。 - `export http_proxy=http://127.0.0.1:8080/` (地址须改成你配置的 HTTP 入站代理地址) - `export https_proxy=$http_proxy` - +::: ## InboundConfigurationObject ---- ```json { @@ -61,7 +53,7 @@ HTTP 协议。 ::: tip 若配置不当,开启此选项会导致死循环。 - +::: > `userLevel`: number @@ -69,10 +61,8 @@ HTTP 协议。 userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0. - - ### AccountObject ---- + ```json { "user": "my-username", diff --git a/docs/config/inbound-protocols/shadowsocks.md b/docs/config/inbound-protocols/shadowsocks.md index 651c49335..b8442c385 100644 --- a/docs/config/inbound-protocols/shadowsocks.md +++ b/docs/config/inbound-protocols/shadowsocks.md @@ -1,9 +1,4 @@ ---- -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -title: Shadowsocks -weight: 8 ---- +# Shadowsocks [Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) 协议,兼容大部分其它版本的实现。 @@ -24,7 +19,7 @@ weight: 8 ::: danger "none" 不加密方式下,服务器端不会验证 "password" 中的密码。为确保安全性, 一般需要加上 TLS 并在传输层使用安全配置,例如 WebSocket 配置较长的 path - +::: ## InboundConfigurationObject diff --git a/docs/config/inbound-protocols/socks.md b/docs/config/inbound-protocols/socks.md index c28cc8a91..581d9399c 100644 --- a/docs/config/inbound-protocols/socks.md +++ b/docs/config/inbound-protocols/socks.md @@ -1,14 +1,10 @@ ---- -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -title: Socks -weight: 4 ---- +# 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)。 ::: danger **socks 协议没有对传输加密,不适宜经公网中传输** +::: `socks inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。 @@ -64,7 +60,6 @@ userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的 ### AccountObject ---- ```json { diff --git a/docs/config/inbound-protocols/trojan.md b/docs/config/inbound-protocols/trojan.md index 322000b64..538ad5479 100644 --- a/docs/config/inbound-protocols/trojan.md +++ b/docs/config/inbound-protocols/trojan.md @@ -1,20 +1,13 @@ ---- -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -title: Trojan -weight: 7 ---- +# Trojan [Trojan](https://trojan-gfw.github.io/trojan/protocol) 协议 ::: danger Trojan 被设计工作在正确配置的加密 TLS 隧道 - +::: ## InboundConfigurationObject ---- - ```json { "clients": [ @@ -44,15 +37,12 @@ Trojan 被设计工作在正确配置的加密 TLS 隧道 一个数组,包含一系列强大的回落分流配置(可选)。
fallbacks 的具体配置请点击[FallbackObject](../../fallback/#fallbacks-配置) -{{% notice %}} -**TIP**\ -Xray 的 Trojan 有完整的 fallbacks 支持,配置方式完全一致。
+::: tip +Xray 的 Trojan 有完整的 fallbacks 支持,配置方式完全一致。 触发回落的条件也与VLESS类似:首包长度 < 58 或第 57 个字节不为 '\r'(因为 Trojan 没有协议版本)或身份认证失败。 - - +::: ### ClientObject ---- ```json { @@ -73,7 +63,7 @@ Xray 的 Trojan 有完整的 fallbacks 支持,配置方式完全一致。
::: danger 如果存在多个 ClientObject, 请注意 email 不可以重复。 - +::: > `level`: number @@ -90,14 +80,8 @@ userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的 - `xtls-rprx-origin`:最初的流控模式,此时客户端仅可选择 `xtls-rprx-origin` 和 `xtls-rprx-origin-udp443` 这两种流控模式。该模式纪念价值大于实际使用价值 - `xtls-rprx-direct`:**推荐**,所有平台皆可使用的典型流控方式,此时客户端可选择任何流控模式 -::: warning -**注意** - +::: warning 注意 当 `flow` 被指定时,还需要将该入站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。 +::: 此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。 - - - - - diff --git a/docs/config/inbound-protocols/vless.md b/docs/config/inbound-protocols/vless.md index ef737bcb8..24a8a4279 100644 --- a/docs/config/inbound-protocols/vless.md +++ b/docs/config/inbound-protocols/vless.md @@ -1,14 +1,9 @@ ---- -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -title: VLESS -weight: 5 ---- +# vless ::: danger -目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。
-目前 VLESS 不支持分享。
- +目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。 +目前 VLESS 不支持分享。 +::: VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部分,可以作为 Xray 客户端和服务器之间的桥梁。 @@ -42,23 +37,20 @@ VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部 其中每一项是一个用户 [ClientObject](#clientobject)。 > `decryption`: "none" -现阶段需要填 `"none"`,不能留空。
+ +现阶段需要填 `"none"`,不能留空。 若未正确设置 decryption 的值,使用 Xray 或 -test 时会收到错误信息。 -注意这里是 decryption,和 clients 同级。
-decryption 和 vmess 协议的 encryption 的位置不同,是因为若套一层约定加密,服务端需要先解密才能知道是哪个用户。
+注意这里是 decryption,和 clients 同级。 +decryption 和 vmess 协议的 encryption 的位置不同,是因为若套一层约定加密,服务端需要先解密才能知道是哪个用户。 > `fallbacks`: \[ [FallbackObject](../../fallback) \] -一个数组,包含一系列强大的回落分流配置(可选)。
+一个数组,包含一系列强大的回落分流配置(可选)。 fallbacks 的具体配置请点击[FallbackObject](../../fallback/#fallbacks-配置) -
- ### ClientObject ---- - ```json { "id": "5783a3e7-e373-51cd-8642-c83782b807c5", @@ -70,15 +62,16 @@ fallbacks 的具体配置请点击[FallbackObject](../../fallback/#fallbacks-配 > `id`: string -VLESS 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID.
+VLESS 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID. 自定义字符串和其映射的 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.
-也可以使用命令 `xray uuid` 生成随机的UUID. +你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID. + +>也可以使用命令 `xray uuid` 生成随机的UUID. > `level`: number @@ -99,12 +92,8 @@ level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. - `xtls-rprx-origin`:最初的流控模式,此时客户端仅可选择 `xtls-rprx-origin` 和 `xtls-rprx-origin-udp443` 这两种流控模式。该模式纪念价值大于实际使用价值 - `xtls-rprx-direct`:**推荐**,所有平台皆可使用的典型流控方式,此时客户端可选择任何流控模式 -::: warning -**注意** - +::: warning 注意 当 `flow` 被指定时,还需要将该入站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。 +::: 此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。 - - -
\ No newline at end of file diff --git a/docs/config/inbound-protocols/vmess.md b/docs/config/inbound-protocols/vmess.md index 1e90bd7de..f3835a6a2 100644 --- a/docs/config/inbound-protocols/vmess.md +++ b/docs/config/inbound-protocols/vmess.md @@ -1,18 +1,12 @@ ---- -date: "2020-12-23T00:00:00.000Z" -description: Project X 的文档. -title: VMess -weight: 6 ---- +# VMess [VMess](../../../develop/protocols/vmess) 是一个加密传输协议,通常作为 Xray 客户端和服务器之间的桥梁。 ::: danger -VMess 依赖于系统时间,请确保使用 Xray 的系统 UTC 时间误差在 90 秒之内,时区无关。在 Linux 系统中可以安装`ntp`服务来自动同步系统时间。
- +VMess 依赖于系统时间,请确保使用 Xray 的系统 UTC 时间误差在 90 秒之内,时区无关。在 Linux 系统中可以安装`ntp`服务来自动同步系统时间。 +::: ## InboundConfigurationObject ---- ```json { @@ -61,7 +55,6 @@ VMess 依赖于系统时间,请确保使用 Xray 的系统 UTC 时间误差在 ### ClientObject ---- ```json { @@ -74,15 +67,19 @@ VMess 依赖于系统时间,请确保使用 Xray 的系统 UTC 时间误差在 > `id`: string -Vmess 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID.
+Vmess 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID. + +::: tip 自定义字符串和其映射的 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.
-也可以使用命令 `xray uuid` 生成随机的UUID. +你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID. + +> 也可以使用命令 `xray uuid` 生成随机的UUID. > `level`: number @@ -100,16 +97,13 @@ level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. ::: tip 客户端 AlterID 设置为 0 代表启用 VMessAEAD ;服务端为自动适配,可同时兼容启用和未开启 VMessAEAD 的客户端。 客户端可通过设置环境变量 Xray_VMESS_AEAD_DISABLED=true 强行禁用 VMessAEAD - +::: > `email`: string 用户邮箱地址,用于区分不同用户的流量。 - - ### DetourObject ---- ```json { @@ -121,10 +115,7 @@ level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 一个 inbound 的`tag`, 指定的 inbound 的必须是使用 VMess 协议的 inbound. - - ### DefaultObject ---- ```json { @@ -143,10 +134,7 @@ level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 动态端口的默认`alterId`,默认值为`0`。 - - ## VMess MD5 认证信息 玷污机制 ---- 为了进一步对抗可能的探测和封锁,每个 VMess 认证数据的服务端结构都会包含一个一次写入的玷污状态标记,初始状态为无瑕状态,当服务器检测到重放探测时或者因为其他原因入站连接出错以致校验数据不正确时,该连接所对应的请求认证数据会被玷污。 @@ -157,6 +145,5 @@ level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如果服务器正在被重放攻击,可能会出现连接不稳定的情况。 ::: tip -拥有服务器 UUID 以及其他连接数据的恶意程序可能根据此机制对服务器发起拒绝服务攻击,受到此类攻击的服务可以通过修改 proxy/vmess/validator.go 文件中 func (v \*TimedUserValidator) BurnTaintFuse(userHash []byte) error 函数的 atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 1) 语句为 atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 0) 来解除服务器对此类攻击的安全保护机制。使用 VMessAEAD 认证机制的客户端不受到 VMess MD5 认证信息 玷污机制 的影响。 - - +拥有服务器 UUID 以及其他连接数据的恶意程序可能根据此机制对服务器发起拒绝服务攻击,受到此类攻击的服务可以通过修改 `proxy/vmess/validator.go` 文件中 `func (v \*TimedUserValidator) BurnTaintFuse(userHash []byte) error` 函数的 `atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 1)` 语句为 `atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 0)` 来解除服务器对此类攻击的安全保护机制。使用 VMessAEAD 认证机制的客户端不受到 VMess MD5 认证信息 玷污机制 的影响。 +::: diff --git a/docs/config/outbound-protocols/_index.md b/docs/config/outbound-protocols/_index.md index 772bce2a1..8dd4c61d0 100644 --- a/docs/config/outbound-protocols/_index.md +++ b/docs/config/outbound-protocols/_index.md @@ -10,7 +10,7 @@ title: Outbounds 可用协议列表 weight: 6 --- -{{% alert theme="warning" %}}**这个章节包含了目前所有可用于 Outbounds 的协议及具体配置细节.**{{% /alert %}} +::: warning**这个章节包含了目前所有可用于 Outbounds 的协议及具体配置细节.**{{% /alert %}} ## 协议列表 --- diff --git a/docs/config/transports/_index.md b/docs/config/transports/_index.md index 8a86c9389..d2147b828 100644 --- a/docs/config/transports/_index.md +++ b/docs/config/transports/_index.md @@ -10,7 +10,7 @@ title: 传输方式列表 weight: 7 --- -{{% alert theme="warning" %}}**这个章节包含了目前所有的传输方式及相关的具体配置.**{{% /alert %}} +::: warning**这个章节包含了目前所有的传输方式及相关的具体配置.**{{% /alert %}} ## 传输方式列表