# 代理伺服器協定

## `[l4proxies]`

定義 Shadowsocks、VMess 等第四層代理伺服器，每筆記錄的鍵為自訂代理伺服器名稱。

### 共用欄位

| 鍵 | 類型 | 說明 | 必填 |
|---|---|---|---|
| `type` | 字串 | `shadowsocks`、`vmess`、`anytls`、`vless`、`trojan`、`http` 或 `socks5`。 | 是 |
| `nickname` | 字串 | 易讀的顯示名稱。 | 否 |
| `server` | 字串 | 伺服器位址。 | 是 |
| `port` | 整數 | 伺服器連接埠。 | 是 |
| `enabled` | 布林值 | 是否啟用，預設 `true`。 | 否 |
| `route-via-vpn` | 布林值 | 1.8.0 新增，代理伺服器上游連線是否經 VPN 路由，以串接另一個 VPN/代理伺服器。預設 `false`；伺服器 IP 必須是 IPv4 位址。 | 否 |

### Shadowsocks 欄位

| 鍵 | 類型 | 說明 | 必填 |
|---|---|---|---|
| `password` | 字串 | 密碼。 | 是 |
| `method` | 字串 | AEAD：`aes-128-gcm`、`aes-256-gcm`、`chacha20-ietf-poly1305`；2022：`2022-blake3-aes-128-gcm`、`2022-blake3-aes-256-gcm`、`2022-blake3-chacha20-poly1305`。 | 是 |
| `obfs-type` | 字串 | 混淆類型 `tls` 或 `http`。 | 否 |
| `obfs-host` | 字串 | 混淆主機；使用 `obfs-type` 時需要。 | 否 |
| `obfs-path` | 字串 | 混淆路徑；`obfs-type=http` 時需要。 | 否 |
| `udp-forward` | 布林值 | 是否轉送 UDP，預設 `false`。 | 否 |

Shadowsocks 2022 的 `password` 必須是 base64 編碼的預先共用金鑰。解碼後，`2022-blake3-aes-128-gcm` 需要 16 位元組；`2022-blake3-aes-256-gcm` 與 `2022-blake3-chacha20-poly1305` 需要 32 位元組。

### VMess 欄位

| 鍵 | 類型 | 說明 | 必填 |
|---|---|---|---|
| `user-id` | UUID | 使用者 ID。 | 是 |
| `alter-id` | 整數 | alter ID。 | 是 |
| `security` | 字串 | 安全類型，例如 `auto`。 | 是 |
| `transport-type` | 字串 | `tcp` 或 `ws`。 | 是 |
| `ws-path` | 字串 | WebSocket 路徑；`transport-type=ws` 時需要。 | 否 |
| `sni` | 字串 | TLS 伺服器名稱指示。 | 否 |
| `skip-cert-check` | 布林值 | `true` 時略過憑證驗證，預設 `false`。 | 否 |
| `alpn` | 字串 | 應用層協定協商，預設 `h2,http/1.1`。 | 否 |

| 鍵 | 說明 |
|---|---|
| `ws-host` | 選填的 WebSocket HTTP Host，與 TLS SNI 分開設定。 |
| `ws-h2-max-streams` | 選填的 HTTP/2 WebSocket 同時串流上限，範圍 1–256。省略時採用執行階段預設值。 |
| `tls-enabled` | 布林值，預設 `true`。依伺服器需求啟用 TLS。 |

### AnyTLS 欄位

使用 `type=anytls`。下列欄位來自共用設定檔 schema。

| 鍵 | 類型 | 說明 | 必填 |
|---|---|---|---|
| `password` | 字串 | AnyTLS 密碼。 | 是 |
| `sni` | 字串 | TLS 伺服器名稱指示，省略時使用 `server`。 | 否 |
| `skip-cert-check` | 布林值 | `true` 時略過上游憑證驗證，預設 `false`。 | 否 |
| `session-reuse` | 布林值 | 啟用閒置工作階段重用，預設 `true`。 | 否 |
| `idle-session-check-interval` | 整數 | 閒置工作階段檢查間隔，1–3600 秒，預設 30。 | 否 |
| `idle-session-timeout` | 整數 | 閒置工作階段逾時，1–3600 秒，預設 60。 | 否 |
| `min-idle-sessions` | 整數 | 至少保留的閒置工作階段數，0–64，預設 1。 | 否 |
| `max-idle-sessions` | 整數 | 最多保留的閒置工作階段數，0–64，預設 4。 | 否 |

```ini
[l4proxies]
any=type:anytls,nickname:AnyTLS,server:any.example.com,port:443,password:secret,sni:cdn.example.com,skip-cert-check:false,session-reuse:true,idle-session-check-interval:30,idle-session-timeout:60,min-idle-sessions:1,max-idle-sessions:4,enabled:true
```

