Несколько слов о shadowsocks
shadowsocks - это шифрованный сетевой туннель, клиентская часть которого предоставляет доступ приложениям к сети как SOCKS-прокси, запущенный на этом же устройстве. В некотором смысле его можно использовать как VPN, потому что клиенты поддерживают прозрачное перенаправление трафика приложений в туннель.
С самого начала shadowsocks разрабатывался как средство для обхода блокировок в Китае. С некоторого момента он получил возможность подключения внешних модулей-плагинов для оборачивания трафика shadowsocks в различные виды сетевых соединений. Это значительно расширяет границы его применения.
На хабре shadowsocks уже освещался ранее в статье от @Barafu_Albino_Cheetah.
В этом руководстве описано развёртывание сервера shadowsocks с плагином v2ray на облачном провайдере Heroku. Платформа Heroku позволяет бесплатно разворачивать небольшие веб-приложения, а плагин v2ray позволяет пропускать трафик shadowsocks внутри websocket-соединения, что в итоге и позволяет запускать всю конструкцию на Heroku.
Развёртывание сервера
В этом руководстве используется замечательный проект готового приложения для Heroku, которое реализует всё необходимое автоматически. Ссылка на GitHub проекта.
Шаг 1. Регистрация в сервисе Heroku
Для этого нужно зайти на сайт Heroku, нажать Sign up и заполнить требуемые сведения. Для регистрации нужна только электронная почта.
Шаг 2. Начало развёртывания
Нажмите на эту ссылку.
Шаг 3. Конфигурирование
В появившейся форме заполните все поля как показано на скриншоте:
В качестве значений "App Name" и AppName впишите какое-то уникальное имя приложения, одинаковое в обоих полях. Это имя станет частью доменного имени <appname>.herokuapp.com, по которому станет доступен сервис.
Вместо PASSWORD задайте свой пароль. Можно задать подлиннее и понадёжнее - Вам, скорее всего, не придётся вводить его вручную.
Кроме того, желательно поменять пути QR и путь обработчика прокси V2_Path на какое-нибудь трудноугадываемое значение.
Шаг 4. Запуск
Заполнив форму, нажмите Deploy app.
После завершения сборки и запуска QR-код с конфигурацией для мобильных устройств будет доступен по адресу
https://APPNAME.herokuapp.com/qr/vpn.png
а строка с конфигурацией в виде URL будет доступна по адресу
https://APPNAME.herokuapp.com/qr/
где APPNAME - выбранное Вами имя приложения. Если Вы меняли путь к QR-коду, то ссылка изменится в соответственно. Во второй ссылке косая черта на конце обязательна.
Всё, можно пользоваться!
Настройка мобильного клиента на примере Android
Установите на Ваше устройство клиент shadowsocks и плагин v2ray к нему.
Запустите приложение и добавьте новый профиль кнопкой с плюсом в правом верхнем углу. Выберите сканирование QR-кода и отсканируйте его.
Выберите созданный профиль касанием.
Запустите соединение нажатием на круглую кнопку внизу.
Готово!
Настройка настольного клиента на примере Windows
Скачайте отсюда и распакуйте shadowsocks.
Скачайте отсюда плагин v2ray, подходящий под вашу платформу. Достаньте из архива файл и переименуйте его в
v2ray.exe
(или простоv2ray
, если ваш проводник не отображает расширения файлов). Поместите его в одну директорию с shadowsocks.Запустите shadowsocks.
Скопируйте конфигурационный URL вашего личного сервера shadowsocks со страницы
https://APPNAME.herokuapp.com/qr/
, где APPNAME - имя приложения, которое вы выбрали.Нажмите правой кнопкой мыши на значке shadowsocks в системном трее и выберите Servers - Import URL from Сlipboard.
Включите прокси, выбрав в том же контекстном меню System Proxy - Global.
Готово!
Ограничения Heroku
Для приложений, запущенных на Heroku, в настоящий момент действуют следующие ограничения:
Временная квота работы приложений при бесплатном уровне использования составляет 550 часов в месяц.
Контейнер приложения переходит в спящий режим после 30 минут отсутствия запросов к нему. С одной стороны это доставляет неудобства в виде задержек ответа до полминуты после перерыва в активности. С другой стороны, это экономит отведённую временную квоту.
Квота на передачу данных по сети равна 2 ТБ в месяц. То есть в случае с прокси это даёт чуть меньше 1 ТБ трафика в месяц.