Безопасный интернет с Shadowsocks

shadowsocks · libev · ubuntu · debian · android · socks5 · proxy · настройка
В связи с предстоящим путешествием за границу я решил заняться поиском решения для безопасного подключения к интернету из общественных мест со смартфона. Раньше я этим пренебрегал, а очень зря. Теперь же у меня есть выделенный сервер в Амстердаме и желание уберечь свой трафик от любопытного носа оператора сотовой связи и от лап злых кулхацкеров в открытых сетях WiFi. Спрячь свой трафик Итак, нам нужен клиент для Android и сервер для Debian / Ubuntu для организации шифрованного туннеля. После быстрого поиска в сети на предмет чего-то отличного от OpenVPN (как-то я возился с ним, много нервов потратил — теперь хочется простоты) я наткнулся в Google Play на клиента Shadowsocks с открытым исходным кодом. Пройдя по ссылкам в описании я понял, что это что-то свежее, и это что-то используют китайцы для преодоления своего Великого Китайского Файервола. Впечатляет? Давайте приступим к настройке.
Из описания Shadowsocks следует, что это защищённый сверхбыстрый прокси-сервер с имплементациями на таких языках программирования как python, nodejs, golang, C (libev), C (libuv), erlang и dotcloud. Я выбрал вариант на C, который на GitHub имеет коммиты посвежее — libev.

Сборка и установка из исходников

Shadowsocks-libev написан на чистом C и зависит только от пакетов libev и openssl. На Debian / Ubuntu его легко и быстро собрать и установить из исходников с GitHub (должны быть установлены пакеты git, build-essential, autoconf, libtool и libssl-dev):
git clone https://github.com/madeye/shadowsocks-libev.git
cd shadowsocks-libev
./configure && make
sudo make install

Конфигурационный файл

После сборки и установки удобно создать файл конфигурации, хотя можно запускать и с параметрами в командной строке. Мне нравится всё же иметь файл конфигурации (он, кстати, должен быть в формате JSON). Создадим его:
sudo -i
touch /etc/shadowsocks.conf
nano /etc/shadowsocks.conf
Примерное содержимое этого файла (бездумно копировать нельзя!):
{
    "server":"your_server_ip",
    "server_port":8388,
    "local_port":1080,
    "password":"your_password",
    "timeout":600,
    "method":"aes-256-cfb"
}

Запуск сервиса через утилиту screen

Для того, чтобы прокси-сервер продолжал работать при выходе из SSH-сессии, запустим его через утилиту screen. Если это слово вам не знакомо — не беда, это просто, в одной из своих прошлых статей я уже затрагивал основы работы со screen. Запустите новую сессию screen, а затем и прокси-сервер:
ss-server -c /etc/shadowsocks.conf
В ответ получим что-то подобное:
INFO: initialize cihpers... aes-256-cfb
INFO: server listening at port 8388.
Это означает, что прокси-сервер работает и ждёт гостей на 8388 порту. Самое время взяться за настройку клиента на смартфоне.

Настройка Android-приложения Shadowsocks

Приложение можно найти в Google Play, но если вы, как и я, не пользуетесь сервисами Google на смартфоне — скачайте ночную сборку по ссылке с официального сайта.

В приложении нас встретит довольно аскетичный интерфейс, я не сразу заметил, что при свайпе с левого края экрана вправо доступно меню: Здесь можно создавать отдельные профили для разных серверов или вариантов использования, очистить DNS кэш. Настройка профиля заключается в указании IP адреса и портов сервера, пароля и алгоритма шифрования. Эти данные должны совпадать с теми, что содержатся в конфигурационном файле на сервере. Приложение также содержит и дополнительные настройки, знать которые очень полезно. В частности, по умолчанию запущенный Shadowsocks гонит весь траффик через прокси, но если убрать галочку Global Proxy, то становится доступным список индивидуальных предпочтений под каждое приложение. Список Individual Proxy работает в двух режимах: при выключенном переключателе Bypass через прокси ходят в интернет только те приложения, что отмечены галочками. Это неудобно, если необходимо пустить в обход прокси только одно или два приложения. В таком случае стоит переключиться в режим Bypass и отметить галочкой теперь уже те программы, которые Shadowsocks должен игнорировать. Например, это может быть AndFTP, который соединяется по SSH или FTP c тем же самым сервером, на котором установлен прокси.

Если отмечены опции Traffic Stats и Auto Connect, то приложение Shadowsocks будет выводить информацию о потреблении траффика в области уведомлений и подключаться автоматически при запуске. Опции полезные, я включил после некоторого знакомства с программой.

Для проверки работоспобности тыкаем переключатель в заголовке окна в положение ON и открываем любой браузер (здесь нужно уточнить, что он не должен находиться в списке приложений, которые игнорирует Shadowsocks) и заходим на любой сайт, который предоставляет информацию об IP. Например, ip2location.com — этот покажет ещё и местоположение. Всё, теперь я в Амстердаме :)

Обсуждение

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