Dokumentace Shadowsocks
Navigace
Formát konfigurace Shadowsocks
Konfigurační soubor
Shadowsocks přebírá konfigurace formátu JSON:
{
"server":"my_server_ip",
"port_serveru":8388,
"Local_port": 1080,
"heslo":"barfoo!",
"metoda": "chacha20-ietf-poly1305"
}
Formát JSON
- server: název hostitele nebo IP serveru (IPv4/IPv6).
- server_port: číslo portu serveru.
- local_port: číslo místního portu.
- heslo: heslo používané k šifrování přenosu.
- metoda: metoda šifrování.
Metoda šifrování
Nakonfigurujeme naše servery a doporučujeme vám používat šifru chacha20-ietf-poly1305 AEAD, protože je to nejsilnější metoda šifrování.
Pokud konfigurujete svůj vlastní server shadowsocks, můžete si vybrat buď z „chacha20-ietf-poly1305“ nebo „aes-256-gcm“.
URI a QR kód
Shadowsocks pro Android / IOS také přebírají konfigurace formátu URI kódované BASE64:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Prostý identifikátor URI by měl být: ss://method:password@hostname:port
Výše uvedené URI neodpovídá RFC3986. Heslo by v tomto případě mělo být prostý text, nikoli zakódované v procentech.
Příklad: Používáme server na adrese 192.168.100.1:8888 použitím bf-cfb způsob šifrování a heslo test/!@#:.
Pak s prostým URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, můžeme vygenerovat BASE64 kódovaný URI:
> console.log( “ss://” + btoa(”bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Chcete-li usnadnit organizaci a identifikaci těchto URI, můžete za řetězec kódovaný BASE64 připojit značku:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Adresování
Shadowsocks používá adresy nalezené ve formátu adresy SOCKS5:
[1bajtový typ][hostitel s proměnnou délkou][2bajtový port]
Zde jsou definovány typy adres:
- 0x01: hostitel je 4bajtová adresa IPv4.
- 0x03 : hostitel je řetězec s proměnnou délkou začínající délkou 1 bajtu, po níž následuje název domény o maximální délce 255 bajtů.
- 0x04: hostitel je 16bajtová adresa IPv6.
Číslo portu je 2bajtové celé číslo bez znaménka big-endian.
TCP
Klient ss-local inicializuje připojení k ss-remote odesláním zašifrovaných dat počínaje cílovou adresou, po které následují data užitečného zatížení. Šifrování se bude lišit v závislosti na použité šifře.
[cílová adresa][payload]
Ss-remote přijímá zašifrovaná data, poté dešifruje a analyzuje cílovou adresu. Poté vytvoří nové připojení TCP k cíli a předá mu data užitečného zatížení. ss-remote obdrží odpověď od cíle, poté zašifruje data a předá je zpět do ss-local, dokud nebude odpojen.
Pro účely zmatku by místní a vzdálené měly odeslat data handshake s určitým nákladem v prvním paketu.
UDP
ss-local odešle šifrovaný datový paket obsahující cílovou adresu a užitečné zatížení do ss-remote.
[cílová adresa][payload]
Jakmile je šifrovaný paket přijat, ss-remote dešifruje a analyzuje cílovou adresu. Poté odešle nový datový paket s užitečným zatížením do cíle. ss-remote přijme datové pakety od cíle a přidá cílovou adresu k užitečné zátěži v každém paketu. Zašifrované kopie jsou odesílány zpět do ss-local.
[cílová adresa][payload]
Tento proces lze zredukovat na ss-remote provádějící překlad síťových adres pro ss-local.