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

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

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

Давно слышал про данную технологию, но попробовать дошли руки только после того, как Влад Гороховский написал статью [Как сделать свой VPN, который нельзя заблокировать](http://telegra.ph/CHto-delat-kogda-zablokiruyut-VPN-04-23). В ней он описывал, как можно поднять свой сервер и настроить клиенты с использованием Outline, разработки [Jigsaw](https://getoutline.org/en/home).

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

Информация по установке серверной части размещается на странице [Servers](https://www.shadowsocks.org/en/download/servers.html) и по сути для Debian все сводится к установке и настройке:

```shell
sudo apt update
sudo apt install shadowsocks-libev
```

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

```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".

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

```shell
$ sudo systemctl restart shadowsocks-libev
```

И на это собственно все. Можно переходить к клиентской части. Возможные клиенты описаны на официальной странице [Clients](https://www.shadowsocks.org/en/download/clients.html).

Для MacOS рекомендую обратить внимание на приложение [ShadowsocksX-NG](https://github.com/shadowsocks/ShadowsocksX-NG/releases). Удобная программа, с помощью которой можно организовывать подключения к серверам, и которая настраивает адресацию трафика на прокси согласно определенным правилам. Есть так же возможность настраивать правила для блокировки рекламы. Самое интересное заключается в том, что с помощью этой программы можно генерировать QR-коды с настройками подключения для передачи их на мобильные устройства.

Вот как раз к мобильным и перейдем. Для организации подключения к своему серверу с iPhone я использовал [ShadowRocket](https://itunes.apple.com/ru/app/shadowrocket/id932747118?mt=8). Очень удобная программа, которая позволяет настраивать onDemand подключения с вашим Proxy-сервером.

