Shadowsocks-over-WebSockets

אפליקציית הלקוח של Outline מגרסה 1.15.0 ואילך.

במדריך הזה מוסבר בפירוט איך מטמיעים את Shadowsocks-over-WebSockets, שיטה יעילה לעקיפת צנזור בסביבות שבהן חיבורי Shadowsocks רגילים חסומים. כשאתם עוטפים את תעבורת הנתונים של Shadowsocks ב-WebSockets, אתם יכולים להסוות אותה כתעבורת נתונים רגילה באינטרנט, וכך לשפר את העמידות והנגישות.

שלב 1: הגדרה והפעלה של שרת Outline

יוצרים קובץ config.yaml חדש עם התצורה הבאה:

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

מורידים את הגרסה האחרונה של outline-ss-server ומריצים אותה באמצעות התצורה שנוצרה:

outline-ss-server -config=config.yaml

שלב 2: חשיפת שרת האינטרנט

כדי לאפשר גישה ציבורית לשרת האינטרנט של WebSocket, צריך לחשוף אותו לאינטרנט ולהגדיר TLS. יש כמה דרכים לעשות את זה. אפשר להשתמש בשרת אינטרנט מקומי כמו Caddy, ‏ nginx או Apache, ולוודא שיש לו אישור TLS תקף, או להשתמש בשירות מנהרה כמו Cloudflare Tunnel או ngrok.

דוגמה לשימוש ב-TryCloudflare

בדוגמה הזו נראה איך משתמשים ב-TryCloudflare כדי ליצור מנהרה מהירה. כך תוכלו לחשוף את שרת האינטרנט המקומי שלכם בצורה נוחה ומאובטחת, בלי לפתוח יציאות נכנסות.

  1. מורידים ומתקינים את cloudflared.

  2. יוצרים מנהרה שמפנה לשקע של שרת האינטרנט המקומי:

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

Cloudflare יספק תת-דומיין (למשל, acids-iceland-davidson-lb.trycloudflare.com) כדי לגשת לנקודת הקצה של WebSocket ולטפל ב-TLS באופן אוטומטי. חשוב לזכור את התת-דומיין הזה, כי תצטרכו אותו בהמשך.

שלב 3: יצירת מפתח גישה דינמי

יוצרים קובץ YAML של מפתח גישה ללקוח עבור המשתמשים באמצעות הפורמט Access Key Configuration, ומצרפים את נקודות הקצה של WebSocket שהוגדרו מראש בצד השרת:

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

אחרי שיוצרים את קובץ ה-YAML של מפתח הגישה הדינמי, צריך להעביר אותו למשתמשים. אפשר לארח את הקובץ בשירות אירוח סטטי באינטרנט או ליצור אותו באופן דינמי. מידע נוסף על שימוש במפתחות גישה דינמיים

שלב 4: התחברות ללקוח Outline

משתמשים באחת מהאפליקציות הרשמיות של Outline Client (גרסאות 1.15.0 ואילך) ומוסיפים את מפתח הגישה הדינמי החדש שנוצר כרשומה של שרת. לוחצים על Connect כדי להתחיל את תהליך הניתוב לשרת באמצעות ההגדרה של Shadowsocks-over-Websocket.

אפשר להשתמש בכלי כמו IPInfo כדי לוודא שאתם גולשים באינטרנט דרך שרת Outline.