Shadowsocks-over-WebSockets

Outline-Client v1.15.0+

Dieses Tutorial bietet eine Schritt-für-Schritt-Anleitung zur Implementierung von Shadowsocks-over-WebSockets, ein effektives Verfahren zur Umgehung von Zensuren in Umgebungen, in denen reguläre Shadowsocks-Verbindungen blockiert werden. Durch die Kapselung des Shadowsocks-Traffics in WebSockets können Sie ihn als Standard-Web-Traffic tarnen – für höhere Ausfallsicherheit und Zugänglichkeit.

Schritt 1: Outline-Server konfigurieren und ausführen

Erstellen Sie eine neue config.yaml-Datei mit der folgenden Konfiguration:

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

Laden Sie den neuesten outline-ss-server herunter und führen Sie ihn mit der erstellten Konfiguration aus:

outline-ss-server -config=config.yaml

Schritt 2: Webserver freigeben

Um Ihren WebSocket-Webserver öffentlich zugänglich zu machen, müssen Sie ihn im Internet freigeben und TLS konfigurieren. Hierfür gibt es mehrere Optionen. Sie können einen lokalen Webserver wie Caddy, nginx oder Apache verwenden und sicherstellen, dass dieser ein gültiges TLS-Zertifikat hat. Oder Sie verwenden einen Tunneling-Dienst wie Cloudflare Tunnel oder ngrok.

Beispiel mit TryCloudflare

In diesem Beispiel erstellen wir mit TryCloudflare schnell einen Tunnel. So können Sie Ihren lokalen Webserver einfach und sicher freigeben, ohne Eingangs-Ports zu öffnen.

  1. Laden Sie cloudflared herunter und führen Sie die Installation durch.

  2. Erstellen Sie einen Tunnel, der auf den Port Ihres lokalen Webservers zeigt:

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

Cloudflare stellt eine Subdomain (z. B. acids-iceland-davidson-lb.trycloudflare.com) für den Zugriff auf Ihren WebSocket-Endpunkt und die automatische Handhabung von TLS bereit. Notieren Sie sich die Subdomain. Sie benötigen sie später.

Schritt 3: Dynamischen Zugriffsschlüssel erstellen

Generieren Sie eine YAML-Datei mit dem Client-Zugriffsschlüssel für die Nutzer. Verwenden Sie dazu das Format für die Zugriffsschlüssel-Konfiguration und die WebSocket-Endpunkte, die Sie zuvor auf Serverseite konfiguriert haben:

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

Nachdem Sie die YAML-Datei mit dem dynamischen Zugriffsschlüssel erstellt haben, müssen Sie diese Ihren Nutzern zukommen lassen. Sie können die Datei auf einem statischen Webhosting-Dienst hosten oder dynamisch generieren. Weitere Informationen zur Verwendung von dynamischen Zugriffsschlüsseln

Schritt 4: Mit dem Outline-Client verbinden

Fügen Sie in einer der offiziellen Outline-Client-Anwendungen (ab Version 1.15.0) den gerade erstellten dynamischen Zugriffsschlüssel für den Server hinzu. Klicken Sie auf Verbinden, um mit der Shadowsocks-over-Websocket-Konfiguration eine Tunnelverbindung zu Ihrem Server herzustellen.

Vergewissern Sie sich mit einem Tool wie IPInfo, dass Sie über Ihren Outline-Server mit dem Internet verbunden sind.