---
title: "SOCKS5 與 SOCKS5 over TLS"
description: "Potatso 支援的 SOCKS5 與 SOCKS5 over TLS 選項、連結與功能。"
---

> Documentation Index
> Fetch the complete documentation index at: https://potatso.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# SOCKS5 與 SOCKS5 over TLS

SOCKS5 伺服器會替你開啟連線並轉送 UDP，有無使用者名稱和密碼都可以（[RFC 1928](https://www.rfc-editor.org/rfc/rfc1928)）。**SOCKS5 over TLS** 是同一種伺服器，但透過 TLS 連上，所以與伺服器之間的連線同樣經過加密。

Potatso 傳給伺服器的是你造訪網站的名稱，而不是它的位址，由伺服器自行查詢該名稱。其他 App 稱這種做法為 `socks5h`，也就是遠端 DNS。

你可以手動加入 SOCKS5 伺服器、使用 [`socks5://` 連結](#links)，或透過匯入：

- Clash 或 Mihomo 訂閱（`type: socks5`），
- Surge 設定（`socks5` 和 `socks5-tls`），
- Xray 或 V2Ray 設定（`socks` outbound，可搭配或不搭配 TLS）。

若要手動加入 SOCKS5 over TLS 伺服器，請選擇 **SOCKS5** 並開啟 **TLS**。

## 設定 {#settings}

| 設定 | 說明 |
| --- | --- |
| 伺服器、連接埠 | 伺服器的位址與連接埠。IPv6 位址也可以使用。 |
| 驗證 | 無，或使用者名稱和密碼。 |
| 使用者名稱、密碼 | 各最多 255 位元組。 |
| UDP 轉送 | 預設為開啟。請見 [UDP](#udp)。 |
| TLS | SOCKS5 over TLS 需開啟。 |
| 略過憑證驗證 | 僅限 SOCKS5 over TLS。接受任何憑證。僅用於測試。 |
| 憑證釘選 | 僅限 SOCKS5 over TLS，選填。伺服器憑證的 SHA-256 指紋，以 64 個十六進位數字表示。設定釘選後，Potatso 只接受被釘選的憑證（包含自簽憑證），不接受其他任何憑證。 |

如果伺服器要求使用者名稱和密碼，而你沒有設定，Potatso 不會連線。Potatso 不支援 GSSAPI（Kerberos）驗證。

`username` 為空的 Clash 或 Mihomo 伺服器，會以不驗證的方式匯入，與 Clash 相同。

### 憑證 {#certificates}

使用 SOCKS5 over TLS 時，TLS 交握中的伺服器名稱一律是伺服器的位址，且伺服器的憑證必須對該位址有效。如果無效，請設定[憑證釘選](#settings)或開啟**略過憑證驗證**。你無法設定不同的伺服器名稱：Potatso 不會匯入帶有不同名稱的連結、Surge 伺服器或 Xray 伺服器。Clash 和 Mihomo 的 SOCKS5 沒有伺服器名稱，所以 Potatso 會像它們一樣，忽略那裡的 `sni`。

Potatso 不支援：

- 自訂 CA 憑證：請改為釘選伺服器的憑證，
- TLS 用戶端憑證（Clash 的 `certificate` 和 `private-key`），或用來比對憑證的不同名稱（`name-cert-verify`）：Potatso 不會匯入需要它們的伺服器，
- ALPN 清單：Potatso 匯入伺服器時會省略它。

## UDP {#udp}

QUIC、語音與視訊通話和許多遊戲都使用 UDP。開啟 **UDP 轉送**後，Potatso 會透過伺服器傳送 UDP（UDP ASSOCIATE），支援 IPv4 與 IPv6 位址。對於位於 NAT 後方、並將自己的位址回報為 `0.0.0.0` 的伺服器也能運作：Potatso 會把 UDP 傳送到你設定的位址。

如果你的伺服器不轉送 UDP，請關閉 UDP 轉送。之後：

- 使用規則時，Potatso 會略過把 UDP 導向這台伺服器的規則，由下一條符合的規則決定。沒有其他規則符合的 UDP 會直接傳送。
- 在全域模式下，UDP 無法運作，因為所有流量都必須經由該伺服器。

關於 UDP 的一些須知：

- UDP 是透過伺服器另外的 UDP 連接埠轉送的，所以伺服器的防火牆必須允許 UDP 通過。
- 使用 SOCKS5 over TLS 時，只有與伺服器之間的連線經過加密。SOCKS5 會在其外傳送 UDP，因此你的 UDP 流量是以未加密的方式抵達伺服器。
- 對於 UDP，Potatso 會自行查詢網站的位址，並把位址傳給伺服器。
- 從 Clash、Mihomo 或 Surge 匯入時，除非伺服器設定了 `udp: false`（Surge 中為 `udp-relay=false`），否則 UDP 轉送為開啟。當缺少 `udp` 時，Clash 會讓 UDP 保持關閉，所以請確認你的伺服器有轉送 UDP。

## 功能支援 {#features}

| 功能 | 支援 |
| --- | --- |
| 連到 IPv4、IPv6 與網域目標的 `CONNECT`（[RFC 1928](https://www.rfc-editor.org/rfc/rfc1928)） | ✅ |
| 遠端 DNS：由伺服器查詢網域名稱（`socks5h`） | ✅ 適用於 TCP |
| 不驗證 | ✅ |
| 使用者名稱和密碼（[RFC 1929](https://www.rfc-editor.org/rfc/rfc1929)） | ✅ |
| GSSAPI（[RFC 1961](https://www.rfc-editor.org/rfc/rfc1961)） | ❌ |
| 連到 IPv4 與 IPv6 目標的 `UDP ASSOCIATE` | ✅ |
| 位於 NAT 後方伺服器的 UDP（`0.0.0.0` 中繼位址） | ✅ |
| UDP 分片 | ❌ 分片的資料報會被丟棄，這是 RFC 1928 允許的 |
| `BIND`（傳入連線，例如主動模式 FTP） | ❌ |
| SOCKS5 over TLS | ✅ 支援憑證釘選與略過憑證驗證 |
| 與伺服器位址不同的 TLS 伺服器名稱、ALPN、自訂 CA、用戶端憑證 | ❌ |
| 以 TLS 加密的 UDP | ❌ SOCKS5 在 TLS 之外傳送 UDP |
| IPv6 伺服器位址 | ✅ |
| SOCKS4 與 SOCKS4a | ❌ |

每一項支援的功能都用真實的 SOCKS5 伺服器測試過：[Xray](https://xtls.github.io/)、[sing-box](https://sing-box.sagernet.org/)、[Mihomo](https://wiki.metacubex.one/)、[3proxy](https://3proxy.org/) 和 [microsocks](https://github.com/rofl0r/microsocks)。sing-box 是在它的 `mixed` inbound 上提供 SOCKS5 over TLS，而不是 `socks` inbound。

## 連結 {#links}

SOCKS5 連結用一行就包含整台伺服器：

```text
socks5://user:password@host:port#name
socks5+tls://user:password@host:port?insecure=1#name
```

| 部分 | 說明 |
| --- | --- |
| 協定前綴 | SOCKS5 使用 `socks5://`、`socks://` 或 `socks5h://`；SOCKS5 over TLS 使用 `socks5+tls://` 或 `socks+tls://`。Potatso 一律把網域名稱傳給伺服器，所以 `socks5h://` 的作用與 `socks5://` 相同。 |
| `user:password` | 選填。密碼中的 `:`、`@` 與其他特殊字元請使用百分比編碼，例如 `p:ss` 寫成 `p%3Ass`。使用者名稱不可包含 `:`。 |
| `host` | 伺服器位址。IPv6 位址請放在方括號中，例如 `[2001:db8::1]`。 |
| `port` | 伺服器連接埠。 |
| `insecure` | 僅限 SOCKS5 over TLS，選填。`1` 表示開啟略過憑證驗證。Potatso 也會讀取 `allowInsecure` 和 `skip-cert-verify`。 |
| `name` | 選填。伺服器在 Potatso 中的名稱。 |

連結無法包含憑證釘選。帶有與伺服器位址不同的 `sni` 的連結不會被匯入。

Potatso 也會匯入另外兩種形式：

```text
socks://base64(user:password)@host:port#name
socks5://base64(user:password@host:port)#name
```

第一種是 v2rayN 分享 SOCKS 伺服器的方式。第二種是較舊的形式，也就是 `://` 與 `#` 之間的所有內容都以 Base64 編碼。Potatso 分享帶有密碼的 SOCKS5 伺服器時，會提供標準連結和 v2rayN 形式。

### 範例 {#link-examples}

沒有密碼的伺服器：

```text
socks5://proxy.example.com:1080#Open
```

使用者名稱為 `alice`、密碼為 `s3cret` 的伺服器：

```text
socks5://alice:s3cret@proxy.example.com:1080#Auth
```

密碼 `p:ss wörd` 經過百分比編碼：

```text
socks5://alice:p%3Ass%20w%C3%B6rd@proxy.example.com:1080#Encoded
```

同一台伺服器的 `socks5h://` 連結：

```text
socks5h://alice:s3cret@proxy.example.com:1080#Remote-DNS
```

v2rayN 形式，其中 `alice:s3cret` 以 Base64 編碼：

```text
socks://YWxpY2U6czNjcmV0@proxy.example.com:1080#v2rayN
```

較舊的形式：

```text
socks5://YWxpY2U6czNjcmV0QHByb3h5LmV4YW1wbGUuY29tOjEwODA#Legacy
```

使用 IPv6 位址的伺服器：

```text
socks5://[2001:db8::1]:1080#IPv6
```

SOCKS5 over TLS 伺服器：

```text
socks5+tls://alice:s3cret@proxy.example.com:443#TLS
```

使用自簽憑證的 SOCKS5 over TLS 伺服器：

```text
socks+tls://proxy.example.com:443?insecure=1#Self-signed
```

Source: https://potatso.com/docs/zh-hant/protocols/socks5/index.mdx
