เซิร์ฟเวอร์ Shadowsocks ถูกอธิบายด้วย การเข้ารหัส (cipher) และ รหัสผ่าน และอาจมี ปลั๊กอิน ที่ช่วยอำพรางการเชื่อมต่อ Potatso เชื่อมต่อกับเซิร์ฟเวอร์เมื่อรองรับการเข้ารหัส และปลั๊กอินหากมี ใช้ตารางด้านล่างเพื่อตรวจสอบการตั้งค่าของเซิร์ฟเวอร์ ตามที่ผู้ให้บริการแจ้งหรือในลิงก์ ss:// ของเซิร์ฟเวอร์
คุณเพิ่มเซิร์ฟเวอร์ Shadowsocks ได้ด้วยตนเอง ด้วยลิงก์ ss:// หรือโดยการนำเข้า:
- การสมัครรับ Clash หรือ Mihomo
- การกำหนดค่าออนไลน์ SIP008 จากไฟล์หรือลิงก์
config.jsonของ shadowsocks-rust หรือ shadowsocks-libev- การกำหนดค่า Surge หรือการกำหนดค่า Xray หรือ V2Ray
การเข้ารหัส (Cipher)
เลือกการเข้ารหัสแบบ 2022 ก่อนหากเซิร์ฟเวอร์ของคุณมี แล้วจึงเลือกแบบ AEAD การเข้ารหัสแบบ Stream มีจุดอ่อนที่เป็นที่รู้จัก: ใช้เฉพาะกับเซิร์ฟเวอร์ที่ไม่มีตัวเลือกอื่น
| การเข้ารหัส | ชนิด | รองรับ |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm |
2022 | ✅ ใช้กับหลายผู้ใช้ได้ |
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, sing-box หรือเซิร์ฟเวอร์ Python ดั้งเดิม ในบรรดาการเข้ารหัส AEAD ข้างต้น มีเพียงเซิร์ฟเวอร์ shadowsocks-rust ที่มี aes-*-ccm, aes-*-gcm-siv และ sm4-* และมีผู้ให้บริการไม่กี่รายที่ใช้
คีย์ 2022
การเข้ารหัสแบบ 2022 (SIP022) ไม่ใช้รหัสผ่าน แต่ใช้คีย์: ไบต์สุ่มที่เข้ารหัสด้วย 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 อื่น
เซิร์ฟเวอร์หลายผู้ใช้
เซิร์ฟเวอร์ 2022 แบ่งหนึ่งพอร์ตให้หลายผู้ใช้ได้ (SIP023) ผู้ใช้แต่ละคนมีคีย์ของตัวเอง สำหรับเซิร์ฟเวอร์เหล่านี้ ให้ตั้งรหัสผ่านเป็นคีย์ของเซิร์ฟเวอร์ตามด้วยคีย์ผู้ใช้ของคุณ คั่นด้วยเครื่องหมายทวิภาค:
server-key:user-keyเฉพาะ 2022-blake3-aes-128-gcm และ 2022-blake3-aes-256-gcm เท่านั้นที่รองรับเซิร์ฟเวอร์หลายผู้ใช้
ปลั๊กอิน
ปลั๊กอินห่อหุ้มการเชื่อมต่อ 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
ตั้งค่าปลั๊กอิน
ในการตั้งค่าของเซิร์ฟเวอร์ ให้เลือกปลั๊กอินใต้ ปลั๊กอิน แล้วป้อนตัวเลือกของปลั๊กอินใน พารามิเตอร์ปลั๊กอิน ตัวเลือกคือคู่ key=value คั่นด้วยเซมิโคลอน ดังตัวอย่าง Simple Obfs นี้:
obfs=tls;obfs-host=cdn.example.comคีย์เดี่ยวๆ เช่น tls เปิดตัวเลือกนั้น ละตัวเลือกที่คุณไม่ต้องการไว้ได้ ตารางด้านล่างระบุค่าเริ่มต้นของแต่ละตัว
เมื่อคุณนำเข้าเซิร์ฟเวอร์ Potatso จะตั้งค่าปลั๊กอินและตัวเลือกของมันให้:
- ลิงก์
ss://มีสิ่งเหล่านี้ในพารามิเตอร์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 แล้วเชื่อมด้วยเซมิโคลอน
ตัวเลือกปลั๊กอิน
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 เปิดไว้โดยค่าเริ่มต้นสำหรับเซิร์ฟเวอร์ Shadowsocks และใช้ได้กับทุกการเข้ารหัสที่รองรับ ปิดในการตั้งค่าของเซิร์ฟเวอร์หากเซิร์ฟเวอร์ของคุณไม่รีเลย์ UDP
UDP ไม่ถูกส่งผ่านปลั๊กอิน ดังนั้นกับปลั๊กอินอื่นนอกจาก Simple Obfs เซิร์ฟเวอร์จะรับส่งได้เฉพาะ TCP Potatso ไม่รองรับ UDP-over-TCP (udp-over-tcp หรือ uot ในลิงก์หรือการสมัครรับ) และไม่นำเข้าเซิร์ฟเวอร์ที่ต้องใช้
การรองรับฟีเจอร์
| ฟีเจอร์ | รองรับ |
|---|---|
ลิงก์ ss:// ของ SIP002 |
✅ รวมถึงรูปแบบ Base64 แบบเก่า |
| ปลั๊กอิน SIP003 | เฉพาะปลั๊กอินในตัว |
| SIP003u (UDP ผ่านปลั๊กอิน) | ❌ |
| การเข้ารหัส AEAD (SIP004) | ✅ |
| การกำหนดค่าออนไลน์ SIP008 | ✅ |
| การเข้ารหัส 2022 ของ SIP022 | ✅ TCP และ UDP |
| ส่วนหัวระบุตัวตนหลายผู้ใช้ของ SIP023 | ✅ สำหรับการเข้ารหัส AES 2022 |
| การเข้ารหัสแบบ Stream | ✅ ดูการเข้ารหัส |
| UDP-over-TCP | ❌ |
| TCP Fast Open, MPTCP | ❌ |
ฟีเจอร์บางอย่างของ shadowsocks-rust เป็นการตั้งค่าของโปรแกรมไคลเอนต์ของมันเอง sslocal และ Potatso ทำงานเดียวกันนี้ในแบบของตัวเอง:
- เซิร์ฟเวอร์ SOCKS5, HTTP, tunnel, redir, DNS และ TUN ในเครื่อง: Potatso จับทราฟฟิกของอุปกรณ์คุณเอง
- รายการควบคุมการเข้าถึง (ACL): ใช้กฎในโปรไฟล์ของคุณ
- การเลือกเซิร์ฟเวอร์ที่เร็วที่สุดจากหลายเซิร์ฟเวอร์: ใช้กลุ่มพร็อกซีในโปรไฟล์ของคุณ
ลิงก์ ss://
ลิงก์ ss:// เก็บเซิร์ฟเวอร์ทั้งตัวไว้ในบรรทัดเดียว (SIP002):
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:
ss://base64(cipher:password@host:port)#namePotatso ยอมรับ Base64 มาตรฐานและแบบ URL-safe ทั้งแบบมีและไม่มีการเติม = เมื่อ Potatso แชร์เซิร์ฟเวอร์ จะเสนอรูปแบบ Base64 และ percent-encoded ของ SIP002 และรูปแบบเก่า
ตัวอย่าง
แต่ละตัวอย่างแสดงลิงก์ที่จะนำเข้า รหัสผ่านในตัวอย่าง AEAD คือ secret
เซิร์ฟเวอร์พื้นฐานที่ใช้ aes-256-gcm:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Basicเซิร์ฟเวอร์ 2022 ที่ใช้คีย์ 16 ไบต์ MTIzNDU2Nzg5MDEyMzQ1Ng==:
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022เซิร์ฟเวอร์ 2022 หลายผู้ใช้ โดยคีย์เซิร์ฟเวอร์และคีย์ผู้ใช้คั่นด้วยเครื่องหมายทวิภาค (%3A):
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-userSimple Obfs กับ TLS โดยใช้ cdn.example.com เป็นชื่อเซิร์ฟเวอร์:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#Obfsรูปแบบเก่าของเซิร์ฟเวอร์พื้นฐาน:
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#Legacyเซิร์ฟเวอร์ที่มีที่อยู่ IPv6:
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6