Полезное по обходилкам :yes2:
I. OpenVPN - стандарт, который "у всех на устах"; технология туннелирования, которая всем известна и широко распространена. Эту технологию довольно часто используют хостинг-провайдеры, предлагающие за плату подключение к своим VPN-серверам (NordVPN, Express VPN и т п.). Исходный код открыт, проходил независимый аудит; при аутентификации клиентов с использованием ключей/сертификатов, трафик невозможно перехватить третьим лицом. Для организации тоннеля использует tun/tap-интерфейс, которому присваивается внутренний IP локальной сети тоннеля, назначаемый в конфигурационном файле сервера. Может туннелировать как tcp, так и udp-трафик.
Основные плюсы:
1. Кроссплатформенный, клиенты есть под все современные операционные системы (ОС).
2. При использовании более-менее современных роутеров с высокой
долей вероятности клиент/сервер OpenVPN уже имеется в веб-интерфейсе роутера - не нужно ничего настраивать через консоль и ударяться в познание linux.
3. Легко можно настроить точечный обход блокировок (пропускать трафик через тоннель только для сайтов, находящихся в бане у вас в стране, а для остальных сайтов - пускать трафик напрямую, минуя VPN) как на клиентах, так и на сервере.
4. При затруднении в обходе блокировок (касается большей части стран, заканчивающихся на -стан) tcp-трафик OpenVPN можно легко обфусцировать (запутать и замаскировать для обхода DPI провайдера), к примеру, через использование программы stunnel совместно с OpenVPN.
Основные минусы:
1. Т.к. исходный код занимает больше сотни тысяч строк - довольно тяжел и некоторые части кода, отвечающие за определённые функции, очень медленно работают.
2. Итоговая скорость канала при "завороте" всего трафика в тоннель, особенно на маломощных роутерах/модемах, процессор которых не поддерживает аппаратное шифрование AES, довольно низкая - т.к. OpenVPN работает в пользовательском пространстве (а не в пространстве ядра операционной системы), для обеспечения высокой скорости нужно мощное устройство. Пример - на роутере Huawei B525 (с возможностью засовывания в оный сим-карты) с одним ядром Cortex-A17 с максимальной тактовой частотой 666 МГц и 128 Мб оперативной памяти скорость при "завороте" всего трафика в тоннель VPN составляет максимум 10 Мбит/с при исходной скорости канала ОПСОСа 50-65 Мбит/с и такую низкую скорость не поднять никакими тонкими настройками.
3. Довольно тяжёлая и не совсем понятная настройка при использовании ключей/сертификатов, особенно для новичков, которые захотели арендовать свой сервер VDS для обхода блокировок.
II. wireguard - VPN нового поколения, довольно молодой проект от действующего мантейнера дистрибутива gentoo linux. Легенда гласит, что этот VPN был создан для просмотра видеоконтента с американских серверов Netflix в странах, где такая возможность заблокирована (путем "подмены" внешнего IP на американский). Заявляется высокая скорость работы (вплоть до полной ширины канала) и высокая стойкость шифрования данных современным шифром chacha20 (с криптовставкой poly1305), который работает быстро даже на утюге, маломощный процессор которого не поддерживает аппаратное шифрование AES. Отсутствует понятие клиента и сервера - вместо них применяется понятие "пир" и все пиры (как клиенты, так и сервер) равноправны между собой (далее, для упрощения, будем считать, что серверный пир - это сервер wireguard, клиентские пиры - клиенты wireguard). Для организации тоннеля использует свою реализацию тоннельного интерфейса. Может туннелировать только udp-трафик.
Основные плюсы:
1. Изначально создавался под linux, однако в настоящее время есть клиенты под все современные ОС. В последних релизах linux-дистрибутивов код wireguard встроен прямо в ядро ОС - видимо, не ровен час, нативно появится в ОС Android будущих версий и будет работать без стороннего приложения (как сейчас работает IPSec).
2. Очень быстр в модульной реализации ядра linux (исходный код содержит несколько тысяч строк кода) - скорость канала довольно высокая. Опять же, приведу пример - на роутере Huawei B525 при исходной скорости канала в 50-65 Мбит/с с лёгкостью выдаёт 40-50 Мбит/с.
3. Прост в настройке (по сравнению с генерацией ключей/сертификатов OpenVPN) - аутентификация клиента на сервере происходит путем взаимообмена публичными ключами, (пара "публичный ключ" - "приватный ключ" генерируется утилитой wg) и на основании такого взаимообмена вычисляются приватные ключи.
4. Легко настраивается точечный обход блокировок (до заблокированных в стране сайтов), однако, учитывая высокую скорость работы, обычно этого не требуется - весь трафик клиентов "заворачивается" в тоннель wireguard.
5. Для мобильных клиентов (смартфоны, планшеты) можно быстро сгенерировать qr-код с настройками клиента wireguard, (чтобы не вводить вручную ключи и данные, необходимые для коннекта к серверу) и, далее, - считать его камерой мобильного устройства - очень удобно.
Основные минусы:
1. В реализации, написанной на языке google go (а не в виде модуля ядра) скорость заметно ниже, а загрузка процессора намного выше - если на мощных многопроцессорных андроид-смартфонах с большим количеством памяти или мощных роутерах это не так заметно, то на маломощных устройствах скорость падает в разы - на Huawei B525 . udp-трафик witeguard'да невозможно обфусцировать в принципе (единственное, чего можно добиться - это сделать его похожим на udp-трафик shadowsocks, который запущен в режиме тоннеля), поэтому он довольно легко вычисляется более-менее современными DPI ОПСОСов и успешно блокируется.
III. Ну и наконец, наш пациент - Shadowsocks-прокси (сокращенно - ss). Этот вид прокси был создан в Китае для обхода блокировок (борьбы с великим китайским Firewall'ом). Начало истории - жил-был в Китае один хороший человек, который решил запилить прокси, да не простой, а заковыристый, да блокировки обходящий ну и запилил, да так успешно, что такой способ обхода приобрёл огромную популярность (и не только в Китае). Однажды ему в дверь постучали китайские товарищи майоры, после разговоров по душам с которыми за чашкой утреннего чая, хороший человек резонно решил свернуть разработку ss кому же захочется вкушать тюремную баланду лет эдак 10-15, да еще и в китайской тюрячке, но, т.к. исходный код был выложен на github'e, за дело взялось мировое сообщество. С тех пор проект развился, появились реализации ss на многих языках программирования, а также появилось много ответвлений от ss, созданных на основе его исходного кода и дополнительных плагинов к ss, предназначенных для обфускации tcp-трафика (самый известный плагин - v2ray, писанный кстати теми же китайцами). Вот и сказочке конец, а кто слушал молодец.
Ну а далее - разрушение мифов про ss-прокси, т.к. это не VPN в полном понимании данной технологии и он не умеет:
- пробрасывать порты с сервера на ваше клиентское устройство ss;
- создавать интерфейс тоннеля для обмена данными с сервером;
- идентифицировать клиента по ключам/сертификатам;
- получать удаленный доступ к вашему устройству (к примеру, роутеру) и устройствам вашей локальной сети (актуально для всех ОПСОСов с их "серыми" IP-адресами).
Основные плюсы:
1. Кроссплатформенный - клиенты (и сервер), написанные на разных языках программирования, есть под все современные ОС.
2. Настройка что сервера, что клиента - проще некуда, конфиг занимает несколько строк в формате .json. Для мобильных клиентов в официальном приложении нужно заполнить 4-5 строк.
3. Быстрый - скорость канала примерно такая же, как и при использовании wireguard (все данные шифруются - поддерживаются все современные реализации шифров AEAD как для маломощных устройств, так и для устройств, поддерживающих аппаратное шифрование).
4. Для подключения используется один и тот же порт для всех клиентов (можно "развести" клиентов по разным портам с разными паролями на каждом порту) с одним и тем же паролем - ключи/сертификаты не нужны вообще. Для простоты настройки это плюс, для надежности аутентификации клиентов на сервере - минус.
5. Как и в случае с wireguard - для быстрой настройки мобильных клиентов (смартфоны, планшеты) можно сгенерировать qr-код с настройками клиента ss.
6. Правилами iptables с linux-клиентов довольно просто "завернуть" весь tcp-трафик на порт локального прокси клиента или, в случае доступа на заблокированные сайты, - только трафик до заблокированных подсетей.
7. Высокая стойкость к определению трафика системами DPI провайдеров - если tcp-трафик "голого" ss ещё может быть распознан и заблокирован (зашейплен), то замаскированный плагином v2ray под обычный https "пробивает" любые блокировки.
Основные минусы:
1. Исходный код ss не проходил официальный аудит - документация написана в основном китайцами, на китайском; в ней много несостыковок и взаимоисключающих параграфов.
2. Дополнительные пляски с бубном при настройке проксирования всего udp-трафика linux-клиентов на порт локального прокси.
3. Плагин v2ray для обфускации tcp-трафика доступен не для всех платформ - под некоторые архитектуры arm (в основном - роутеры) нужно заниматься мазохизмом кросс-компилированием бинарного файла из исходного кода плагина. Авторская статья подготовленна- mister_hat
Прикрепленные изображения