Shadowsocks-over-WebSockets

Client Outline v1.15.0 et versions ultérieures

Ce tutoriel détaillé vous aidera à implémenter Shadowsocks-over-WebSockets, une technique puissante utilisée pour contourner la censure dans les environnements où les connexions Shadowsocks standards sont bloquées. En encapsulant le trafic Shadowsocks dans des WebSockets, vous pouvez le déguiser en trafic Web standard pour plus de résilience et d'accessibilité.

Étape 1 : Configurez et exécutez un serveur Outline

Créez un fichier config.yaml avec la configuration suivante :

web:
  servers:
    - id: server1
      listen:
        - "127.0.0.1:WEB_SERVER_PORT"

services:
  - listeners:
      - type: websocket-stream
        web_server: server1
        path: "/TCP_PATH"
      - type: websocket-packet
        web_server: server1
        path: "/UDP_PATH"
    keys:
      - id: 1
        cipher: chacha20-ietf-poly1305
        secret: SHADOWSOCKS_SECRET

Téléchargez le dernier outline-ss-server et exécutez-le avec la configuration créée :

outline-ss-server -config=config.yaml

Étape 2 : Révélez le serveur Web

Pour rendre votre serveur Web WebSocket accessible au public, vous devez le révéler sur Internet et configurer le protocole TLS. Il existe plusieurs façons de procéder. Vous pouvez utiliser un serveur Web local comme Caddy, nginx ou Apache (en vous assurant qu'il comporte un certificat TLS valide), ou faire appel à un service de tunnelisation comme Cloudflare Tunnel ou ngrok.

Exemple avec TryCloudflare

Dans cet exemple, nous allons utiliser TryCloudflare pour créer un tunnel rapide. C'est un moyen pratique et sécurisé de révéler votre serveur Web local sans ouvrir de ports d'entrée.

  1. Téléchargez et installez cloudflared.

  2. Créez un tunnel pointant vers le port de votre serveur Web local :

    cloudflared tunnel --url http://127.0.0.1:WEB_SERVER_PORT
    

Cloudflare fournira un sous-domaine (exemple : acids-iceland-davidson-lb.trycloudflare.com) pour accéder à votre point de terminaison WebSocket et gérer automatiquement le protocole TLS. Notez le nom de ce sous-domaine, car vous en aurez besoin ultérieurement.

Étape 3 : Créez une clé d'accès dynamique

Générez un fichier YAML de clé d'accès client pour vos utilisateurs à l'aide du format de configuration de la clé d'accès et indiquez les points de terminaison WebSocket configurés précédemment côté serveur :

transport:
  $type: tcpudp

  tcp:
    $type: shadowsocks

    endpoint:
      $type: websocket
      url: wss://DOMAIN/TCP_PATH
    cipher: chacha20-ietf-poly1305
    secret: SHADOWSOCKS_SECRET

  udp:
    $type: shadowsocks

    endpoint:
      $type: websocket
      url: wss://DOMAIN/UDP_PATH
    cipher: chacha20-ietf-poly1305
    secret: SHADOWSOCKS_SECRET

Après avoir généré le fichier YAML de clé d'accès dynamique, vous devez le fournir à vos utilisateurs. Vous pouvez héberger le fichier sur un service d'hébergement Web statique ou bien le générer de façon dynamique. En savoir plus sur les clés d'accès dynamiques

Étape 4 : Connectez-vous au client Outline

Utilisez l'une des applications client Outline officielles (version 1.15.0 ou versions ultérieures) et ajoutez la clé d'accès dynamique que vous venez de créer comme entrée de serveur. Cliquez sur Connecter pour activer la tunnelisation vers votre serveur à l'aide de la configuration Shadowsocks-over-Websocket.

Utilisez un outil comme IPInfo pour vérifier que vous naviguez désormais sur Internet depuis votre serveur Outline.