Dokumentácia Shadowsocks

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.

Začnite svoju 5-dňovú bezplatnú skúšobnú verziu