Shadowsocks Dokumentatioun
Navigatioun
Shadowsocks Configuratioun Format
Configuratiounsdatei
Shadowsocks hëlt JSON Format Konfiguratiounen:
{
"Server":"my_server_ip",
"server_port":8388,
"Local_port": 1080,
"Passwuert":"Barfoo!",
"Methode":"chacha20-ietf-poly1305"
}
JSON Format
- Server: Äre Hostnumm oder Server IP (IPv4/IPv6).
- server_port: Serverportnummer.
- local_port: lokal Portnummer.
- Passwuert: e Passwuert dat benotzt gëtt fir den Transfert ze verschlësselen.
- Method: Verschlësselungsmethod.
Verschlësselungsmethod
Mir konfiguréieren eis Serveren a recommandéieren datt Dir de Chacha20-ietf-poly1305 AEAD Chiffer benotzt well et déi stäerkst Verschlësselungsmethod ass.
Wann Dir Ären eegene Shadowsocks Server konfiguréiert, kënnt Dir entweder aus "chacha20-ietf-poly1305" oder "aes-256-gcm" wielen.
URI & QR Code
Shadowsocks fir Android / IOS hëlt och BASE64 kodéiert URI Format Konfiguratiounen:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Déi einfach URI soll sinn: ss://method:password@hostname:port
Déi uewe genannte URI follegt net RFC3986. D'Passwuert an dësem Fall soll einfach Text sinn, net Prozent-encodéiert.
Beispill: Mir benotzen e Server op 192.168.100.1:8888 Hëllef bf-cfb Verschlësselungsmethod a Passwuert test/!@#:.
Dann, mat der einfacher URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, kënne mir de BASE64 kodéierten URI generéieren:
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”))
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
Fir ze hëllefen dës URIs z'organiséieren an z'identifizéieren, kënnt Dir e Tag no der BASE64 kodéierter String addéieren:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Adress
Shadowsocks benotzt d'Adressen déi am SOCKS5 Adressformat fonnt goufen:
[1-Byte Typ][Variabel-Längt Host][2-Byte Port]
Hei sinn d'Adresstypen definéiert:
- 0x01: Host ass eng 4-Byte IPv4 Adress.
- 0x03: Host ass eng Variabel Längt String, ugefaange mat enger 1-Byte Längt, gefollegt vun engem maximalen 255-Byte Domain Numm.
- 0x04: Host ass eng 16-Byte IPv6 Adress.
D'Portnummer ass en 2-Byte Big-Endian net ënnerschriwwen Ganzt.
TCP
Den ss-lokale Client initiéiert eng Verbindung mat ss-Remote andeems verschlësselte Donnéeën ufänkt mat der Ziladress gefollegt vun de Notzlaaschtdaten. D'Verschlësselung wäert anescht sinn ofhängeg vum benotzte Chiffer.
[Ziladress] [Payload]
De ss-Remote kritt déi verschlësselte Donnéeën, entschlësselt dann d'Ziladress a parséiert. Dann erstellt eng nei TCP Verbindung zum Zil a schéckt d'Notzlaaschtdaten un. ss-Remote kritt eng Äntwert vum Zil, verschlësselt dann d'Donnéeën a schéckt se zréck op ss-local bis se ofgeschalt gëtt.
Fir Obfuscatiounszwecker, lokal a Remote sollten d'Handshakedaten mat e puer Notzlaascht am éischte Paket schécken.
UDP
ss-local schéckt de verschlësselte Datepaket mat der Ziladress an d'Notzlaascht op ss-Remote.
[Ziladress] [Payload]
Wann de verschlësselte Paket kritt ass, dekrypteert ss-Remote d'Ziladress a parséiert. Et schéckt dann en neien Datepaket mat der Notzlaascht op d'Zil. ss-Remote kritt d'Datepakete vum Zil a prependéiert d'Ziladress op d'Notzlaascht an all Paket. Verschlësselte Kopie ginn zréck op ss-local geschéckt.
[Ziladress] [Payload]
Dëse Prozess kann op ss-Remote gekacht ginn fir eng Netzwierkadress Iwwersetzung fir ss-local auszeféieren.