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 push --force-with-lease

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

Подсказка: явно задать используемый 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, если она не задана.

Конец