Что, нынче, модно использовать для обхода блокировок?

tl;dr

sslh на 443 порту в связке с shadowsocks, ssh и, опционально, openvpn или, по-быстрому, ssh -D 8080 -N vps_in_friendly_counrty и ходить через socks-прокси, появившийся на 8080 порту.

Предыстория

Третьего дня, случились интересные события в Беларуси. Пришлось срочно реанимировать существующую инфраструктуру, изыскивать новые пути доступа к всемирной паутине и подтягивать мат.часть по ныне модным и работоспособным проксям, обфускаторам и прочим VPN-оподобным штуковинам.

Что помогло на первых порах?

Самое простое - ssh в виде socks-прокси. Берётся любая машина за пределами РБ, прокидывается тунель, делается socks-прокси командой ssh -D 8080 -N vps_in_friendly_counrty и весь трафик заворачивается в полученную проксю на 8080 порте средствами системы. В маке это пара кликов, в винде чуть сложнее, но тоже недолго.

Многим помог Tachyon VPN, но лично меня смущает проприетарность сего ПО и потребность запускать какой-то неизвестный бинарник на VPS-ке. Плюс, слишком он красивый... не бывает красивых, надёжных и долговечных штук. Где-то должен быть подвох... Скорее всего, он будет в ближайшем будущем.

Так же некоторым помог Х-VPN. Но это 12 баксов в месяц и никакого развлечения с технической стороной вопроса.

И ещё немногим помог VPN, идущий в комплекте с Opera. Скорость там очень скромная, но работало. Хотя, лично у меня, он так и не взлетел в период блокировок. Есть мнение, что разные провайдеры блокировали трафик по-разному.

Какие есть более долгосрочные решения?

Для начала, есть способы обхода блокировок и DPI бессерверными методами. То есть хидер подправить, имя параметра "карданом" написать и тд. Сам не пробовал, но очень любопытно было бы протестировать в условиях действиющего ограничения доступа в сеть.

Далее по списку. Во-первых, VPN. Старый-добрый OpenVPN. Если он отвалился, то переводим его в режим TCP и вешаем на 443 порт. Если и так заблокировали, то заворачиваем его в тунель. Для этого можно взять stunnel, который зашифрует всё входящее в него и прикинется TLS-ом. Либо взять obfs-proxy, который последователь Tor проекта и который превращает любой трафик в очень рандомную последовательность битиков.

Альтернативные VPNы - это старый монстрический L2PT+IPsec (IKEv2) и более современный легковесный, быстрый, стильный, модный-молодёжный WireGuard. В настройке несложен, быстр и уже почти добрался до объединения с ядром Linux. Всем нравится, но лично я не тыкал, подожду пару лет пока настоится и хайп уляжется, а там уж видно будет :)

Отдельно стоит упомянуть tinc. Это афигенский VPN. Там настоящий self-routing и mesh networking, то есть полноценный P2P, где все ноды равноправны и трафик автоматом ищет пути обхода нод, которые недоступны. Очень юзабельная штука для серверов и геймеров. Советую изучить отдельно.

Далее по списку, более современная приблуда ShadowSocks. Сделан коллегами по цеху из Китая, чтобы обходить тот самый великий фаервол. До недавнего времени вполне себе успешно справлялся с задачей, но в прошлом году таки начали блочить. Однако, ходят слухи, что блочат в полуручном режиме. Вот тут много текста с деталями.

Так вот, ShadowSocks - это сразу 3 в одном: локальный socks-прокси, шифртор-обфускатор трафика и VPN. То есть он может работать как в режиме прокси, так и в режиме VPN. И это всё из коробки. Плюс, конфиг у него в 5 строк и он одинаков для клиента и сервера. В общем, бери и настраивай. Мало того, для ShadowSocks есть клиенты под любую табуретку, а серверная часть написана сразу на нескольких языках на выбор. Прямо мечта админа и домохозяйки, что в пределах одно приложения встречается крайне редко.

А чтобы всё это разнообразие проще было вонзать в существующую VPS-ку, где 443 порт давно занят апаче-nginx'ом, нужно посмотреть на sslh. Это такой DPI наоборот. Работает как мультиплексор. То есть сидит на любом порту (естественно, полезнее всего на 443) и раскидывает входящие пакетики по разным локальным портам. То есть из одного 443 порта можно получить до 8 (восьми). В частности, умеет определять SSH, HTTP, OpenVPN, tinc, SSL, TLS и XMPP, а оставшуюся "некондицию" направлять в заранее указанное место. Минус - это потребление ЦПУ. Сортировать пакетики - это муторное занятие и на каждую сотню-другую мегабит в секунду понадобится цельное ядро.

Таким образом, можно вполне себе неплохо развернуть на какой-либо паробаксовой VPS ассорти из вышеозначенных загогулин и сделать так, чтобы они были доступны и по своему родному порту (22, 1194 etc), и на 443 порту одновременно.

А если таких паробаксовых VPS окажется несколько в разных странах, то вполне можно между ними сеть забацать из tinc и поковыряться с роутингом, чтобы иметь почти неубиваемый доступ во внешний мир.

compute networks Блокировки VPN Internet Proxy

comments powered by Disqus