Как создать собственный сервис Shadowsocks для доступа к заблокированным сайтам

shadowsocks · debian · обход блокировок сайтов · собственный сервис · настройка сервера · socks5 · прокси · шифрованный туннель
Добро пожаловать в защищённый туннель В 2013 году я уже писал про использование Shadowsocks для защиты своего траффика в открытых сетях WiFi. За пять лет многое поменялось. Появился Let's Encrypt и теперь только ленивый не добавил на свой сайт подержку HTTPS с бесплатным SSL-сертификатом. Короче говоря, шифрования в интернете стало намного больше. В итоге, если посещать только ресурсы, доступные по безопасному соединению, то делать это можно из любой общественной сети — вклиниться в ваш траффик будет почти нереальной задачей.

Однако, все эти пять лет шёл процесс усиления мер по регулированию интернета в России. Параллельно, всё это время, жирнели и наглели некоторые интернет-провайдеры. Например, мой провайдер подменяет DNS и показывает рекламу во весь экран в браузере вместо ожидаемого сайта. Подозреваю, что это только вершина айсберга, и существуют другие способы монетизации пользователей, банально — трекинг истории посещения сайтов и слив этой информации в компании, занимающиеся Big Data. Эти провайдеры, эти толстые коты без совести, не желающие терять свой прибыльный бизнес, без какого-либо сопротивления внедряют у себя самые мощные средства запрета и цензуры за счёт своих клиентов.

Сегодня главной проблемой является уже не защита канала до конкретного сайта или веб-ресурса, а то, как это соединение получить, если он оказался под блокировкой. Судя по недавним событиям, связанным с запретом мессенджера Telegram в России, эта блокировка может быть неоправданной, просто "зацепило". В этом случае, на помощь снова приходит Shadowsocks, благо за эти пять лет он стал гораздо проще в установке (не надо ничего собирать из исходников) и обзавёлся новыми методами шифрования.

Предупреждение

Описываемый ниже способ обхода блокировок предназначен для личного использования и потребует затраты денежных средств каждый месяц. Не нужно делиться доступом к своему туннелю в мир с людьми, которых ты мало знаешь или не доверяешь, и уж тем более не стоит публиковать его для всех желающих. В случае нарушения закона, отвечать придётся владельцу сервиса, то есть тебе, дорогой читатель, если ты собираешься принять эту статью к действию. Также, не стоит рассматривать свой будущий сервис Shadowsocks как средство анонимизации, это абсолютно не так. Я рекомендую НЕ качать через него торренты с нелегальным контентом и НЕ делать другие плохие вещи, а пользоваться только для доступа к заблокированным ресурсам и для защиты от произвола интернет-провайдеров в России.

Тратим деньги на кусочек свободного интернета

Во время виртуальной войны государственной машины с Telegram под удар попали Google, Amazon и даже DigitalOcean, поэтому выбирать провайдера VPS лучше не из крупных представителей бизнеса. Мой маленький сервер в Амстердаме в этой заварушке не пострадал, поэтому я рекомендую пройти по ссылке и завести себе VPS там же.

Регистрация VPS на себя — это очень важный момент. Ты будешь полностью контролировать, оплачивать и нести ответственность за свой личный сервис.

Стоимость инстанса у Vultr начинается от 2.5 долларов в месяц, но такие условия ограниченно доступны только в датацентрах Америки, что от России очень далеко, и связь не так хороша, как хотелось бы. Немаловажным фактором для выбора локации также можно считать политическую обстановку и отношение к интернету в стране. Америка — не лучший вариант в этом плане, там существует лобби интернет-провайдеров, которые плевать хотели на сетевой нейтралитет. Суммируя, VPS желательно брать в Европе (Нидерланды или Франция). В качестве операционной системы я предпочитаю выбирать Debian, и всё дальнейшее описание будет на 100% применимо именно к этой системе. Выбор локации и операционной системы для VС2 у провайдера Vultr Для уточнения, VPS у Vultr называется Virtual Cloud Compute (VC2). На момент написания этой статьи инстансы по 2.5 бакса всё ещё недоступны в Европе, поэтому приходится брать "сегодня, но по пять": Выбор месячного тарифного плана Можно сразу кликнуть на большую кнопку Deploy Now, чтобы запустить свой новый сервер. Самый важный шаг сделан, остальное — дело техники.

Настройка сервера

Если ты не знаешь, как подключиться к удалённому серверу по SSH и не обладаешь навыками работы в терминале Linux, то для выполнения следующего блока работ по конфигурированию сервера стоит обратиться к специалисту. Это может быть твой родственник, друг или просто человек со знаниями Linux, которому ты доверяешь. Самое главное ты уже сделал — это регистрация VPS на себя. Теперь нужно установить Shadowsocks в систему. Однако, сначала я советую принять меры, направленные на защиту сервера.

Для особых параноиков, первым шагом может стать обновление ключей SSH- сервера.

Затем можно воспользоваться моей статьёй по защите VPS хотя бы для переноса SSH-сервера на другой порт. Остальные порты, кроме будущего порта Shadowsocks, нужно закрыть при помощи Firewall, который входит в состав сервисов, предоставляемых хостером Vultr бесплатно или по уже упомянутой статье при помощи iptables.

Пять лет назад я собирал Shadowsocks из исходников, теперь этого делать не нужно. Всё необходимое есть в официальном репозитории Debian. Установка проста и сводится к одной команде в терминале:
sudo apt install shadowsocks-libev
Конфигурация тоже несложна, нужно отредактировать файл /etc/shadowsocks-libev/config.json. Примерное содержимое должно быть таким:
{
  "server":"0.0.0.0",
  "server_port":8388,
  "local_port":1080,
  "password":"YOUR-STRONG-PASSWORD",
  "timeout":60,
  "method":"aes-256-cfb"
}
Используй очень стойкий пароль! Метод шифрования aes-256-cfb выбран по той причине, что на современных процессорах он поддерживается аппаратно, то есть будет работать быстрее остальных.

Порт Shadowsocks, который должен быть открыт в Firewall, согласно этому конфигу — 8388. Я рекомендую его сменить на что-то менее тривиальное. В особо зарегулированных сетях, например, на работе, где зверствует админ, могут быть закрыты все порты кроме 80 и 443. В таком случае, вместо порта 8388 смело вписываем 443. Будет работать :) Примечание: это сработает, если на вашем VPS не установлен веб-сервер с сайтом, доступным по HTTPS.

Для того, чтобы новые настройки возымели действие, сервис нужно перезапустить командой:
sudo systemctl restart shadowsocks-libev
Узнать, правильно ли работает сервис, можно при помощи команды:
sudo systemctl status shadowsocks-libev
На этом настройка сервиса закончена. Не забудь сохранить в удобном и надёжном месте IP сервера, пароль, порт и метод шифрования из конфигурации, чтобы без лишней суматохи настраивать клиентов. В следующей статье я расскажу, как подключиться к Shadowsocks-серверу на рабочем компьютере, ноутбуке или Android- смартфоне.

Обсуждение

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