### HTTP 與 SOCKS5 欄位

| 鍵 | 類型 | 說明 | 必填 |
|---|---|---|---|
| `username` | 字串 | 上游驗證使用的代理伺服器使用者名稱。 | 否 |
| `password` | 字串 | 上游驗證使用的代理伺服器密碼。 | 否 |
| `udp-forward` | 布林值 | SOCKS5 UDP 轉送旗標；目前保留供設定檔相容使用，實際 UDP 轉送取決於執行階段支援。 | 否 |

```ini
[l4proxies]
tshttp=type:http,nickname:tshttp,server:3.3.3.3,port:1055,enabled:true
tssocks=type:socks5,nickname:tssocks,server:10.1.1.1,port:1055,username:user,password:pass,enabled:true,udp-forward:false,route-via-vpn:true
ss2022=type:shadowsocks,nickname:SS2022,server:ss.example.com,port:8388,password:base64-psk,method:2022-blake3-aes-256-gcm,udp-forward:true,enabled:true
any=type:anytls,nickname:AnyTLS,server:any.example.com,port:443,password:secret,sni:cdn.example.com,skip-cert-check:false,session-reuse:true
```

### VLESS：TCP + REALITY + Vision（Pro）

2.1.0 僅支援這個組合。不支援 UDP/XUDP、WebSocket、gRPC、其他指紋或一般 VLESS/TLS。請以實際伺服器資料取代範例中的連線資訊與憑證資料。

| 鍵 | 說明 |
|---|---|
| `user-id` | 使用者 UUID。 |
| `transport-type` | 僅支援 `tcp`，預設 `tcp`。 |
| `transport-security` | 必填：`reality`。 |
| `flow` | 必填：`xtls-rprx-vision`。 |
| `encryption` | 僅支援 `none`，預設 `none`。 |
| `sni` | 必填，伺服器設定的 REALITY 偽裝伺服器 DNS 名稱。 |
| `reality-public-key` | 必填，32 位元組公鑰的標準 base64url 編碼，不含填補字元。 |
| `reality-short-id` | 選填；留空或偶數位十六進位數字，最多 16 位，必須與伺服器一致。 |
| `reality-fingerprint` | 僅支援 `chrome`，預設 `chrome`。 |
| `udp-forward` | 必須為 `false` 或省略；僅支援 TCP。 |

```ini
[l4proxies]
vless-1=type:vless,server:proxy.example.com,port:443,user-id:00010203-0405-0607-0809-0a0b0c0d0e0f,transport-type:tcp,transport-security:reality,flow:xtls-rprx-vision,encryption:none,sni:cover.example.com,reality-public-key:E59WjnvZcQMu7tR7_BgyhycuEdBS-CtKxfImRCdAvFM,reality-short-id:0123456789abcdef,reality-fingerprint:chrome,udp-forward:false
```

### Trojan：TCP 或 WebSocket + TLS（Pro）

必須使用 TLS。不支援 UDP、gRPC、mux 或 early data。一般使用請保持憑證驗證開啟。

| 鍵 | 說明 |
|---|---|
| `password` | 必填，伺服器密碼。 |
| `transport-type` | `tcp`（預設）或 `ws`。 |
| `sni` | TLS 伺服器名稱，預設採用 `server`，必須符合憑證。 |
| `skip-cert-check` | 預設 `false`；設為 `true` 會停用伺服器憑證驗證。 |
| `alpn` | 以逗號分隔的 TLS ALPN，須以引號包成單一值。WebSocket 必須包含 `http/1.1`。 |
| `ws-path` | 以 `/` 開頭的 WebSocket 路徑，用於 `ws`。 |
| `ws-host` | 選填的 WebSocket HTTP Host，與 TLS SNI 各自設定。 |
| `tls-enabled` | 必須為 `true` 或省略。 |
| `udp-forward` | 必須為 `false` 或省略；僅支援 TCP。 |

```ini
[l4proxies]
trojan-1=type:trojan,server:trojan.example.com,port:443,password:"replace-with-password",sni:trojan.example.com,skip-cert-check:false
trojan-ws=type:trojan,server:trojan.example.com,port:443,password:"replace-with-password",transport-type:ws,ws-path:/proxy,ws-host:trojan.example.com,sni:trojan.example.com,alpn:"http/1.1",skip-cert-check:false
```

## 匯入分享連結

貼上支援的 `vless://`、`trojan://`、`vmess://`、`anytls://` 或 `ss://` 連結，或掃描 QR Code、選取 QR Code 圖片。檢查匯入草稿後儲存。匯入僅填入設定，不會連線或驗證伺服器；不支援的選項會顯示錯誤，不會直接捨棄。
