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-файл с ключами доступа для пользователей, используя указанный в этой статье формат. Включите в файл конечные точки 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 1.15.0 или более поздних версий и добавьте созданный динамический ключ доступа в список серверов. Нажмите Подключить, чтобы начать туннелирование трафика через сервер с конфигурацией Shadowsocks-over-Websocket.

Чтобы убедиться, что трафик проходит через ваш сервер Outline, воспользуйтесь инструментом IPInfo.