Documentation Shadowsocks
Navigation
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.