Shadowsocks dokumentation

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.

Start din 5-dages gratis prøveperiode