Dokumentácia Shadowsocks
Navigácia
Formát konfigurácie Shadowsocks
Konfiguračný súbor
Shadowsocks preberá konfigurácie formátu JSON:
{
"server":"my_server_ip",
"port_serveru":8388,
"miestny_port":1080,
"heslo":"barfoo!",
"metóda": "chacha20-ietf-poly1305"
}
Formát JSON
- server: názov vášho hostiteľa alebo IP servera (IPv4/IPv6).
- server_port: číslo portu servera.
- local_port: miestne číslo portu.
- heslo: heslo používané na šifrovanie prenosu.
- metóda: metóda šifrovania.
Metóda šifrovania
Nakonfigurujeme naše servery a odporúčame vám použiť šifru chacha20-ietf-poly1305 AEAD, pretože je to najsilnejšia metóda šifrovania.
Ak konfigurujete svoj vlastný server shadowsocks, môžete si vybrať buď z „chacha20-ietf-poly1305“ alebo „aes-256-gcm“.
URI a QR kód
Shadowsocks pre Android / IOS tiež používajú konfigurácie formátu URI kódované BASE64:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Jednoduché URI by malo byť: ss://method:password@hostname:port
Vyššie uvedené URI nezodpovedá RFC3986. Heslo by v tomto prípade malo byť obyčajný text, nie percentuálne zakódované.
Príklad: Používame server na 192.168.100.1:8888 a využitím bf-cfb spôsob šifrovania a heslo test/!@#:.
Potom s obyčajným URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, môžeme vygenerovať BASE64 kódovaný URI:
> console.log( “ss://” + btoa(”bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Ak chcete pomôcť usporiadať a identifikovať tieto URI, môžete za reťazec kódovaný BASE64 pridať značku:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
adresovanie
Shadowsocks používa adresy nájdené vo formáte adresy SOCKS5:
[1-bajtový typ][hostiteľ s premennou dĺžkou][2-bajtový port]
Tu sú definované typy adries:
- 0x01: hostiteľ je 4-bajtová adresa IPv4.
- 0x03: hostiteľ je reťazec s premenlivou dĺžkou, ktorý začína 1-bajtovou dĺžkou, po ktorej nasleduje maximálne 255-bajtový názov domény.
- 0x04: hostiteľ je 16-bajtová adresa IPv6.
Číslo portu je 2-bajtové big-endian celé číslo bez znamienka.
TCP
Klient ss-local iniciuje pripojenie k ss-remote odoslaním zašifrovaných údajov počnúc cieľovou adresou, po ktorej nasledujú údaje o užitočnom zaťažení. Šifrovanie sa bude líšiť v závislosti od použitej šifry.
[cieľová adresa][úžitkové zaťaženie]
Ss-remote prijíma zašifrované údaje, potom dešifruje a analyzuje cieľovú adresu. Potom vytvorí nové pripojenie TCP k cieľu a prepošle mu dáta užitočného zaťaženia. ss-remote dostane odpoveď od cieľa, potom zašifruje dáta a pošle ich späť do ss-local, kým sa neodpojí.
Na účely zahmlievania by miestne a vzdialené mali odosielať údaje handshake s určitým užitočným zaťažením v prvom pakete.
UDP
ss-local odošle zašifrovaný dátový paket obsahujúci cieľovú adresu a užitočné zaťaženie do ss-remote.
[cieľová adresa][úžitkové zaťaženie]
Po prijatí zašifrovaného paketu ss-remote dešifruje a analyzuje cieľovú adresu. Potom pošle nový dátový paket s užitočným zaťažením do cieľa. ss-remote prijíma dátové pakety z cieľa a pripája cieľovú adresu k užitočnému zaťaženiu v každom pakete. Zašifrované kópie sa posielajú späť do ss-local.
[cieľová adresa][úžitkové zaťaženie]
Tento proces možno zredukovať na ss-remote, ktorý vykoná preklad sieťovej adresy pre ss-local.