Shadowsocks-Dokumentation

Shadowsocks-Konfigurationsformat

Konfigurationsdatei

Shadowsocks akzeptiert Konfigurationen im JSON-Format:

{

    „server“: „my_server_ip“,

    „server_port“:8388,

    „lokaler_port“: 1080,

    „Passwort“: „barfoo!“,

    „Methode“: „chacha20-ietf-poly1305“

}

JSON-Format

  • Server: Ihr Hostname oder Ihre Server-IP (IPv4/IPv6).
  • server_port: Serverportnummer.
  • local_port: lokale Portnummer.
  • Passwort: ein Passwort, das zum Verschlüsseln der Übertragung verwendet wird.
  • Methode: Verschlüsselungsmethode.

Verschlüsselungsmethode

Wir konfigurieren unsere Server und empfehlen Ihnen, die AEAD-Chiffre chacha20-ietf-poly1305 zu verwenden, da dies die stärkste Verschlüsselungsmethode ist. 

Wenn Sie Ihren eigenen Shadowsocks-Server konfigurieren, können Sie entweder „chacha20-ietf-poly1305“ oder „aes-256-gcm“ auswählen.

URI & QR-Code

Shadowsocks für Android/IOS akzeptiert auch Konfigurationen im BASE64-codierten URI-Format:

ss://BASE64-ENCODED-STRING-OHNE-PADDING#TAG

 

Der einfache URI sollte lauten: ss://method:password@hostname:port

Der obige URI folgt nicht RFC3986. Das Passwort sollte in diesem Fall im Klartext und nicht prozentkodiert sein.



Beispiel: Wir verwenden einen Server unter 192.168.100.1:8888 Verwendung von bf-cfb Verschlüsselungsverfahren und Passwort Prüfung/!@#:

 

Dann mit dem einfachen URI ss://bf-cfb:test/!@#:@192.168.100.1:8888, können wir den BASE64-codierten URI generieren: 

 

> console.log( „ss://“ + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888“) )

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Um diese URIs zu organisieren und zu identifizieren, können Sie ein Tag nach der BASE64-codierten Zeichenfolge anhängen:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Adressierung

Shadowsocks verwendet die im SOCKS5-Adressformat gefundenen Adressen:

[1-Byte-Typ][Host mit variabler Länge][2-Byte-Port]

 

Hier sind die Adresstypen definiert:

  • 0x01 : Host ist eine 4-Byte-IPv4-Adresse.
  • 0x03 : Host ist eine Zeichenfolge mit variabler Länge, beginnend mit einer Länge von 1 Byte, gefolgt von einem Domänennamen von maximal 255 Byte.
  • 0x04 : Host ist eine 16-Byte-IPv6-Adresse.

 

Die Portnummer ist eine 2-Byte-Big-Endian-Ganzzahl ohne Vorzeichen.

TCP

Der ss-local-Client initiiert eine Verbindung zu ss-remote, indem er verschlüsselte Daten sendet, beginnend mit der Zieladresse, gefolgt von den Nutzdaten. Die Verschlüsselung ist je nach verwendeter Chiffre unterschiedlich.

[Zieladresse][Nutzlast]

Die ss-remote empfängt die verschlüsselten Daten, entschlüsselt und analysiert dann die Zieladresse. Dann baut es eine neue TCP-Verbindung zum Ziel auf und leitet die Nutzdaten an dieses weiter. ss-remote empfängt eine Antwort vom Ziel, verschlüsselt dann die Daten und leitet sie zurück an ss-local, bis die Verbindung getrennt wird.

Zu Verschleierungszwecken sollten Local und Remote die Handshake-Daten mit einigen Nutzdaten im ersten Paket senden.

UDP

ss-local sendet das verschlüsselte Datenpaket mit Zieladresse und Payload an ss-remote.

[Zieladresse][Nutzlast]

Sobald das verschlüsselte Paket empfangen wurde, entschlüsselt und parst ss-remote die Zieladresse. Anschließend sendet er ein neues Datenpaket mit der Nutzlast an das Ziel. ss-remote empfängt die Datenpakete vom Ziel und stellt die Zieladresse der Nutzlast in jedem Paket voran. Verschlüsselte Kopien werden an ss-local zurückgesendet.

[Zieladresse][Nutzlast]

Dieser Prozess kann darauf reduziert werden, dass ss-remote eine Netzwerkadressübersetzung für ss-local durchführt.

Starten Sie Ihre 5-tägige kostenlose Testversion