Shadowsocks dokumentation
Navigering
Shadowsocks konfigurationsformat
Konfigurationsfil
Shadowsocks tar JSON-formatkonfigurationer:
{
"server":"min_server_ip",
"server_port":8388,
"local_port":1080,
"lösenord":"barfoo!",
“metod”:”chacha20-ietf-poly1305″
}
JSON-format
- server: ditt värdnamn eller server-IP (IPv4/IPv6).
- server_port: serverportnummer.
- local_port: lokalt portnummer.
- lösenord: ett lösenord som används för att kryptera överföring.
- metod: krypteringsmetod.
Krypteringsmetod
Vi konfigurerar våra servrar och rekommenderar att du använder chacha20-ietf-poly1305 AEAD-chifferet eftersom det är den starkaste metoden för kryptering.
Om du konfigurerar din egen shadowsocks-server kan du välja mellan antingen "chacha20-ietf-poly1305" eller "aes-256-gcm".
URI & QR-kod
Shadowsocks för Android / IOS tar också BASE64-kodade URI-formatkonfigurationer:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Den vanliga URI:n bör vara: ss://metod:lösenord@värdnamn:port
Ovanstående URI följer inte RFC3986. Lösenordet i det här fallet ska vara vanlig text, inte procentkodat.
Exempel: Vi använder en server på 192.168.100.1:8888 med hjälp av bf-cfb krypteringsmetod och lösenord testa/!@#:.
Sedan med den vanliga URI:en ss://bf-cfb:test/!@#:@192.168.100.1:8888, kan vi generera den BASE64-kodade URI:n:
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
För att hjälpa till att organisera och identifiera dessa URI:er kan du lägga till en tagg efter den BASE64-kodade strängen:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Adresse
Shadowsocks använder adresserna som finns i SOCKS5-adressformatet:
[1-byte typ][variabel längd värd][2-byte port]
Här är de definierade adresstyperna:
- 0x01 : värd är en 4-byte IPv4-adress.
- 0x03 : värd är en sträng med variabel längd, som börjar med en längd på 1 byte, följt av ett domännamn på max 255 byte.
- 0x04 : värd är en 16-byte IPv6-adress.
Portnumret är ett 2-byte big-endian heltal utan tecken.
TCP
ss-local-klienten initierar en anslutning till ss-remote genom att skicka krypterad data som börjar med måladressen följt av nyttolastdata. Krypteringen kommer att vara olika beroende på vilket chiffer som används.
[måladress][nyttolast]
ss-fjärrkontrollen tar emot den krypterade informationen, dekrypterar och analyserar sedan måladressen. Sedan skapar den en ny TCP-anslutning till målet och vidarebefordrar nyttolastdata till den. ss-remote får ett svar från målet krypterar sedan data och skickar tillbaka den till ss-local tills den kopplas bort.
För fördunklingsändamål bör lokala och fjärranslutna skicka handskakningsdata med viss nyttolast i det första paketet.
UDP
ss-local skickar det krypterade datapaketet som innehåller måladressen och nyttolasten till ss-remote.
[måladress][nyttolast]
När det krypterade paketet har tagits emot, dekrypterar och analyserar ss-remote måladressen. Den skickar sedan ett nytt datapaket med nyttolasten till målet. ss-remote tar emot datapaketen från målet och prependerar måladressen till nyttolasten i varje paket. Krypterade kopior skickas tillbaka till ss-local.
[måladress][nyttolast]
Denna process kan kokas ner till att ss-remote utför en nätverksadressöversättning för ss-local.