Shadowsocks dokumentasjon
Navigasjon
Shadowsocks konfigurasjonsformat
Konfigurasjonsfil
Shadowsocks tar JSON-formatkonfigurasjoner:
{
"server":"my_server_ip",
"server_port":8388,
"local_port":1080,
"passord":"barfoo!",
"metode":"chacha20-ietf-poly1305"
}
JSON-format
- server: vertsnavnet eller serverens IP (IPv4/IPv6).
- server_port: serverportnummer.
- lokal_port: lokalt portnummer.
- passord: et passord som brukes til å kryptere overføring.
- metode: krypteringsmetode.
Krypteringsmetode
Vi konfigurerer serverne våre og anbefaler at du bruker chacha20-ietf-poly1305 AEAD-chifferet fordi det er den sterkeste metoden for kryptering.
Hvis du konfigurerer din egen shadowsocks-server, kan du velge mellom enten "chacha20-ietf-poly1305" eller "aes-256-gcm".
URI og QR-kode
Shadowsocks for Android / IOS tar også BASE64-kodede URI-formatkonfigurasjoner:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Den vanlige URI-en skal være: ss://method:password@vertsnavn:port
Ovennevnte URI følger ikke RFC3986. Passordet i dette tilfellet skal være ren tekst, ikke prosentkodet.
Eksempel: Vi bruker en server på 192.168.100.1:8888 ved hjelp av bf-cfb krypteringsmetode og passord test/!@#:.
Deretter med vanlig URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, kan vi generere den BASE64-kodede URI:
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
For å hjelpe deg med å organisere og identifisere disse URI-ene, kan du legge til en tag etter den BASE64-kodede strengen:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
adressering
Shadowsocks bruker adressene som finnes i SOCKS5-adresseformatet:
[1-byte type][variable-length host][2-byte port]
Her er adressetypene som er definert:
- 0x01: vert er en 4-byte IPv4-adresse.
- 0x03 : vert er en streng med variabel lengde, som starter med en lengde på 1 byte, etterfulgt av et maks. 255 byte domenenavn.
- 0x04: vert er en 16-byte IPv6-adresse.
Portnummeret er et 2-byte big-endian usignert heltall.
TCP
ss-local-klienten starter en tilkobling til ss-remote ved å sende krypterte data som starter med måladressen etterfulgt av nyttelastdata. Krypteringen vil være forskjellig avhengig av chifferen som brukes.
[måladresse][nyttelast]
ss-fjernkontrollen mottar de krypterte dataene, og dekrypterer og analyserer måladressen. Deretter oppretter den en ny TCP-forbindelse til målet og videresender nyttelastdataene til den. ss-remote mottar et svar fra målet, krypterer deretter dataene og videresender dem tilbake til ss-local til de kobles fra.
For tilsløringsformål bør lokale og eksterne sende håndtrykkdataene med noe nyttelast i den første pakken.
UDP
ss-local sender den krypterte datapakken som inneholder måladressen og nyttelasten til ss-remote.
[måladresse][nyttelast]
Når den krypterte pakken er mottatt, dekrypterer og analyserer ss-remote måladressen. Den sender deretter en ny datapakke med nyttelasten til målet. ss-remote mottar datapakkene fra målet og legger måladressen foran nyttelasten i hver pakke. Krypterte kopier sendes tilbake til ss-local.
[måladresse][nyttelast]
Denne prosessen kan kokes ned til at ss-remote utfører en nettverksadresseoversettelse for ss-local.