shadowsocks

Повторение - мать учения, а значит я снова приведу выжимку из статьи о shadowsocks в вики.

shadowsocks - это шифрованный сетевой туннель, клиентская часть которого предоставляет доступ приложениям к сети как SOCKS-прокси, запущенный на этом же устройстве. Существуют клиентские приложения shadowsocks, которые позволяют заворачивать в него трафик как в VPN.

С самого начала shadowsocks разрабатывался как средство для обхода блокировок в Китае, и достаточно в этом деле преуспевает. С некоторого момента он стал иметь возможность подключения внешних модулей-плагинов для оборачивания трафика shadowsocks в различные виды сетевых соединений. Это значительно расширяет границы его применения.

Цель этого руководства

Это руководство предлагает ещё одну альтернативу, которая отличается от предыдущего руководства деталями:

  • Физически серверы располагаются в GCP вместо AWS, как в предыдущем методе.

  • Доступно больше локаций датацентров. В частности, есть довольно близкие к нам серверы в Германии и Франции, с которыми задержка подключения минимальна.

  • Другие ограничения: нет ограничения по трафику (в пределах так называемого fair use), нет ограничения по часам работы в месяц, но есть ограничение на общую продолжительность триала в один месяц. Однако, на это как раз можно повлиять.

Мы развернём сервер shadowsocks с плагином v2ray на облачном провайдере platform.sh. platform.sh - это PaaS-провайдер с бесплатным триалом на месяц, позволяющий бесплатно запускать веб-приложения. Плагин v2ray пропускает трафик shadowsocks внутри websocket-соединения, чтобы мы могли связываться с нашим прокси через веб-фасад платформы.

Развёртывание

От Вас потребуется только две вещи: электронная почта и способность запушить в git-репозиторий файлы.

Шаг 1. Регистрация в сервисе platform.sh

Регистрация доступна по этой ссылке. Регистрация с главной страницы сайта работает в данный момент немного криво. Добраться вручную до указанной ссылки можно так: platform.sh -> Free Trial -> Login with Auth -> Sign up. Напрямую на странице Free Trial регистрация не работает.

Если Вы регистрируетесь в сервисе повторно, чтобы начать триал сначала, Вам потребуется указать другой почтовый ящик. Однако, не обязательно иметь много почтовых адресов для этого. Достаточн�� воспользоваться предусмотренной стандартом субадресацией. Вы можете дописать после знака плюс к локальной части адреса (то, что до собачки), любые символы. К примеру, если Ваша электронная почта user@example.org, то вы можете также получать письма на адрес user+test1@example.org.

Шаг 2. Создание проекта

Создайте пустой проект. Такая возможность будет предложена сразу, либо можно нажать соответствующую кнопку в панели управления потом.

Шаг 3. Добавление SSH-ключей в настройках аккаунта

Пока устанавливается контейнер под новый проект, добавьте Ваш SSH-ключ в настройках аккаунта, чтобы иметь возможность отправлять файлы в git-репозиторий. Из практических соображений лучше использовать отдельный SSH-ключ для этих целей, иначе возникнет путаница с аккаунтами, ключами и репозиториями проектов.

Сделать это можно на странице Account settings -> SSH Keys -> Add public key.

Шаг 4. Клонирование репозитория

На главной странице проекта (Overview) скопируйте команду, которая клонирует git-репозиторий проекта. Команда клонирования с адресом репозитория доступна в правом верхнем углу, по кнопке GIT.

Шаг 5. Наполнение репозитория

Пришло время положить файлы в репозиторий проекта из моего репозитория и запустить сборку проекта. Сделать это можно следующим образом запуская команды из директории проекта:

git remote add upstream https://github.com/Snawoot/shadowsocks-platform.sh.git
git fetch upstream
git reset --hard upstream/master
git checkout -b main
git push -u origin --force-with-lease main

После этого проект будет собран и уже ��азвёрнут.

Подсказка: явно задать используемый SSH-ключ можно установкой вот такой переменной окружения в своей консоли:

export GIT_SSH_COMMAND='ssh -i /path/to/private/key -o IdentitiesOnly=yes'

Шаг 6. Конфигурация

Осталось настроить сервер. В панели управления проектом platform.sh выберите окружение Master в выпадающем списке в правой верхней части экрана. После этого перейдите в настройки переменных проекта (SETTINGS -> Variables). Добавьте новую переменную env:SS_PASSWORD кнопкой Add справа как показано ниже:

Значением переменной должен быть Ваш пароль, который будет использоваться для подключения к серверу shadowsocks.

Кроме этого, желательно ещё определить значение переменной env:V2_PATH, назначив какой-то трудноугадываемый путь вроде такого: /dcfaeb49-33ec-4574-af45-7b846d182522. Если не указано, то по умолчанию оно равно /v2.

После изменения переменных сервер сразу автоматически пезапустится и будет готов к работе.

Настройка клиентов

Про установку клиентских приложений можно прочитать в предыдущей статье. В этом решении нет автоматической генерации URL или QR-кода с настройками. Ручные настройки таковы:

Параметр

Значение

server

Домен из URL, по которому доступен проект (отображается в Overview проекта)

server_port

443

password

Значение переменной env:SS_PASSWORD

method

chacha20-ietf-poly1305

plugin

v2ray

plugin_opts

path=V2_PATH;host=DOMAIN;tls, где DOMAIN - домен из URL проекта, а V2_PATH - значение переменной env:V2_PATH, либо /v2, если она не задана.

Конец