Shadowsocks dokumentation

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.

Starta din 5-dagars gratis provperiod