Add snell protocol
This commit is contained in:
@@ -31,6 +31,7 @@
|
||||
| `hysteria2` | [Hysteria2](./hysteria2/) | :material-close: |
|
||||
| `vless` | [VLESS](./vless/) | TCP |
|
||||
| `anytls` | [AnyTLS](./anytls/) | TCP |
|
||||
| `snell` | [Snell](./snell/) | TCP |
|
||||
| `tun` | [Tun](./tun/) | :material-close: |
|
||||
| `redirect` | [Redirect](./redirect/) | :material-close: |
|
||||
| `tproxy` | [TProxy](./tproxy/) | :material-close: |
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
| `hysteria2` | [Hysteria2](./hysteria2/) | :material-close: |
|
||||
| `vless` | [VLESS](./vless/) | TCP |
|
||||
| `anytls` | [AnyTLS](./anytls/) | TCP |
|
||||
| `snell` | [Snell](./snell/) | TCP |
|
||||
| `tun` | [Tun](./tun/) | :material-close: |
|
||||
| `redirect` | [Redirect](./redirect/) | :material-close: |
|
||||
| `tproxy` | [TProxy](./tproxy/) | :material-close: |
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
icon: material/new-box
|
||||
---
|
||||
|
||||
!!! question "Since sing-box 1.14.0"
|
||||
|
||||
### Structure
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-in",
|
||||
|
||||
... // Listen Fields
|
||||
|
||||
"version": 5,
|
||||
"psk": "password",
|
||||
"users": [
|
||||
{
|
||||
"name": "sekai",
|
||||
"userkey": "user-password"
|
||||
}
|
||||
],
|
||||
"obfs_mode": ""
|
||||
}
|
||||
```
|
||||
|
||||
### Version 6 Structure
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-in",
|
||||
|
||||
... // Listen Fields
|
||||
|
||||
"version": 6,
|
||||
"psk": "password",
|
||||
"users": [
|
||||
{
|
||||
"name": "sekai",
|
||||
"userkey": "user-password"
|
||||
}
|
||||
],
|
||||
"mode": ""
|
||||
}
|
||||
```
|
||||
|
||||
### Listen Fields
|
||||
|
||||
See [Listen Fields](/configuration/shared/listen/) for details.
|
||||
|
||||
### Fields
|
||||
|
||||
#### version
|
||||
|
||||
==Required==
|
||||
|
||||
The Snell protocol version, one of `5` `6`.
|
||||
|
||||
Version `5` supports HTTP obfuscation (`obfs_mode`); version `6` replaces it
|
||||
with traffic shaping (`mode`) and requires a `psk` of 12 to 255 bytes.
|
||||
|
||||
!!! note
|
||||
|
||||
Since we intentionally do not support the QUIC proxy mode of Snell v5, the v5 wire protocol
|
||||
is effectively identical to v4, so no separate v4 server or v5 client is provided.
|
||||
|
||||
#### psk
|
||||
|
||||
==Required==
|
||||
|
||||
The pre-shared key.
|
||||
|
||||
#### users
|
||||
|
||||
Snell users.
|
||||
|
||||
When set, the server runs in multi-user mode: each entry has a `name` (optional, used in
|
||||
logs) and a `userkey` (the user's key). The top-level `psk` remains the server key.
|
||||
|
||||
#### obfs_mode
|
||||
|
||||
==Version 5 only==
|
||||
|
||||
HTTP obfuscation mode, one of `none` `http`.
|
||||
|
||||
`none` is used by default.
|
||||
|
||||
#### mode
|
||||
|
||||
==Version 6 only==
|
||||
|
||||
Traffic shaping mode, one of `default` `unshaped` `unsafe-raw`.
|
||||
|
||||
`default` is used by default.
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
icon: material/new-box
|
||||
---
|
||||
|
||||
!!! question "自 sing-box 1.14.0 起"
|
||||
|
||||
### 结构
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-in",
|
||||
|
||||
... // 监听字段
|
||||
|
||||
"version": 5,
|
||||
"psk": "password",
|
||||
"users": [
|
||||
{
|
||||
"name": "sekai",
|
||||
"userkey": "user-password"
|
||||
}
|
||||
],
|
||||
"obfs_mode": ""
|
||||
}
|
||||
```
|
||||
|
||||
### 版本 6 结构
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-in",
|
||||
|
||||
... // 监听字段
|
||||
|
||||
"version": 6,
|
||||
"psk": "password",
|
||||
"users": [
|
||||
{
|
||||
"name": "sekai",
|
||||
"userkey": "user-password"
|
||||
}
|
||||
],
|
||||
"mode": ""
|
||||
}
|
||||
```
|
||||
|
||||
### 监听字段
|
||||
|
||||
参阅 [监听字段](/zh/configuration/shared/listen/)。
|
||||
|
||||
### 字段
|
||||
|
||||
#### version
|
||||
|
||||
==必填==
|
||||
|
||||
Snell 协议版本,`5` `6` 之一。
|
||||
|
||||
版本 `5` 支持 HTTP 混淆(`obfs_mode`);版本 `6` 以流量整形(`mode`)取而代之,并要求
|
||||
`psk` 长度为 12 到 255 字节。
|
||||
|
||||
!!! note
|
||||
|
||||
由于我们有意不支持 Snell v5 的 QUIC 代理模式,v5 的线路协议实际上与 v4 没有区别,
|
||||
因此不提供独立的 v4 服务器和 v5 客户端。
|
||||
|
||||
#### psk
|
||||
|
||||
==必填==
|
||||
|
||||
预共享密钥。
|
||||
|
||||
#### users
|
||||
|
||||
Snell 用户。
|
||||
|
||||
设置后,服务器运行于多用户模式:每一项包含 `name`(可选,用于日志)和 `userkey`
|
||||
(用户密钥)。顶层的 `psk` 仍作为服务器密钥。
|
||||
|
||||
#### obfs_mode
|
||||
|
||||
==仅版本 5==
|
||||
|
||||
HTTP 混淆模式,`none` `http` 之一。
|
||||
|
||||
默认为 `none`。
|
||||
|
||||
#### mode
|
||||
|
||||
==仅版本 6==
|
||||
|
||||
流量整形模式,`default` `unshaped` `unsafe-raw` 之一。
|
||||
|
||||
默认为 `default`。
|
||||
@@ -31,6 +31,7 @@
|
||||
| `tuic` | [TUIC](./tuic/) |
|
||||
| `hysteria2` | [Hysteria2](./hysteria2/) |
|
||||
| `anytls` | [AnyTLS](./anytls/) |
|
||||
| `snell` | [Snell](./snell/) |
|
||||
| `tor` | [Tor](./tor/) |
|
||||
| `ssh` | [SSH](./ssh/) |
|
||||
| `dns` | [DNS](./dns/) |
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
| `tuic` | [TUIC](./tuic/) |
|
||||
| `hysteria2` | [Hysteria2](./hysteria2/) |
|
||||
| `anytls` | [AnyTLS](./anytls/) |
|
||||
| `snell` | [Snell](./snell/) |
|
||||
| `tor` | [Tor](./tor/) |
|
||||
| `ssh` | [SSH](./ssh/) |
|
||||
| `dns` | [DNS](./dns/) |
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
---
|
||||
icon: material/new-box
|
||||
---
|
||||
|
||||
!!! question "Since sing-box 1.14.0"
|
||||
|
||||
### Structure
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-out",
|
||||
|
||||
"server": "127.0.0.1",
|
||||
"server_port": 1080,
|
||||
"version": 4,
|
||||
"psk": "password",
|
||||
"userkey": "",
|
||||
"reuse": false,
|
||||
"network": "tcp",
|
||||
"obfs_mode": "",
|
||||
"obfs_host": "",
|
||||
|
||||
... // Dial Fields
|
||||
}
|
||||
```
|
||||
|
||||
### Version 6 Structure
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-out",
|
||||
|
||||
"server": "127.0.0.1",
|
||||
"server_port": 1080,
|
||||
"version": 6,
|
||||
"psk": "password",
|
||||
"userkey": "",
|
||||
"reuse": false,
|
||||
"network": "tcp",
|
||||
"mode": "",
|
||||
|
||||
... // Dial Fields
|
||||
}
|
||||
```
|
||||
|
||||
### Fields
|
||||
|
||||
#### server
|
||||
|
||||
==Required==
|
||||
|
||||
The server address.
|
||||
|
||||
#### server_port
|
||||
|
||||
==Required==
|
||||
|
||||
The server port.
|
||||
|
||||
#### version
|
||||
|
||||
==Required==
|
||||
|
||||
The Snell protocol version, one of `4` `6`.
|
||||
|
||||
Version `4` supports HTTP obfuscation (`obfs_mode` / `obfs_host`); version `6`
|
||||
replaces it with traffic shaping (`mode`) and requires a `psk` of 12 to 255
|
||||
bytes.
|
||||
|
||||
!!! note
|
||||
|
||||
Since we intentionally do not support the QUIC proxy mode of Snell v5, the v5 wire protocol
|
||||
is effectively identical to v4, so no separate v4 server or v5 client is provided.
|
||||
|
||||
#### psk
|
||||
|
||||
==Required==
|
||||
|
||||
The pre-shared key.
|
||||
|
||||
#### userkey
|
||||
|
||||
The user key, used to authenticate against a multi-user server.
|
||||
|
||||
#### reuse
|
||||
|
||||
Enable connection reuse (the Snell v2 `CONNECT` command).
|
||||
|
||||
#### network
|
||||
|
||||
Enabled network
|
||||
|
||||
One of `tcp` `udp`.
|
||||
|
||||
Both is enabled by default.
|
||||
|
||||
#### obfs_mode
|
||||
|
||||
==Version 4 only==
|
||||
|
||||
HTTP obfuscation mode, one of `none` `http`.
|
||||
|
||||
`none` is used by default.
|
||||
|
||||
#### obfs_host
|
||||
|
||||
==Version 4 only==
|
||||
|
||||
The HTTP `Host` header sent when `obfs_mode` is `http`.
|
||||
|
||||
`bing.com` is used by default.
|
||||
|
||||
#### mode
|
||||
|
||||
==Version 6 only==
|
||||
|
||||
Traffic shaping mode, one of `default` `unshaped` `unsafe-raw`.
|
||||
|
||||
`default` is used by default.
|
||||
|
||||
### Dial Fields
|
||||
|
||||
See [Dial Fields](/configuration/shared/dial/) for details.
|
||||
@@ -0,0 +1,124 @@
|
||||
---
|
||||
icon: material/new-box
|
||||
---
|
||||
|
||||
!!! question "自 sing-box 1.14.0 起"
|
||||
|
||||
### 结构
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-out",
|
||||
|
||||
"server": "127.0.0.1",
|
||||
"server_port": 1080,
|
||||
"version": 4,
|
||||
"psk": "password",
|
||||
"userkey": "",
|
||||
"reuse": false,
|
||||
"network": "tcp",
|
||||
"obfs_mode": "",
|
||||
"obfs_host": "",
|
||||
|
||||
... // 拨号字段
|
||||
}
|
||||
```
|
||||
|
||||
### 版本 6 结构
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "snell",
|
||||
"tag": "snell-out",
|
||||
|
||||
"server": "127.0.0.1",
|
||||
"server_port": 1080,
|
||||
"version": 6,
|
||||
"psk": "password",
|
||||
"userkey": "",
|
||||
"reuse": false,
|
||||
"network": "tcp",
|
||||
"mode": "",
|
||||
|
||||
... // 拨号字段
|
||||
}
|
||||
```
|
||||
|
||||
### 字段
|
||||
|
||||
#### server
|
||||
|
||||
==必填==
|
||||
|
||||
服务器地址。
|
||||
|
||||
#### server_port
|
||||
|
||||
==必填==
|
||||
|
||||
服务器端口。
|
||||
|
||||
#### version
|
||||
|
||||
==必填==
|
||||
|
||||
Snell 协议版本,`4` `6` 之一。
|
||||
|
||||
版本 `4` 支持 HTTP 混淆(`obfs_mode` / `obfs_host`);版本 `6` 以流量整形(`mode`)
|
||||
取而代之,并要求 `psk` 长度为 12 到 255 字节。
|
||||
|
||||
!!! note
|
||||
|
||||
由于我们有意不支持 Snell v5 的 QUIC 代理模式,v5 的线路协议实际上与 v4 没有区别,
|
||||
因此不提供独立的 v4 服务器和 v5 客户端。
|
||||
|
||||
#### psk
|
||||
|
||||
==必填==
|
||||
|
||||
预共享密钥。
|
||||
|
||||
#### userkey
|
||||
|
||||
用户密钥,用于向多用户服务器进行认证。
|
||||
|
||||
#### reuse
|
||||
|
||||
启用连接复用(Snell v2 `CONNECT` 命令)。
|
||||
|
||||
#### network
|
||||
|
||||
启用的网络协议。
|
||||
|
||||
`tcp` 或 `udp`。
|
||||
|
||||
默认所有。
|
||||
|
||||
#### obfs_mode
|
||||
|
||||
==仅版本 4==
|
||||
|
||||
HTTP 混淆模式,`none` `http` 之一。
|
||||
|
||||
默认为 `none`。
|
||||
|
||||
#### obfs_host
|
||||
|
||||
==仅版本 4==
|
||||
|
||||
`obfs_mode` 为 `http` 时发送的 HTTP `Host` 头。
|
||||
|
||||
默认为 `bing.com`。
|
||||
|
||||
#### mode
|
||||
|
||||
==仅版本 6==
|
||||
|
||||
流量整形模式,`default` `unshaped` `unsafe-raw` 之一。
|
||||
|
||||
默认为 `default`。
|
||||
|
||||
### 拨号字段
|
||||
|
||||
参阅 [拨号字段](/zh/configuration/shared/dial/)。
|
||||
Reference in New Issue
Block a user