Documentation Shadowsocks

Format de configuration de Shadowsocks

Fichier de configuration

Shadowsocks accepte les configurations au format JSON :

{

    "serveur":"mon_ip_serveur",

    "Server_port": 8388,

    "port_local":1080,

    "mot de passe":"barfoo!",

    "méthode":"chacha20-ietf-poly1305"

}

Format JSON

  • serveur : votre nom d'hôte ou IP de serveur (IPv4/IPv6).
  • port_serveur : numéro de port du serveur.
  • local_port : numéro de port local.
  • mot de passe : un mot de passe utilisé pour chiffrer le transfert.
  • méthode : méthode de cryptage.

Méthode de chiffrement

Nous configurons nos serveurs et vous recommandons d'utiliser le chiffrement AEAD chacha20-ietf-poly1305 car il s'agit de la méthode de chiffrement la plus puissante. 

Si vous configurez votre propre serveur shadowsocks, vous pouvez choisir entre "chacha20-ietf-poly1305" ou "aes-256-gcm".

URI et code QR

Shadowsocks pour Android / IOS accepte également les configurations au format URI encodé BASE64 :

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

 

L'URI simple doit être : ss://method:password@hostname:port

L'URI ci-dessus ne suit pas RFC3986. Dans ce cas, le mot de passe doit être en texte brut et non codé en pourcentage.



Exemple : Nous utilisons un serveur à 192.168.100.1:8888 en utilisant bf-cfb méthode de cryptage et mot de passe test/!@#:

 

Ensuite, avec l'URI simple ss://bf-cfb:test/!@#:@192.168.100.1:8888, nous pouvons générer l'URI encodé en BASE64 : 

 

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

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Pour faciliter l'organisation et l'identification de ces URI, vous pouvez ajouter une balise après la chaîne encodée en BASE64 :

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Adressage

Shadowsocks utilise les adresses trouvées dans le format d'adresse SOCKS5 :

[type 1 octet][hôte de longueur variable][port 2 octets]

 

Voici les types d'adresses définis :

  • 0x01 : l'hôte est une adresse IPv4 de 4 octets.
  • 0x03 : l'hôte est une chaîne de longueur variable, commençant par une longueur de 1 octet, suivie d'un nom de domaine de 255 octets maximum.
  • 0x04 : l'hôte est une adresse IPv16 de 6 octets.

 

Le numéro de port est un entier non signé gros boutien de 2 octets.

TCP

Le client ss-local initie une connexion à ss-remote en envoyant des données chiffrées commençant par l'adresse cible suivie des données utiles. Le chiffrement sera différent selon le chiffrement utilisé.

[adresse cible][charge utile]

Le ss-remote reçoit les données chiffrées, puis déchiffre et analyse l'adresse cible. Ensuite, il crée une nouvelle connexion TCP vers la cible et lui transmet les données utiles. ss-remote reçoit une réponse de la cible puis crypte les données et les renvoie à ss-local jusqu'à ce qu'il soit déconnecté.

À des fins d'obscurcissement, local et distant doivent envoyer les données de prise de contact avec une certaine charge utile dans le premier paquet.

UDP

ss-local envoie le paquet de données crypté contenant l'adresse cible et la charge utile à ss-remote.

[adresse cible][charge utile]

Une fois le paquet chiffré reçu, ss-remote déchiffre et analyse l'adresse cible. Il envoie ensuite un nouveau paquet de données avec la charge utile à la cible. ss-remote reçoit les paquets de données de la cible et ajoute l'adresse cible à la charge utile dans chaque paquet. Les copies cryptées sont renvoyées à ss-local.

[adresse cible][charge utile]

Ce processus peut se résumer à ss-remote effectuant une traduction d'adresse réseau pour ss-local.

Commencez votre essai gratuit de 5 jours