Shadowsocks dokumentation
Navigation
Shadowsocks konfigurationsformat
Konfigurationsfil
Shadowsocks tager JSON-formatkonfigurationer:
{
"server":"min_server_ip",
"server_port":8388,
"local_port":1080,
"adgangskode":"barfoo!",
"metode":"chacha20-ietf-poly1305"
}
JSON-format
- server: dit værtsnavn eller server-IP (IPv4/IPv6).
- server_port: serverportnummer.
- local_port: lokalt portnummer.
- password: en adgangskode, der bruges til at kryptere overførsel.
- metode: krypteringsmetode.
Krypteringsmetode
Vi konfigurerer vores servere og anbefaler, at du bruger chacha20-ietf-poly1305 AEAD-chifferet, fordi det er den stærkeste krypteringsmetode.
Hvis du konfigurerer din egen shadowsocks-server, kan du vælge mellem enten "chacha20-ietf-poly1305" eller "aes-256-gcm".
URI & QR-kode
Shadowsocks til Android / IOS tager også BASE64-kodede URI-formatkonfigurationer:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
Den almindelige URI skal være: ss://method:password@hostname:port
Ovenstående URI følger ikke RFC3986. Adgangskoden i dette tilfælde skal være almindelig tekst, ikke procentkodet.
Eksempel: Vi bruger en server på 192.168.100.1:8888 ved brug af bf-cfb krypteringsmetode og adgangskode prøve/!@#:.
Derefter med den almindelige 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 at hjælpe med at organisere og identificere disse URI'er kan du tilføje et tag efter den BASE64-kodede streng:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
Adressering
Shadowsocks bruger de adresser, der findes i SOCKS5-adresseformatet:
[1-byte type][variabel længde vært][2-byte port]
Her er adressetyperne defineret:
- 0x01: vært er en 4-byte IPv4-adresse.
- 0x03 : vært er en streng med variabel længde, der starter med en 1-byte-længde efterfulgt af et maks. 255-byte domænenavn.
- 0x04: vært er en 16-byte IPv6-adresse.
Portnummeret er et 2-byte big-endian usigneret heltal.
TCP
ss-local-klienten starter en forbindelse til ss-remote ved at sende krypterede data, der starter med måladressen efterfulgt af nyttelastdata. Krypteringen vil være forskellig afhængig af den anvendte chiffer.
[måladresse][nyttelast]
ss-fjernbetjeningen modtager de krypterede data, og dekrypterer og analyserer derefter måladressen. Derefter opretter den en ny TCP-forbindelse til målet og videresender nyttelastdataene til den. ss-remote modtager et svar fra målet, krypterer derefter dataene og sender dem tilbage til ss-local, indtil de afbrydes.
Til sløringsformål bør lokale og eksterne sende håndtrykdataene med en vis nyttelast i den første pakke.
UDP
ss-local sender den krypterede datapakke indeholdende måladressen og nyttelasten til ss-remote.
[måladresse][nyttelast]
Når den krypterede pakke er modtaget, dekrypterer og analyserer ss-remote måladressen. Den sender derefter en ny datapakke med nyttelasten til målet. ss-remote modtager datapakkerne fra målet og sætter måladressen forud for nyttelasten i hver pakke. Krypterede kopier sendes tilbage til ss-local.
[måladresse][nyttelast]
Denne proces kan koges ned til at ss-remote udfører en netværksadresseoversættelse for ss-local.