---
title: "Shadowsocks"
description: "การเข้ารหัส ปลั๊กอิน ลิงก์ และฟีเจอร์ของ Shadowsocks ที่ Potatso รองรับ"
---

> 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.

# Shadowsocks

เซิร์ฟเวอร์ Shadowsocks ถูกอธิบายด้วย **การเข้ารหัส** (cipher) และ **รหัสผ่าน** และอาจมี **ปลั๊กอิน** ที่ช่วยอำพรางการเชื่อมต่อ Potatso เชื่อมต่อกับเซิร์ฟเวอร์เมื่อรองรับการเข้ารหัส และปลั๊กอินหากมี ใช้ตารางด้านล่างเพื่อตรวจสอบการตั้งค่าของเซิร์ฟเวอร์ ตามที่ผู้ให้บริการแจ้งหรือในลิงก์ `ss://` ของเซิร์ฟเวอร์

คุณเพิ่มเซิร์ฟเวอร์ Shadowsocks ได้ด้วยตนเอง ด้วย[ลิงก์ `ss://`](#links) หรือโดยการนำเข้า:

- การสมัครรับ Clash หรือ Mihomo
- การกำหนดค่าออนไลน์ [SIP008](https://shadowsocks.org/doc/sip008.html) จากไฟล์หรือลิงก์
- `config.json` ของ shadowsocks-rust หรือ shadowsocks-libev
- การกำหนดค่า Surge หรือการกำหนดค่า Xray หรือ V2Ray

## การเข้ารหัส (Cipher) {#ciphers}

เลือกการเข้ารหัสแบบ 2022 ก่อนหากเซิร์ฟเวอร์ของคุณมี แล้วจึงเลือกแบบ AEAD การเข้ารหัสแบบ Stream มีจุดอ่อนที่เป็นที่รู้จัก: ใช้เฉพาะกับเซิร์ฟเวอร์ที่ไม่มีตัวเลือกอื่น

| การเข้ารหัส | ชนิด | รองรับ |
| --- | --- | --- |
| `2022-blake3-aes-128-gcm`, `2022-blake3-aes-256-gcm` | 2022 | ✅ ใช้กับ[หลายผู้ใช้](#multi-user)ได้ |
| `2022-blake3-chacha20-poly1305`, `2022-blake3-chacha8-poly1305` | 2022 | ✅ |
| `aes-128-gcm`, `aes-192-gcm`, `aes-256-gcm` | AEAD | ✅ |
| `chacha20-ietf-poly1305`, `xchacha20-ietf-poly1305` | AEAD | ✅ |
| `aes-128-ccm`, `aes-256-ccm`, `aes-128-gcm-siv`, `aes-256-gcm-siv` | AEAD | ✅ |
| `sm4-gcm`, `sm4-ccm` | AEAD | ✅ |
| `aes-128-ctr`, `aes-192-ctr`, `aes-256-ctr` | Stream | ✅ |
| `aes-128-cfb`, `aes-192-cfb`, `aes-256-cfb` (เขียนเป็น `-cfb128` ได้เช่นกัน) | Stream | ✅ |
| `aes-128-cfb1`, `aes-192-cfb1`, `aes-256-cfb1` | Stream | ✅ |
| `aes-128-cfb8`, `aes-192-cfb8`, `aes-256-cfb8` | Stream | ✅ |
| `aes-128-ofb`, `aes-192-ofb`, `aes-256-ofb` | Stream | ✅ |
| `camellia-128-ctr`, `camellia-192-ctr`, `camellia-256-ctr` | Stream | ✅ |
| `camellia-128-cfb`, `camellia-192-cfb`, `camellia-256-cfb` (เขียนเป็น `-cfb128` ได้เช่นกัน) | Stream | ✅ |
| `camellia-128-cfb1`, `camellia-192-cfb1`, `camellia-256-cfb1` | Stream | ✅ |
| `camellia-128-cfb8`, `camellia-192-cfb8`, `camellia-256-cfb8` | Stream | ✅ |
| `camellia-128-ofb`, `camellia-192-ofb`, `camellia-256-ofb` | Stream | ✅ |
| `chacha20-ietf`, `chacha20`, `salsa20` | Stream | ✅ |
| `bf-cfb`, `rc4-md5`, `rc4`, `table` | Stream | ✅ |
| `none` (เขียนเป็น `plain` ได้เช่นกัน) | ไม่เข้ารหัส | ✅ |
| `cast5-cfb`, `des-cfb`, `idea-cfb`, `rc2-cfb`, `seed-cfb`, `rc4-md5-6` | Stream | ❌ เฉพาะ ShadowsocksR |
| `xchacha20`, `xsalsa20` | Stream | ❌ |

ชื่อไม่แยกตัวพิมพ์เล็กใหญ่ ดังนั้น `AES-256-GCM` ใช้ได้เหมือน `aes-256-gcm`

`none` ส่งทราฟฟิกของคุณโดยไม่เข้ารหัส ใช้เฉพาะกับปลั๊กอินที่เข้ารหัสการเชื่อมต่อเอง เช่น v2ray-plugin ร่วมกับ TLS

การเข้ารหัสที่รองรับทุกแบบได้รับการทดสอบกับเซิร์ฟเวอร์ Shadowsocks จริงอย่างน้อยหนึ่งตัว: [shadowsocks-rust](https://github.com/shadowsocks/shadowsocks-rust), [sing-box](https://sing-box.sagernet.org/) หรือเซิร์ฟเวอร์ Python ดั้งเดิม ในบรรดาการเข้ารหัส AEAD ข้างต้น มีเพียงเซิร์ฟเวอร์ shadowsocks-rust ที่มี `aes-*-ccm`, `aes-*-gcm-siv` และ `sm4-*` และมีผู้ให้บริการไม่กี่รายที่ใช้

### คีย์ 2022 {#2022-keys}

การเข้ารหัสแบบ 2022 ([SIP022](https://shadowsocks.org/doc/sip022.html)) ไม่ใช้รหัสผ่าน แต่ใช้คีย์: ไบต์สุ่มที่เข้ารหัสด้วย Base64 ตามความยาวที่การเข้ารหัสนั้นต้องการ `2022-blake3-aes-128-gcm` ต้องใช้คีย์ 16 ไบต์ และการเข้ารหัส 2022 อื่นต้องใช้คีย์ 32 ไบต์ ใช้คีย์ตรงตามที่เซิร์ฟเวอร์ของคุณมี

Potatso ไม่เชื่อมต่อด้วยคีย์ที่ความยาวไม่ถูกต้อง หรือด้วยรหัสผ่านที่ไม่ใช่ Base64 หากต้องการสร้างคีย์ใหม่สำหรับเซิร์ฟเวอร์ของคุณ ให้รัน `openssl rand -base64 16` สำหรับ `2022-blake3-aes-128-gcm` หรือ `openssl rand -base64 32` สำหรับการเข้ารหัส 2022 อื่น

### เซิร์ฟเวอร์หลายผู้ใช้ {#multi-user}

เซิร์ฟเวอร์ 2022 แบ่งหนึ่งพอร์ตให้หลายผู้ใช้ได้ ([SIP023](https://shadowsocks.org/doc/sip023.html)) ผู้ใช้แต่ละคนมีคีย์ของตัวเอง สำหรับเซิร์ฟเวอร์เหล่านี้ ให้ตั้งรหัสผ่านเป็นคีย์ของเซิร์ฟเวอร์ตามด้วยคีย์ผู้ใช้ของคุณ คั่นด้วยเครื่องหมายทวิภาค:

```text
server-key:user-key
```

เฉพาะ `2022-blake3-aes-128-gcm` และ `2022-blake3-aes-256-gcm` เท่านั้นที่รองรับเซิร์ฟเวอร์หลายผู้ใช้

## ปลั๊กอิน {#plugins}

ปลั๊กอินห่อหุ้มการเชื่อมต่อ Shadowsocks เพื่อให้ตรวจจับได้ยากขึ้น Potatso มีปลั๊กอินเหล่านี้ในตัว จึงไม่ต้องติดตั้งอะไรเพิ่ม

| ปลั๊กอิน | ชื่อปลั๊กอิน | รองรับ | UDP |
| --- | --- | --- | --- |
| Simple Obfs | `obfs-local`, `simple-obfs`, `obfs` | ✅ `obfs=http` และ `obfs=tls` | ส่งไปยังเซิร์ฟเวอร์โดยไม่ผ่านปลั๊กอิน |
| v2ray-plugin | `v2ray-plugin` | ✅ WebSocket ทั้งแบบมีและไม่มี TLS ไม่รองรับโหมด QUIC | ❌ |
| gost-plugin | `gost-plugin` | ✅ WebSocket ทั้งแบบมีและไม่มี TLS | ❌ |
| ShadowTLS | `shadow-tls` | ✅ เวอร์ชัน 1, 2 และ 3 | ❌ |
| Restls | `restls` | ✅ | ❌ |
| JLS | `jls` | ✅ | ❌ |

Potatso ไม่นำเข้าเซิร์ฟเวอร์ที่ต้องใช้ปลั๊กอินอื่น:

- Cloak, xray-plugin และปลั๊กอินอื่นเป็นโปรแกรมที่อุปกรณ์ของคุณต้องรันควบคู่กับ Potatso ซึ่ง iOS ไม่อนุญาต
- kcptun และ ech-tls-tunnel ยังไม่มีใน Potatso

### ตั้งค่าปลั๊กอิน {#set-plugin}

ในการตั้งค่าของเซิร์ฟเวอร์ ให้เลือกปลั๊กอินใต้ **ปลั๊กอิน** แล้วป้อนตัวเลือกของปลั๊กอินใน **พารามิเตอร์ปลั๊กอิน** ตัวเลือกคือคู่ `key=value` คั่นด้วยเซมิโคลอน ดังตัวอย่าง Simple Obfs นี้:

```text
obfs=tls;obfs-host=cdn.example.com
```

คีย์เดี่ยวๆ เช่น `tls` เปิดตัวเลือกนั้น ละตัวเลือกที่คุณไม่ต้องการไว้ได้ ตารางด้านล่างระบุค่าเริ่มต้นของแต่ละตัว

เมื่อคุณนำเข้าเซิร์ฟเวอร์ Potatso จะตั้งค่าปลั๊กอินและตัวเลือกของมันให้:

- [ลิงก์ `ss://`](#links) มีสิ่งเหล่านี้ในพารามิเตอร์ `plugin` ต่อจากชื่อปลั๊กอิน: `simple-obfs;obfs=tls;obfs-host=cdn.example.com`
- การสมัครรับ Clash หรือ Mihomo มีสิ่งเหล่านี้ใน `plugin` และ `plugin-opts`
- การกำหนดค่า SIP008 หรือ `config.json` ของ shadowsocks-rust หรือ shadowsocks-libev มีสิ่งเหล่านี้ใน `plugin` และ `plugin_opts`

ตัวเลือกเหล่านี้เหมือนกันในทุกรูปแบบ หากผู้ให้บริการของคุณแสดงเป็นบรรทัดละหนึ่งตัวเลือก เช่นใน `plugin-opts` ของ Clash ให้เขียนแต่ละตัวเป็น `key=value` แล้วเชื่อมด้วยเซมิโคลอน

### ตัวเลือกปลั๊กอิน {#plugin-options}

**Simple Obfs**

| ตัวเลือก | คำอธิบาย |
| --- | --- |
| `obfs` | จำเป็น `http` หรือ `tls` |
| `obfs-host` | ส่วนหัว `Host` (`http`) หรือชื่อเซิร์ฟเวอร์ที่ส่งใน TLS handshake (`tls`) เมื่อว่าง Potatso ใช้ที่อยู่ของเซิร์ฟเวอร์ |
| `obfs-uri` | เฉพาะ `http` เส้นทางของคำขอ ค่าเริ่มต้น `/` |
| `http-method` | เฉพาะ `http` วิธีของคำขอ ค่าเริ่มต้น `GET` |

**v2ray-plugin**

| ตัวเลือก | คำอธิบาย |
| --- | --- |
| `mode` | `websocket` ซึ่งเป็นค่าเริ่มต้น ไม่รองรับโหมด QUIC |
| `tls` | เชื่อมต่อผ่าน TLS ปิดไว้โดยค่าเริ่มต้น |
| `host` | ส่วนหัว `Host` และชื่อเซิร์ฟเวอร์สำหรับ TLS เมื่อว่าง Potatso ใช้ที่อยู่ของเซิร์ฟเวอร์ |
| `path` | เส้นทาง WebSocket ค่าเริ่มต้น `/` |
| `mux` | การมัลติเพล็กซ์ ปิดไว้โดยค่าเริ่มต้น เปิดเฉพาะเมื่อเซิร์ฟเวอร์ของคุณใช้ |
| `skip-cert-verify` | ยอมรับใบรับรองเซิร์ฟเวอร์ใดก็ได้ ใช้เฉพาะกับเซิร์ฟเวอร์ที่คุณเชื่อถือ |
| `header` | ส่วนหัวคำขอเพิ่มเติม ในรูป `header=Name:Value` ใส่ซ้ำเพื่อเพิ่มส่วนหัวอื่น |

**gost-plugin**

| ตัวเลือก | คำอธิบาย |
| --- | --- |
| `mode` | จำเป็น `websocket` |
| `tls` | เชื่อมต่อผ่าน TLS ปิดไว้โดยค่าเริ่มต้น |
| `host` | ส่วนหัว `Host` และชื่อเซิร์ฟเวอร์สำหรับ TLS ค่าเริ่มต้น `bing.com` เหมือนใน gost |
| `path` | เส้นทาง WebSocket ค่าเริ่มต้น `/` |
| `mux` | การมัลติเพล็กซ์ เปิดไว้โดยค่าเริ่มต้น |
| `skip-cert-verify` | ยอมรับใบรับรองเซิร์ฟเวอร์ใดก็ได้ ใช้เฉพาะกับเซิร์ฟเวอร์ที่คุณเชื่อถือ |
| `fingerprint` | ลายนิ้วมือ SHA-256 ของใบรับรองเซิร์ฟเวอร์ เพื่อยอมรับเฉพาะใบรับรองนั้น |
| `header` | ส่วนหัวคำขอเพิ่มเติม ในรูป `header=Name:Value` ใส่ซ้ำเพื่อเพิ่มส่วนหัวอื่น |

**ShadowTLS**

| ตัวเลือก | คำอธิบาย |
| --- | --- |
| `host` | จำเป็น ชื่อเซิร์ฟเวอร์ของเว็บไซต์พราง เช่น `www.example.com` |
| `version` | จำเป็น `1`, `2` หรือ `3` |
| `password` | รหัสผ่าน เวอร์ชัน 2 และ 3 ต้องใช้ |
| `alpn` | รายการ ALPN คั่นด้วยจุลภาค ค่าเริ่มต้น `h2,http/1.1` |
| `skip-cert-verify` | ยอมรับใบรับรองของเว็บไซต์พรางใดก็ได้ |

**Restls**

| ตัวเลือก | คำอธิบาย |
| --- | --- |
| `host` | จำเป็น ชื่อเซิร์ฟเวอร์ของเว็บไซต์พราง |
| `password` | จำเป็น รหัสผ่าน |
| `version-hint` | จำเป็น `tls13` หรือ `tls12` ตามที่เซิร์ฟเวอร์ของคุณตั้งไว้ |
| `restls-script` | สคริปต์เรคคอร์ด หากผู้ให้บริการของคุณให้มา |

**JLS**

| ตัวเลือก | คำอธิบาย |
| --- | --- |
| `host` | จำเป็น ชื่อเซิร์ฟเวอร์ของเว็บไซต์พราง |
| `username` | จำเป็น ชื่อผู้ใช้ |
| `password` | จำเป็น รหัสผ่าน |
| `alpn` | รายการ ALPN คั่นด้วยจุลภาค ค่าเริ่มต้น `h2,http/1.1` |

Potatso ไม่เชื่อมต่อกับเซิร์ฟเวอร์เมื่อขาดตัวเลือกที่จำเป็นหรือค่าไม่ถูกต้อง

## UDP {#udp}

UDP เปิดไว้โดยค่าเริ่มต้นสำหรับเซิร์ฟเวอร์ Shadowsocks และใช้ได้กับทุกการเข้ารหัสที่รองรับ ปิดในการตั้งค่าของเซิร์ฟเวอร์หากเซิร์ฟเวอร์ของคุณไม่รีเลย์ UDP

UDP ไม่ถูกส่งผ่านปลั๊กอิน ดังนั้นกับปลั๊กอินอื่นนอกจาก Simple Obfs เซิร์ฟเวอร์จะรับส่งได้เฉพาะ TCP Potatso ไม่รองรับ UDP-over-TCP (`udp-over-tcp` หรือ `uot` ในลิงก์หรือการสมัครรับ) และไม่นำเข้าเซิร์ฟเวอร์ที่ต้องใช้

## การรองรับฟีเจอร์ {#features}

| ฟีเจอร์ | รองรับ |
| --- | --- |
| ลิงก์ `ss://` ของ [SIP002](https://shadowsocks.org/doc/sip002.html) | ✅ รวมถึงรูปแบบ Base64 แบบเก่า |
| ปลั๊กอิน [SIP003](https://shadowsocks.org/doc/sip003.html) | เฉพาะ[ปลั๊กอินในตัว](#plugins) |
| SIP003u (UDP ผ่านปลั๊กอิน) | ❌ |
| [การเข้ารหัส AEAD](https://shadowsocks.org/doc/aead.html) (SIP004) | ✅ |
| การกำหนดค่าออนไลน์ [SIP008](https://shadowsocks.org/doc/sip008.html) | ✅ |
| การเข้ารหัส 2022 ของ [SIP022](https://shadowsocks.org/doc/sip022.html) | ✅ TCP และ UDP |
| ส่วนหัวระบุตัวตนหลายผู้ใช้ของ [SIP023](https://shadowsocks.org/doc/sip023.html) | ✅ สำหรับการเข้ารหัส AES 2022 |
| [การเข้ารหัสแบบ Stream](https://shadowsocks.org/doc/stream.html) | ✅ ดู[การเข้ารหัส](#ciphers) |
| UDP-over-TCP | ❌ |
| TCP Fast Open, MPTCP | ❌ |

ฟีเจอร์บางอย่างของ shadowsocks-rust เป็นการตั้งค่าของโปรแกรมไคลเอนต์ของมันเอง `sslocal` และ Potatso ทำงานเดียวกันนี้ในแบบของตัวเอง:

- เซิร์ฟเวอร์ SOCKS5, HTTP, tunnel, redir, DNS และ TUN ในเครื่อง: Potatso จับทราฟฟิกของอุปกรณ์คุณเอง
- รายการควบคุมการเข้าถึง (ACL): ใช้กฎในโปรไฟล์ของคุณ
- การเลือกเซิร์ฟเวอร์ที่เร็วที่สุดจากหลายเซิร์ฟเวอร์: ใช้กลุ่มพร็อกซีในโปรไฟล์ของคุณ

## ลิงก์ `ss://` {#links}

ลิงก์ `ss://` เก็บเซิร์ฟเวอร์ทั้งตัวไว้ในบรรทัดเดียว ([SIP002](https://shadowsocks.org/doc/sip002.html)):

```text
ss://userinfo@host:port/?plugin=…#name
```

| ส่วน | คำอธิบาย |
| --- | --- |
| `userinfo` | การเข้ารหัสและรหัสผ่านในรูป `cipher:password` เข้ารหัสด้วย Base64 หรือ percent-encoding ก็ได้ การเข้ารหัส 2022 ต้องใช้แบบ percent-encoding |
| `host` | ที่อยู่เซิร์ฟเวอร์ ใส่ที่อยู่ IPv6 ในวงเล็บเหลี่ยม เช่น `[2001:db8::1]` |
| `port` | พอร์ตเซิร์ฟเวอร์ |
| `plugin` | ไม่บังคับ ชื่อปลั๊กอินและตัวเลือกของมัน คั่นด้วยเซมิโคลอนและเข้ารหัสแบบ percent เช่น `simple-obfs;obfs=tls;obfs-host=cdn.example.com` |
| `name` | ไม่บังคับ ชื่อของเซิร์ฟเวอร์ใน Potatso |

Potatso ยังนำเข้ารูปแบบเก่า ซึ่งทุกอย่างก่อน `#` เข้ารหัสด้วย Base64:

```text
ss://base64(cipher:password@host:port)#name
```

Potatso ยอมรับ Base64 มาตรฐานและแบบ URL-safe ทั้งแบบมีและไม่มีการเติม `=` เมื่อ Potatso แชร์เซิร์ฟเวอร์ จะเสนอรูปแบบ Base64 และ percent-encoded ของ SIP002 และรูปแบบเก่า

### ตัวอย่าง {#link-examples}

แต่ละตัวอย่างแสดงลิงก์ที่จะนำเข้า รหัสผ่านในตัวอย่าง AEAD คือ `secret`

เซิร์ฟเวอร์พื้นฐานที่ใช้ `aes-256-gcm`:

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Basic
```

เซิร์ฟเวอร์ 2022 ที่ใช้คีย์ 16 ไบต์ `MTIzNDU2Nzg5MDEyMzQ1Ng==`:

```text
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022
```

เซิร์ฟเวอร์ 2022 หลายผู้ใช้ โดยคีย์เซิร์ฟเวอร์และคีย์ผู้ใช้คั่นด้วยเครื่องหมายทวิภาค (`%3A`):

```text
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-user
```

Simple Obfs กับ TLS โดยใช้ `cdn.example.com` เป็นชื่อเซิร์ฟเวอร์:

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#Obfs
```

รูปแบบเก่าของเซิร์ฟเวอร์พื้นฐาน:

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#Legacy
```

เซิร์ฟเวอร์ที่มีที่อยู่ IPv6:

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6
```

Source: https://potatso.com/docs/th/protocols/shadowsocks/index.mdx
