Альтернатива VPN

11 May 2018

В последнее время особо обострилась ситуация с безопасностью работы в глобальной сети. Число доступных точек подключений растет с каждым днем, но кто контролирует эти точки подключения и как используется проходящий через них трафик, сказать не может никто. Именно поэтому для работы в незнакомых сетях, а иногда и в обычных, нужно использовать VPN.

Минусом VPN является то, что данный трафик можно однозначно идентифицировать. И есть масса возможностей для блокировки VPN-подключения. Как вариант обхода данной проблемы можно использовать ShadowSocks.

Давно слышал про данную технологию, но попробовать дошли руки только после того, как Влад Гороховский написал статью Как сделать свой VPN, который нельзя заблокировать. В ней он описывал, как можно поднять свой сервер и настроить клиенты с использованием Outline, разработки Jigsaw.

Все было хорошо, но нормально работать Outline у меня не захотел. Менеджер при удалении сервера и создания нового подсовывал постоянно одну и ту же ссылку для подключения, что успел сгенерировать в самом начале. И лечилось это только перезапуском менеджера и новой генерации сервера. Мобильный клиент показывал наличие подключения, но на самом деле подключение отсутствовало, приходилось вручную сбрасывать подключение и подключаться вновь. То есть проблем еще довольно много с этим Outline. Но протокол же разрабатывался не ими. И есть масса других способов для организации подключения через ShadowSocks.

Информация по установке серверной части размещается на странице Servers и по сути для Debian все сводится к установке и настройке:

sudo apt update
sudo apt install shadowsocks-libev

Для настройки меняется файл /etc/shadowsocks-libev/config.json в котором задаются порты подключения, пароль и тип шифрования:

{
    "server":"127.0.01",
    "server_port":8268,
    "local_port":1080,
    "password":"password!",
    "timeout":60,
    "method":"aes-128-cfb"
}

Параметр server нужно изменить на ip-адрес сервера, при необходимости изменить порты подключения и пароль, а в методе задать один из типов шифрования. Рекомендуемыми являются “chacha20-ietf-poly1305” или “aes-256-gcm”.

После внесения изменений перезапускаем сервис:

$ sudo systemctl restart shadowsocks-libev

И на это собственно все. Можно переходить к клиентской части. Возможные клиенты описаны на официальной странице Clients.

Для MacOS рекомендую обратить внимание на приложение ShadowsocksX-NG. Удобная программа, с помощью которой можно организовывать подключения к серверам, и которая настраивает адресацию трафика на прокси согласно определенным правилам. Есть так же возможность настраивать правила для блокировки рекламы. Самое интересное заключается в том, что с помощью этой программы можно генерировать QR-коды с настройками подключения для передачи их на мобильные устройства.

Вот как раз к мобильным и перейдем. Для организации подключения к своему серверу с iPhone я использовал ShadowRocket. Очень удобная программа, которая позволяет настраивать onDemand подключения с вашим Proxy-сервером.