Тут недавно проскочила новость, что со следущего месяца Роскомнадзор запрещает писать про VPN и технологии обходов блокировок. Я лично на запреты Роскомнадзора клал <вырезано цензурой>, но Хабр, видимо, будет вынужден ограничить доступ к подобным статьям из РФ, поэтому давайте от души поразвлекаемся в последнюю неделю пока можно. А потом я уйду на покой и наконец-то буду писать статьи про C++.
Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но нам нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.
Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но. Некоторое время назад, во время известных событий в Дагестане, РКН пытался заблокировать Telegram в некоторых регионах. Telegram-прокси для DPI выглядят совсем недетектируемо - как набор рандомных байт без каких-то сигнатур. И знаете что сделал РКН? Они просто заблокировали все неопознанные протоколы, работащие поверх TCP. HTTP работает, HTTPS работает, SMTP работает, IMAP работает, а все что "неизвестное и ни на что не похожее" - нет. И таким образом у людей еще перестал работать Shadowsocks, который тоже выглядит как набор рандомных байт и не детектируется. Были ещё, например, сообщения о том, что перестали работать подключения к Radmin (протокол которого DPI, видимо, тоже не знает). И есть неиллюзорная вероятность, что когда начнут резать все неопознанное по TCP, народ массово перепрыгнет на UDP, и РКН в любой момент может начать резать все "неопознанное" и с UDP тоже. И AWG такую блокировку уже не переживет.
Поэтому надо искать что-то, что не только скрывает трафик, но и умеет маскироваться под что-нибудь безобидное. На Хабре уже не раз упоминали про Cloak, в который можно спрятать OpenVPN, замаскировав его под какой-нибудь популярный веб-сайт, такой вариант тоже поддерживается в клиенте Amnezia, но они сами пишут, что скорость работы у такой связки не очень.
Классическими VPN-протоколами, которые внешне неотличимы от обычного HTTP являются SoftEther, MS SSTP и AnyConnect/OpenConnect. В своей первой статье "Интернет-цензура и обход блокировок: не время расслабляться" я обращал внимание на то, что все они на тот момент были уязвимы к детектированию методом active probing, что позволяло их элементарно заблокировать. Однако с недавних пор в новые версии сервера OpenConnect завезли защиту от такого, и теперь им вполне можно пользоваться.
Изначально протокол появился под названием AnyConnect, и его создателем была всем известная компания Cisco. OpenConnect же - полностью опесорсная реализация клиента и сервера для этого протокола, полностью совместимая с ним.
Чем же хорош OpenConnect по сравнению с альтернативами?
В отличие от OpenVPN, IPSec и WG он внешне выглядит как самое обычное HTTPS-подключение.
В отличие от SoftEther VPN, для него существуют клиенты под все популярные платформы: Windows, Linux, macOS, Android, iOS, да и не одни (об этом мы поговорим чуть позже). Ну и есть защита от active probing.
В сравнении с MS SSTP у него более производительная серверная часть под Linux, а еще, когда блокировок трафика не осущевляется, он может в дополнение к HTTPS TLS-подключению поднимать DTLS поверх UDP для еще более лучшей производительности (Softether тоже умеет добавлять UDP, но у них свой выглядящий "неизвестным" протокол, а здесь же популярный и всем известный DTLS, который, например, используется в WebRTC). Ну и есть защита от active probing.
OpenConnect очень легко настраивается на клиентах - не нужно кучи параметров и конфигов, требуется только URL (адрес сервера), имя пользователя и пароль.
Плюс OpenConnect пришел из энтерпрайз-мира, и в нем есть всякие энтепрайзный штучки, например, LDAP- и Radius- и ActiveDirectory-авторизация пользователей.
Установка и настройка
Опенсорсный сервер OpenConnect называется OCserv и живет по адресу https://gitlab.com/openconnect/ocserv. Кроме того, его можно найти в репозиториях почти всех популярных Linux-дистрибутивов. Изменения в версиях можно посмотреть в чейнджлоге, отмечу самое важное для нас:
в версии 1.2.0 добавили режим "camouflage" для защиты от active probing;
в версии 1.2.1 добавили поддержку клиента OneConnect (об этом чуть позже);
в версии 1.2.3 (она еще официально не зарезилизась!) поправили баг, который мешал подключению некоторых клиентов от Cisco при включенной маскировке (по факту мобильные версии работают нормально и с 1.2.2, а вот десктопная с включенной маскировкой подключаться отказывается).
Поэтому смотрите, что из этого вам надо и проверяйте, какая версия в репах вашего дистрибутива. Если она там сильно старая, то всегда можно собрать вручную, инструкция по сборке есть в README в git-репе и там нет ничего особо сложного.
Если вы хотите ставить сервер через Docker-образ, то там все не очень. Из тех существующих контейнеров что я видел, самый приличный это https://github.com/aminvakil/docker-ocserv/tree/master - он на базе последней релизной версии 1.2.2, и если ему подсунуть сертификаты по правильному пути, то он будет использовать их вместо самоподписанных. Но у него в конфиге по-прежнему не хватает опций, связанных с camouflage (и возможности их настроить переменными при разворачивании контейнера), и еще было бы неплохо сразу интегрировать letsencrypt. Если кто-то хочет заняться - автор довольно дружелюбный и открыт к pull request'ам.
Во второй части статьи я приведу пример разворачивания через Docker.
Для тех, кто собирает ручками, systemd-файл в Debian для OCserv выглядит вот так
[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
[Service]
PrivateTmp=true
PIDFile=/run/ocserv.pid
Type=simple
ExecStart=/usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Разработкой и поддержкой кода занимаются товарищи из компании Redhat.
Официальный сайт проекта - https://ocserv.gitlab.io/www/
Так же на официальном сайте есть очень интересный раздел "How-to", где можно подчерпнуть всякую полезную всячину: https://ocserv.gitlab.io/www/recipes.html - там, например, есть примеры по настройке TOTP, интеграции с Prometheus, и т.д., короче говоря, там очень много интересного.
Также имейте в виду, что OpenConnect, как и другие подобные VPN, работает поверх HTTPS. То есть да, вам будет нужен домен и TLS-сертификат. Домен может быть любым, хоть DynDNS (см. статью про прокси, там есть соображения и советы на этот счет), а сертификаты для него можно сгенерировать бесплатно с LetsEncrypt и Certbot - инструкций об этом в интернете очень много.
По умолчанию конфиги сервера лежат в /etc/ocserv, а именно:
ocserv.conf - основной конфиг;
ocpasswd - файл со списком пользователей для подключения к VPN-серверу;
Возможно также создать директорию "config-per-user" и кидать в нее файлы, соответствующие имени пользователя из ocpasswd, чтобы переопределять какие-либо параметры конфигурации для конкретного юзера (например, если нужно постоянно выдавать какому-нибудь юзеру определенный IP-адрес).
Добавляются новые пользователи в "ocpasswd" очень просто, с комплекте с OCserv идет утилита с таким же названием "ocpasswd", то есть перейдя в /etc/ocserv и запустив ocpasswd, передав ей в качестве аргумента имя пользователя, которое вы хотите добавить в список, она спросит у вас пароль для него и добавит новый аккаунт куда надо. Естественно, никто не запрещает открывать этот файл в текстовом редакторе и удалять оттуда строки, которые уже не нужны.
А теперь пройдемся по основным конфигурационным параметра с ocserv.conf. Сам этот файл и в гитлаб-репе (под названием sample в папке docs), и при установке пакетов из репозиториев, очень хорошо и подробно документирован комментариями. Я здесь выделю лишь самые важные и прокомментирую от себя:
# Директива заставляет сервер слушать только на определенном IP-адресе,
# а не на всех интерфейсах сразу
# listen-host = [IP|HOSTNAME]
# То же самое, но для UDP. Если закомментировано,
# то будет использовать значение из предыдущего параметра
udp-listen-host = localhost
# Номер порта для входящих подключений.
# По умолчанию 443, и должен быть таким, чтобы быть похожим на HTTPS
tcp-port = 443
# То же самое для UDP. Если закомментировано, то UDP использоваться не будет.
# udp-port = 443
# Пользователь и группа под которыми будут работать воркеры (рабочие процессы)
# сервера
run-as-user = ocserv
run-as-group = ocserv
# TLS-сертификат вашего сервера. Нужно подсунуть сюда пути для сертификатов
# для вашего домена - можете сгененировать их с помощью Letsencrypt/Certbot.
server-cert = /etc/letsencrypt/live/yourdomain.com/fullchain.pem
server-key = /etc/letsencrypt/live/yourdomain.com/privkey.pem
# Можно выводить веселое сообщение для всех подключающихся клиентов.
# Но лучше не надо. Бесит.
# banner = "Hello Habr"
# Если у сервер у вас стоит за чем-то типа HAProxy, то эта опция может пригодится
# listen-proxy-proto = false
# Можно ограничить количество одновременно подключенных клиентов
max-clients = 32
# И одновременно подключенных одинаковых клиентов (с одинаковым логином), 0 - безлимитно
max-same-clients = 0
# ваш домен
default-domain = hellohabr.com
# диапазон IP-адресов, которые вы будете выдавать подключенным клиентам
ipv4-network = 192.168.0.1
ipv4-netmask = 255.255.255.0
# можно также задать в альтернативной форме
#ipv4-network = 192.168.1.0/24
# То же самое для IPv6, если он вам нужен
ipv6-network = fec0::c0ca:c01a:cafe::0/48
# не совсем понял что это, но должно быть true
tunnel-all-dns = true
# DNS-сервер, которые будут использовать ваши клиенты.
# Их можем быть несколько
dns = 1.1.1.1
dns = 8.8.8.8
# маршруты, которые будут переданы клиентам: какие диапазоны IP
# нужно будет отправлять через VPN
# route = 10.10.10.0/255.255.255.0
# route = 192.168.0.0/255.255.0.0
# route = fef4:db8:1000:1001::/64
# default = все
route = default
# либо можно пойти "от противного"
# no-route = 192.168.5.0/255.255.255.0
# про это я уже упоминал чуть выше, можно указать путь к дире
# с файлами для переопределения параметров конфигурации для отдельных юзеров
# config-per-user = /etc/ocserv/config-per-user/
# должно быть true если мы подключаемся клиентами от Cisco
cisco-client-compat = true
А теперь про самое интересное: про маскировку. Суть маскировки в том, что когда клиент подключается к серверу, то сервер ждет от клиента специальное "волшебное слово" в URL после знака вопроса, например, обычный URL подключения выглядит как "https://myserver.com", а с секретом - "https://myserver.com/?mysecretword". Если сервер видит в адресе секретное слово - он пропускает клиента в VPN, если не видит, то выдает сообщение об ошибке, как обычный веб-сервер. За этот функционал отвечают следущие настройки в конфиге:
# Включаем маскировку
camouflage = true
# Задаем свое секретное слово, которое клиенты должны иметь в URL'е после знака вопроса
camouflage_secret = "mysecretkey"
# А вот тут интересное. Если этот параметр не задан (закомментирован),
# то при отсутствии или несовпадении кодовоего слова сервер вернет
# ошибку HTTP 404, очень похожую на ту, что возвращает веб-сервер Apache.
# А если этот параметр _задан_, то сервер вернет ошибку HTTP 401,
# означающую "необходимо авторизоваться", как это делают многие
# веб-сервисы, админ-панели, морды разных устройств, и т.д.
# - в этом случае браузеры обычно показывают окошко с предложением
# ввести логин и пароль и текстовым сообщением,
# которое можно задать ниже, а OCserv будет "отвергать" все предложенные пароли.
# Если вы решили использовать этот вариант,
то желательно поменять это сообщение с дефолтного на какое-то свое.
camouflage_realm = "My admin panel"
Содержимое HTML-страниц, выдаваемых при 404 и 401 ошибках, к сожалению, захардкожено в исходниках, но если уж будете пересобирать сервер, то можно и поменять - оно там в виде строковых констант, и код очень простой, можете заглянуть в гит: https://gitlab.com/openconnect/ocserv/-/blob/master/src/worker-http-handlers.c?ref_type=heads#L41
Из еще прикольных штук - в конфиге можно задать скрипт, который будет запускаться когда к серверу каждый раз подключился/отключился клиент (в скрипт через переменные окружения передаются имя пользователя, его внешний и внутренний IP-адрес, версия клиента, и т.д.), и вписав в скрипт какой-нибудь telegram-send, можно получать сообщения в телеграм-бот о том, кто из пользователей подключился или отключился :)
Еще есть утилитка occtl (для ее работы надо разрешить соответствующую опцию в конфиге), которая умеет показывать текущее состояние сервера и управлять им (например, кикать подключенных пользователей). Данные она выдает как в простом текстовом виде, так и в JSON, поэтому при желании можно вывести статистику сервера (количество подключенных пользователей, объем данных за сессию, и т.д.) в систему мониторинга.
Ну и классический пункт при настройке всевозможных VPN'ов - сделать так, чтобы юзеры могли выходить через VPN в интернет. С помощью iptables (можно засунуть эти команды в /etc/rc.local) это можно сделать, например, так (проверьте, какой диапазон IP для клиентов вы задали в конфиге):
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens3 -j SNAT --to-source <ваш внешний IPv4>
ну либо использовать MASQUERADE (инструкций в интернете тоже полным-полно).
И не забудьте включить forwarding:
# в /etc/sysctl.conf (и потом сделать sysctl -p)
net.ipv4.ip_forward = 1
Если вам нужен IPv6, то тут все чуть сложнее - конечно, если у вас есть сразу /64 или даже /48 подсеть IPv6, то хочется выдавать клиентам сразу белые IPv6 адреса... Но тут встает проблема того, что практически у всех хостеров IPv6-подсети для VPS "не-routed" - то есть не будет такого, чтобы все пакеты на все адреса вашей подсетки оборудование хостера слало на порт вашего сервера. Там все гораздо замудреннее и основано на сложной ICMP-логике, для подобного часто советуют использовать radvd или что-то подобное, но короче говоря, у меня ни один из вариантов не заработал. Поэтому для простоты можно раздать клиентам фейковые локальные IPv6 и точно так же заNAT'ить на один внешний IPv6, да простят меня сетевые боги за такое кощунство:
ip6tables -t nat -A POSTROUTING -s fec0::c0ca:c01a:cafe::0/127 -o ens3 -j SNAT --to-source <your_ipv6>
Всё. В принципе, настройка завершена, и после запуска демона сервера он должен начать принимать подключения.
Использовать ли UDP?
Решать вам. С одной стороны, он в теории должен ускорять работу. С другой стороны, UDP бегающие вместе с висящим TCP-подключением на тот же сервер может показаться подозрительным для цензоров, когда запахнет жареным. У меня без UDP (с чистым TCP) и
настроенным в системе BBR
в/etc/sysctl.conf, не забудьте потом сделать "sysctl -p"
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
между клиентом в Европе и OpenConnect-сервером в России без проблем бегало 150 мегабит/сек (возможно было бы и больше, все уперлось в тариф домашнего интернета).
Если надо хостить на том же сервере сайт
То используйте SNI-прокси. Сайт будет отзываться на одном домене (поддомене), а VPN-сервер на другом. В качестве SNI-прокси может работать Nginx с модулем ssl_preread (я об этом рассказывал в статьях про проксирование через CDN) или HAProxy - инструкций в интернете по запросу "sni proxy" более чем достаточно.
На 443 порту на публичном адресе в таком случае будет слушать Nginx или HAProxy, а OCserv должен будет слушать на localhost'е на каком-нибудь другом порту - это для TCP, а UDP (если вы его используете) должен по-прежнему быть на публичном адресе. И если вы используете UDP, то очень полезным будет настроить в конфиге OCserv опцию "listen-proxy-proto" в "true", и активировать "Proxy Protocol" в Nginx/HAProxy - тогда они будут сообщать OCserv'у реальные внешние IP-адреса подключающихся клиентов, и OCserv сможет заматчить их с соответствующими UDP-пакетами.
См. также: https://ocserv.gitlab.io/www/recipes-ocserv-multihost.html
Установка через Docker
# Получаем сертификат от LetsEncrypt
sudo certbot certonly --standalone --preferred-challenges http -d example.com
# Скачиваем образ Docker
docker pull quay.io/aminvakil/ocserv
# Создаем и запускаем контейнер
# Обратите внимание на пути к сертификатам вашего домена
docker run --name ocserv --sysctl net.ipv4.ip_forward=1 --cap-add NET_ADMIN --security-opt no-new-privileges -p 443:443 -p 443:443/udp -v /etc/letsencrypt/live/example.com/privkey.pem:/etc/ocserv/certs/server-key.pem -v /etc/letsencrypt/live/example.com/cert.pem:/etc/ocserv/certs/server-cert.pem -d quay.io/aminvakil/ocserv
# Включаем камуфляж и меняем секретное слово
docker exec ocserv sed -i '/^camouflage = /{s/false/true/}' /etc/ocserv/ocserv.conf
docker exec ocserv sed -i '/^camouflage_secret = /{s/mysecretkey/yournewecretkey/}' /etc/ocserv/ocserv.conf
# Добавляем юзера для подключения
docker exec -ti ocserv ocpasswd -c /etc/ocserv/ocpasswd yourusername
# Удаляем дефолтного юзера test
docker exec -ti ocserv ocpasswd -c /etc/ocserv/ocpasswd -d test
# Перезапускаем контейнер
docker restart ocserv
Клиенты и их настройка
OpenConnect и OpenConnect-GUI
Начнем с родного клиента. OpenConnect - опенсорнсный клиент для OpenConnect/AnyConnect (совместим и с тем, и с тем). Можно использовать его напрямую из консольки (читайте manpages), также его использует, например, OpenConnect-плагин для NetworkManager в разных дистрибутивах Linux.
Поведение клиента при подключении к серверу задаётся скриптом (по умолчанию это /etc/vpnc/vpnc-script, можно указать другой), и там можно творить все что угодно, поэтому если вас интересуют всякие сложные настройки маршрутов и split-tunnel, то см. https://www.infradead.org/openconnect/vpnc-script.html и https://github.com/dlenski/vpn-slice
OpenConnect-GUI - графический клиент на той же базе. Написан на Qt, работает под Windows, Linux и macOS. Скачать можно из реп вашего дистрибутива, или с гитлаба разработчиков: https://gitlab.com/openconnect/openconnect-gui/-/releases, но имейте в виду, что последний билд там был 5 лет назад. Он, в принципе, работает, но есть небольшие багушки. Более свежие версии можно скачать тут: https://drive.google.com/drive/folders/1KdzHlYODE-QSYL-JSQoM5vubEw55hhRi, где выкладываются более свежие snapshot'ы.
Не пугайтесь непонятной ссылки на Google Drive, это билды делает один из разработчиков.
Интерфейс выглядит вот так:
Клиент простой, понятный, рабочий, но есть одно НО.
Помните в статье "Интернет-цензура и обход блокировок: не время расслабляться" я рассказывал про детектирование клиентов по TLS-fingerprint'ам? Так вот, клиент openconnect использует довольно редкую библиотеку GnuTLS. И это прям характерный такой признак, что в какой-то стране цензоры вроде как даже просто блочили все исходящие подключения с такими fingerprint'ами, именно чтобы заблокировать OpenConnect. Решения может быть два - можно упороться и пересобрать клиент с поддержкой OpenSSL вместо GnuTLS. Судя по документации, такое возможно, но я не пробовал. Если кто-то сделает - выложите в публичный доступ, люди вам спасибо скажут. Решение два - использовать какой-нибудь другой клиент :)
Ну и да, OpenConnect есть так же под Android, и он живет в Google Play: https://play.google.com/store/apps/details?id=com.github.digitalsoftwaresolutions.openconnect&hl=en_US и в F-Droid: https://f-droid.org/ru/packages/app.openconnect/
Интерфейс спартанский, но работает хорошо. Недостаток тот же, что и десктопной версии, правда, пересобрать будет гораздо сложнее, хотя исходники тоже доступны: https://github.com/cernekee/ics-openconnect
Есть полезная фича: AppFilter - позволяет отправлять через VPN трафик только выбранных приложений.
Клиент на базе openconnect существует так же в OpenWRT: это непосредственно пакет "openconnect", так и "luci-proto-openconnect" (веб-морда для него). Очень компактный, работает без проблем, а вот здесь есть несколько полезных штучек.
Cisco AnyConnect Client
Собственно, оригинальный клиент от Cisco - его можно использовать с опенсорсным сервером.
Десктопную версию на сайте Cisco для незарегистрированных клиентов скачать нельзя, но ее можно найти в интернете:
Выглядит тоже очень просто:
Интересная особенность - в клиенте от Cisco невозможно сохранить пароль подключения к серверу, он будет спрашивать его каждый раз. Но если вы используете camouflage-режим с секретным словом, то пароли для пользователей можно ставить очень простые, чтобы не было проблем с запоминанием и вводом.
Существует так же версия для Android под названием Cisco Secure Client: https://play.google.com/store/apps/details?id=com.cisco.anyconnect.vpn.android.avf&hl=en
и под iOS под тем же названием:
https://apps.apple.com/us/app/cisco-secure-client/id1135064690
скриншот
Работает в целом нормально.
Одно но - в багтрекере в гитлабе OCserv люди жаловались, что были проблемы при подключении к OCserv с активированным camouflage с использованием клиентов Cisco. Когда я пробовал и пользовался клиентами по ссылкам выше, у меня все работало, но может в новых версиях что-то сломали, или я какой-то сказочный рукожоп-наоборот (у которого работает то, что не работает у других). Если у вас не заработает - в мастер-бранче репы гитлаба есть версия 1.2.3 с фиксом.
OneConnect
Клиент от компании Clavister - они делают какие-то свои корпоративные решения, используя протокол, аналогичный AnyConnect/OpenConnect. Начиная с версии 1.2.1 OCServ может принимать подключения от OneConnect.
Правда, он со странностями. Версия на Android не подключается к серверу с валидным сертификатом LetsEncrypt, ругаясь на невалидный сертификат. Версия для iOS подключается к тому же серверу без проблем, но только при выключенном camouflage (с включенным camouflage не работает - не может распарсить URL).
Сайт разработчика: https://www.clavister.com/products/oneconnect/
Скачать с MS Store: https://apps.microsoft.com/detail/clavister-oneconnect/9P2L1BWS7BB6?hl=en-US&gl=US
Скачать на Android: https://play.google.com/store/apps/details?id=com.clavister.oneconnect&hl=en_US
Скачать для macOS и iOS: https://apps.apple.com/us/app/clavister-oneconnect/id1565970099
Интерфейс красивый. Реализация клиента протокола, как я понял, у них своя.
Еще интересная фишка, как и во всяких китайский прокси, можно добавлять реквизиты сервера на мобильные устройства с помощью прямых ссылок и QR-кода.
Прямые ссылки генерируются типа
oneconnect://configuration?desc=Hello%20Habr&server=myserver.com&port=443
и, видимо, если ее перевести в QR-код, то она отсканируется (я не проверял, это только догадка).
Сразу говорю, я этот клиент не тестировал, и как он будет работать с включенным camouflage я не знаю. Кто проверит - напишите, получилось или нет.
Если не получилось, можем попробовать потестировать вместе и отправить багрепорт разработчикам.
P.S. Если есть желание сказать автору спасибо за все его труды и бессонные ночи — то:
BTC bc1ql2yecwzqtpp5xsmk08tzvyx98rqxf4qs848k54
ETH 0x8563494bd4732D7D7BF202521E7103Ea52d51cE5
USDT (TRC20) TRCUfmKJzn4XRBmEbRc5k87j78vLZKWg2U
Важно: автор не присутствует в Telegram или каких-либо иных месседжерах или соцсетях, не оказывает никаких платных консультаций и не выполняет никаких работ за деньги, а на вопросы отвечает только на хабре (когда есть время). Остерегайтесь мошенников.
Комментарии (159)
grumbler70
25.11.2023 09:50+5Огромное спасибо за шикарно поданный и реально полезный материал!
Подскажите, что нужно по ресурсам для VPS, сколько памяти / ядер требуется чтобы организовать шлюз с целью попадать из-за границы на огородившиеся от внешнего мира ресурсы в РФ типа ЖКХ/личных кабинетов?
maikuss
25.11.2023 09:50+2Если для себя, берите самый дёшевый. А, если в РФ осталась своя квартира или родственников, создавайте сервис ВПН прямо на своем домашнем роутере.
MiraclePtr Автор
25.11.2023 09:50+7У меня на дохлом дешевом сервере с 1 ядром и 512 мегабайтами памяти почти год крутился сразу и публичный Tor-бридж (на одном IP) и OpenConnect сервер для друзей (на другом IP). VPN пользовались 2-3 человека. Проблем не было вообще никаких.
потребление ресурсов
Короче говоря, если вы не будете подключать к серверу сразу полсотни пользователей активно смотрящих ютуб в 4K, то хватит даже самого простого дешевого VPS.
Dolios
25.11.2023 09:50+3Сервисы в РФ (мосэнергосбыт, например) начали блочить non residential ip. Так что, VPS в датацентре может не помочь.
MiraclePtr Автор
25.11.2023 09:50+4Я специально для того купил маленький TP-Link WR802N, прошил его OpenWRT, настроил Xray в режиме reverse-прокси и отправил почтой маме в Россию, чтобы она подключила его к своему провайдерскому роутеру - работает как часы. Подключение происходит через промежуточный VPS в дата-центре.
avelor
25.11.2023 09:50Пилотил решение как замену циске (на всякий случай), на 200+ человек 8гб/8ядер чувствовали себя вольготно
Kenya-West
25.11.2023 09:50Классическими VPN-протоколами, которые внешне неотличимы от обычного HTTP являются SoftEther, MS SSTP и AnyConnect/OpenConnect
А всякие XRay, XTLS-reality, VLESS/VMESS, SS-2022, упоминавшиеся в ваших предыдущих статьях, вы уже перестали рассматривать? Или это неклассические протоколы, поэтому они не упомянуты? Или доверия уже к ним нет после ковровых чисток от братских китайских слабовиков?
cadmi
25.11.2023 09:50+7Об этом буквально написано прямо в статье, почему эта конкретная статья НЕ про них.
> Я уже написал здесь много статей на тему прокси‑протоколов и прокси‑клиентов, которые очень сложно детектировать и заблокировать <...> Но довольно часто мне в комментариях писали, мол, это все отлично, но нам нужен именно VPN для целей именно VPN — доступа в частные локальные сети, либо для соединения клиентов между собой.
MiraclePtr Автор
25.11.2023 09:50+1Неклассические, да. Ну, я вроде во вступлении это обозначил - данный обзор посвящен именно VPN-протоколам, а не прокси (к которым относятся XRay и подобные).
Xambey97
25.11.2023 09:50Скажите, а всякие xray'и и прочее еще безопасно использовать в целом? А тут на хабре недавно писали, что огромное кол-во инструментов снесли, а потом внезапно они вернулись, не редко с обнулеными релизами, там точно никто коды не патчил часом от представителей силовых структур? Кто-нибудь это дело мониторил, не знаете? Спасибо
MiraclePtr Автор
25.11.2023 09:50Конкретно с XRay и Sing-box таких инцидентов не было.
Постарадали в основном Clash-based-инструменты.
grishkaa
25.11.2023 09:50VPN — в том смысле, что они именно пересылают IP-пакеты как есть?
Просто вот у меня уже давно есть идея для такого "VPN", который бы работал за проксирующим HTTP(S)-сервером, и принимал бы соединения через вебсокеты. При этом, чтобы не пускать TCP через TCP, слой с TCP/IP вообще выкидывается и по сети не передаётся. Клиент говорит серверу "хочу соединиться с 1.2.3.4 порт 443", сервер соединяется, говорит клиенту "соединение успешно", клиент отдаёт в ОС "правильный" SYN/ACK пакет. После этого идёт обмен данными. Это, видимо, прокси по этой классификации, потому что TCP-соединения к серверу назначения открывает сам VPN-сервер, хоть и по команде клиента, а не клиент через VPN-сервер?
MiraclePtr Автор
25.11.2023 09:50VPN — в том смысле, что они именно пересылают IP-пакеты как есть?
Да
Просто вот у меня уже давно есть идея для такого "VPN", который бы работал за проксирующим HTTP(S)-сервером, и принимал бы соединения через вебсокеты. При этом, чтобы не пускать TCP через TCP, слой с TCP/IP вообще выкидывается и по сети не передаётся.
Это, видимо, прокси по этой классификации, потому что TCP-соединения к серверу назначения открывает сам VPN-сервер, хоть и по команде клиента, а не клиент через VPN-сервер?
Да.
Таких инструментов (в том числе работающих через вебсокеты за веб-сервером) уже есть много разных, см. мои предыдущие статьи, например эту.
quakin
25.11.2023 09:50+4Интересно как в OpenConnect обстоят дела с защитой от детектирования TLS-in-TLS?
MiraclePtr Автор
25.11.2023 09:50+21Увы, никак.
Такой защиты нет вообще нигде, кроме китайских прокси с XTLS-Vision.
Но я надеюсь наш родной РКН (горите в аду, сволочи) до такого дорастет еще очень не скоро.
anzay911
25.11.2023 09:50Здорово, надо потестировать. А существует что-то на потоковых протоколах типа RTMP, RTSP, HLS?
MiraclePtr Автор
25.11.2023 09:50+1mKCP (он поддерживается в XRay как транспорт для VLESS) может маскироваться под SRTP и подобные: https://xtls.github.io/en/config/transports/mkcp.html#headerobject
Но там от них для маскировки, судя по всему, только заголовки пакетов.
John_Go
25.11.2023 09:50+9В нынешние времена не понятно, то ли ссылку сохранять на такую статью, то ли скачивать ее файлом)
iliasam
25.11.2023 09:50+21Скачивать - всегда надежнее.
leonP4
25.11.2023 09:50Однозначно качать, и не просто файлом, а целиком с ресурсами, чтобы картинки не терялись. Последние года уже и веб-архив перестал помогать, не все в нем есть.
Dolios
25.11.2023 09:50Печать страницы в pdf мне нравится. Там и картинки и ссылки все нормально сохранятся. Только надо сначала включить консоль разработчика и поудалать панели справа. Версию для печати теперь делать не модно...
Armitage1986
25.11.2023 09:50При печати в PDF, бывает, обрезаются длинные строки кода (которые на странице в блоке с горизонтальной прокруткой). Приходился играться с масштабом, с ориентацией страницы, с упрощенным видом и т.п.
А в остальном соглашусь, удобней всего для сохранения одним файлом, который гарантированно откроется везде.
xforce
25.11.2023 09:50+4Есть плагин SingleFile, фактически внутрь одного HTML интегрирует все возможные ресурсы, в том числе борется с некоторыми динамически подгружаемыми ресурсами, которых иначе может быть не видно при сохранении.
Armitage1986
25.11.2023 09:50Я его пробовал, но мне не очень нравится, что SingleFile пихает всю веб-страницу целиком (вместе с менюшками, баннерами, оформлением и прочей шелухой), тогда как печать в ПДФ сохраняет в большинстве случаев именно контент и ничего больше.
entze
25.11.2023 09:50+1Если на странице есть пример кода с прокруткой по горизонтали, то PDF просто обрежет то что не помещается во View.
Если страницы для сохранения типовые (например Хабр) то можно UBlock'ом удалить все ненужное и потом сохранять + включить ZIPоавание контента.
isden
25.11.2023 09:50+5У меня уже давно развернут archivebox на локальной машине. Все интересное сразу уходит туда, ибо уже было не раз что интересная статья просто пропадает через пару месяцев.
BugM
25.11.2023 09:50+1Все уже изобретено. https://web.archive.org/web/20230000000000*/https://habr.com/ru/articles/776256/
И ее там до меня уже 6 раз сохранили.
CTheo
25.11.2023 09:50Архив тоже может удалить, по крайней мере помню какой-то сайт попадался, где все старые странички перебрасывали на текущую главную страницу где уже ничего нет. Про комментарии тоже есть сомнения, если они подгружаются динамически.
Stanner
25.11.2023 09:50Обязательно скачивать, я для сохранения в одном файле использую SingleFile, мне понравился.
Stanner
25.11.2023 09:50Потерялась ссылка: https://github.com/gildas-lormeau/SingleFile
Отличное расширение
aborouhin
25.11.2023 09:50+3Вот за это огромное спасибо, удивительно, как я в самостоятельных поисках такого "слона" не приметил... про AnyConnect знал, но что в него завезли защиту от детектирования - первый раз услышал. Будем изучать, а то OpenVPN + Cloak для настройки на клиентских устройствах и правда ужас.
На первый взгляд смущает, что LDAP в OpenConnect только через Radius, а по собственному опыту - эта связка с разными механизмами шифрования паролей способна генерить совершенно крышесносящие глюки :) Но надо пробовать. 2FA в формате "сертификат + логин/пароль" есть, это хорошо. Ещё бы 3FA, добавив к этому TOTP-код... и ручное одобрение новых устройств. Но тут надо смотреть на реализацию, может и получится. В общем, спасибо ещё раз, есть с чем покопаться в ближайшие дни!
MiraclePtr Автор
25.11.2023 09:50+1Возможно что-то из этого окажется полезным:
https://ocserv.gitlab.io/www/recipes-ocserv-2fa.html
https://ocserv.gitlab.io/www/recipes.htmlaborouhin
25.11.2023 09:50Спасибо, а то я только ман проглядел пока по диагонали, а тут для TOTP уже готовый рецепт как минимум. И ещё и prometheus exporter, оказывается, есть - ну прям совсем волшебно.
avelor
25.11.2023 09:50+2Не только, можно через pam:) но лично я делал радиус, но не простой, а прикрученный к лдапу через privacyidea - офигенское решение для mfa
Basil155
25.11.2023 09:50В Win11, вроде бы, есть плагин для OpenConnect, добавляет его поддержку прям в виндовый интерфейс VPN, но я так и не смог подключиться им к Cisco. Кто-нибудь пробовал?
RaymanOne
25.11.2023 09:50Немного не в тему, но понравилась по удобству такая штука. В пару кликов настроил сервера и внутри РФ и снаружи. https://en.wikipedia.org/wiki/Outline_VPN
MiraclePtr Автор
25.11.2023 09:50Оно основано на Shadowsocks (причем первой версии) со всеми его достоинствами и недостатками.
RaymanOne
25.11.2023 09:50А есть что порекомендовать подобное, где все делается через UI морду как настройка сервера так и клиента? С конфигами не хочется возиться при наличии таковых вариантов.
MiraclePtr Автор
25.11.2023 09:50+1Простых вариантов нет.
Из того, что самое user-friendly то вот.
Kenya-West
25.11.2023 09:50+2Удваиваю. Всё на нём ровно работает уже 4-й месяц, почти со дня, как вышла эта статья. Всё сделал по ней (разве что вместо 3X-UI выбрал более неблагозвучный, но зато обновляемый X-UI).
aborouhin
25.11.2023 09:50"Через UI-морду" - это Вам SSTP через SoftEther настраивать надо. Серверная часть обладает совершенно монструозным UI настройки (и на мой взгляд, это ужас, т.к. часами кликать мышкой в десятке окошек куда дольше и сложнее, чем поправить один конфиг - но на вкус и цвет...) Клиентской части как таковой отдельно нет, т.к. SSTP в основном везде встроен в ОС и настраивается штатными средствами оной.
Протокол пока, вроде, не блокировался, уязвимость к active probing есть для штатной реализации в Windows Server, а есть ли она в SoftEther - мне неведомо, но так или иначе, вроде active probing в нашей практике пока не замечен.
Скорость печальная, но для простых пользовательских задач, возможно, достаточная.
nitro80
25.11.2023 09:50Я разворачивал sstp на vps, скорость интернета совсем не понравилась.
Что-то около 1-2 Мбит была.
aborouhin
25.11.2023 09:50+1Я тоже пробовал, скорость была около 20 Мбит/с (при скорости обычного Wireguard между теми же серверами в среднем 600 Мбит/с), так что да, тоже не понравилось, поэтому и написал, что печальная скорость... Amnezia-WG почти не снижает скорость, Cloak с WG внутри снижает процентов на 20-30, что уже приемлемо.... Но это при условии отсутствия ограничений со стороны железа (с обеих сторон достаточно мощные физические сервера).
Aleho
25.11.2023 09:50обещают заблокировать протокол
https://habr.com/ru/news/773986/RaymanOne
25.11.2023 09:50Отпишусь если заблокируют. Думаю внутрь РФ то пускать должны в любом случае, а вот для родственников что-то придется новое искать...
MiraclePtr Автор
25.11.2023 09:50+1Там в комментариях уже отписались, что Outline переставал работать на юге РФ во время дагестанских событий.
anzay911
25.11.2023 09:50Возможно еще есть какие-нибудь docker-образы где все уже собрано за вас - не знаю, я не проверял, если кто-нибудь проверит и найдет хороший docker-образ, напишите в комментарии, я закреплю, чтобы другим тоже пригодилось.
Больше всего звёзд у https://hub.docker.com/r/tommylau/ocserv Хотя, наверное, это старая версия без защиты от DPI.
MiraclePtr Автор
25.11.2023 09:50+1Updated 5 years ago
Не понятно, клонит ли и собирает оно текущий HEAD из master-ветки, или какую-нибудь версию пятилетней давности.
Плюс там по умолчанию заскриптовано на генерацию самоподписанного сертификата, а это не совсем то, что нужно делать в нынешних условиях. Как подсунуть свой правильный - не понятно (не, ну ясно что можно подмонтировать volume со своим конфигом и всем остальным, но хотелось бы проще, без этого).
uhf
25.11.2023 09:50+2Увы, не клонит и не собирает, там версия 0.12.1 внутри. Но репа на гитхабе лежит, ничто не мешает собрать образ поновее.
Скрипт при старте проверяет наличие /etc/ocserv/certs/server-key.pem и /etc/ocserv/certs/server-cert.pem, если их нет - то тогда генерирует самоподписанный сертификат. Т.е. достаточно подмонтировать эти два файла.
13werwolf13
25.11.2023 09:50интересно, но:
для него существуют клиенты под все популярные платформы:
почему этот аспект почти всегда выносят как важный, если гораздо удобнее не настраивать vpn на всех устройствах дома включая телевизоры и всякие игровые приставки (которые и так то сделаны криво) а настроить его только в одном месте - на роутере. имхо в плане клиентов важно только есть ли они под openwrt и routeros (самые популярные варианты для домашних роутеров, так как в офисном окружении дядечки админы настроят что угодно и где угодно).
ну и второй момент - настройка маршрутов. в случае wireguard мне не приходится заморачиваться, я получаю список заблокированных IP по BGP в bird и bird заворачивает их в тоннель, но некоторые извращённые VPN клиенты почему-то упорно пытаются завернуть в тоннель весь чесной 0.0.0.0/0 что скорее вредительство. судя по статье маршруты прописываются исключительно с серверной стороны и пушатся на клиенты (что уже не идеально ибо для разных клиентов может быть разный список маршрутов, да и динамически их менять не особо получится).
MiraclePtr Автор
25.11.2023 09:50+4а настроить его только в одном месте - на роутере
Слабо помогает при пользовании мобильными устройствами не-дома через сеть сотового оператора или публичный/офисный вайфай.
для разных клиентов может быть разный список маршрутов
Эту опцию (маршруты) можно переопределить в config-per-user для каждого клиента при необходимости
судя по статье маршруты прописываются исключительно с серверной стороны и пушатся на клиенты
в стандартном случае да, но по факту поведение клиента при подключении к серверу задаётся скриптом (по умолчанию это /etc/vpnc/vpnc-script, можно указать другой), и там можно творить все что угодно, см. https://www.infradead.org/openconnect/vpnc-script.html и https://github.com/dlenski/vpn-slice
aborouhin
25.11.2023 09:50+1если гораздо удобнее не настраивать vpn на всех устройствах дома включая телевизоры и всякие игровые приставки (которые и так то сделаны криво) а настроить его только в одном месте - на роутере
VPN нужен и за пределами дома/офиса.
Безопасность доступа к домашней/офисной WiFi-сети гораздо ниже, чем к VPN (даже у WPA-Enterprise есть фатальные недостатки, про остальное молчу), так что если безопасность ресурсов, доступных через VPN, важна, иногда лучше даже в локальной сети подключаться к ним через VPN с SSO, 2FA и пр.
Даже для крошечной организации настраивать и поддерживать корпоративный VPN на домашних роутерах всех сотрудников - нереально вообще.
На некоторых роутерах не особо что настроишь.
routeros
И вот тут как раз печаль, ибо штатно из плюс-минус устойчивого к блокировкам только тормозной SSTP, а контейнеры поддерживаются не на всех роутерах (только ARM), не всё в них запускается (cloak не работает, скажем) и тормозят (по CPU, при этом задать лимит CPU для контейнера нельзя, т.е. активное использование запущенного в контейнере VPN/прокси клиента подвешивает весь роутер).
13werwolf13
25.11.2023 09:50Даже для крошечной организации настраивать и поддерживать корпоративный VPN на домашних роутерах всех сотрудников - нереально вообще.
но ведь речь в статье не про корпоративный сегмент а именно про обход блокировок. корпоратиный сегмент может продолжить использовать wg/ovpn/etc для своих юзверей
да, конечно есть шанс что и они попадут под блоку, но тогда следует не протокол менять а в прокуратуру писать, это немножко за рамками темы этой статьи.ибо штатно из плюс-минус устойчивого к блокировкам только тормозной SSTP, а контейнеры поддерживаются не на всех роутерах (только ARM), не всё в них запускается (cloak не работает, скажем) и тормозят (по CPU, при этом задать лимит CPU для контейнера нельзя, т.е. активное использование запущенного в контейнере VPN/прокси клиента подвешивает весь роутер).
вот по этому мой выбор - x86 роутер, там хоть openwrt хоть opnsence хоть что-то самодельное, простор для выбора а не прибивание гвоздями к проприетарной кривульке.
VPN нужен и за пределами дома/офиса.
Безопасность доступа к домашней/офисной WiFi-сети гораздо ниже, чем к VPN (даже у WPA-Enterprise есть фатальные недостатки, про остальное молчу), так что если безопасность ресурсов, доступных через VPN, важна, иногда лучше даже в локальной сети подключаться к ним через VPN с SSO, 2FA и пр.
наверное я просто смотрю на всё со своей колокольни, для меня vpn для обхода блокировок и vpn для безопасности вне дома это два разных vpn
я терминирую все свои устройства за пределами квартиры на роутер в квартире, а с него уже другой vpn ухожу зарубеж
так и латенси поменьше между устройствами, и меньше шансов находясь в чужой сети упереться в региональную блоку..aborouhin
25.11.2023 09:50+1Для обхода блокировок ув. автор в своих предыдущих постах предложил много решений, этот пост именно для тех, у кого задачи шире. Будь то кораоративный сегмент или доступ к своей домашней сетке извне.
К сожалению, мы дожили до такой стадии, что даже VPN, по которому бухгалтер Марья Ивановна из дома ходит на сервер 1С, стоящий в офисе под столом, должен быть устойчив к блокировкам. Про "писать в прокуратуру" - хорошая шутка, ага.
я терминирую все свои устройства за пределами квартиры на роутер в квартире, а с него уже другой vpn ухожу зарубеж
Так вот правильно, у меня почти так же (для мобильных пользователей VPN на российский сервер, с него каналы за рубеж). И VPN для мобильных пользователей и VPN между серверами/роутерами - это два разных решения со своими требованиями к каждому. Для первого как раз и нужно наличие удобных клиентов под все платформы.
alexEtse
25.11.2023 09:50+1да, конечно есть шанс что и они попадут под блоку,
Уже не раз попадали, да, именно внутри страны.
А жаловаться властям на них же самих - ну, такое...
13werwolf13
25.11.2023 09:50-3А жаловаться властям на них же самих - ну, такое...
ну вот из-за того что все ссут эти "власти" и борзеют..
Dewey
25.11.2023 09:50+1Именно жаловаться -- действительно бесполезно. Необходимо всеми способами поощрять разработку ПО для обхода блокировок, не удивляясь при этом, что разработчики могут сохранять инкогнито (ещё раз напоминаю про историю TrueCrypt). Не скупитесь на материальную поддержку, свобода бесценна.
MiraclePtr Автор
25.11.2023 09:50+1От того что вы пожалуетесь им самим на них же, борзеть меньше они не станут.
13werwolf13
25.11.2023 09:50от того что пожаловался Я действительно ничего не поменялось, а вот если бы все недовольные пожаловались, да ещё и не только как частники но и как юр лица, да и не в один орган а во все причастные..
MiraclePtr Автор
25.11.2023 09:50В России такое уже много лет как не работает от слова вообще. Государство всегда защищает своих цепных псов, особенно когда дело касается исполнения приказов, отданных сверху.
denis-isaev
25.11.2023 09:50я получаю список заблокированных IP по BGP в bird и bird заворачивает их в тоннель
А есть у вас какой-нибудь гайд по этому делу?
13werwolf13
25.11.2023 09:50да в общем-то я тут на хабре находил
себе в заметки тоже сохранил: https://itrus.su/itrus.su--linux_t&t--OpenWRT--RKN_ip_block_list_routes_to_vpn_by_BGP_332.htmlvesper
25.11.2023 09:50Спасибо!
А не списка рос.сайтов, которые блокируют доступ с иностранных ip? Очень много в последнее время таких стало, приходится вручную добавлять роутинги через рос. ВПН для иностранных юзеров.13werwolf13
25.11.2023 09:50где-то натыкался, но сейчас не нашёл.. видимо это не сильно популярная услуга.
aborouhin
25.11.2023 09:50Я для этой задачи беру просто все российские сайты из базы GeoIP, беспроигрышный вариант. Наверное, есть в природе и российские сайты, которые сами на иностранных IP, но блокируют доступ с нероссийских... но мне такая экзотика пока не попадалась. Попадётся - ну появится новое community на моём BGP-сервере и новое правило для его клиентов.
Dolios
25.11.2023 09:50+1почему этот аспект почти всегда выносят как важный, если гораздо удобнее не настраивать vpn на всех устройствах дома включая телевизоры и всякие игровые приставки (которые и так то сделаны криво) а настроить его только в одном месте - на роутере.
Потому что телефоны и ноутбуки ходят в интернет также через сотовую сеть и публичный вайфай.
Также, потому что доступ надо давать родственникам из Урюпинска, к которым ехать проблематично и у которых кривой роутер от ростелекома без нормального доступа на него.13werwolf13
25.11.2023 09:50-3что-ж вы так родственников не любите что нормально им роутер не сделаете?
да отвечал я о поводу публичных вай-вай сетей в этом треде. .
Dolios
25.11.2023 09:50+2Вам не приходило в голову, что многих в целом устраивает ситуация, когда всё работает, а в случае проблем поддержку осуществляет поставщик интернета? Допустим, я приехал за несколько тысяч км, поставил свой роутер и уехал, что будут делать люди, когда что-то перестанет работать? Поставщик услуги скажет: "вот кто вам роутер ставил, к тому и идите", - и будет прав. И где им в условном Урюпинске искать специалиста с нужными навыками и сколько это будет стоить? Меня жизнь научила, что не стоит насильно облагодетельствовать окружающих, т.к. потом это может обернуться проблемами и испорченными отношениями. Я уже не пионер с горящими глазами, повидал всякое.
Не надо за всех решать вот такое:
имхо в плане клиентов важно только есть ли они под openwrt и routeros (самые популярные варианты для домашних роутеров
Тем более, что самая популярная ос та, которая стоит в роутере. Даже у меня, например, стоит кинетик с его родной ОС, которая меня полностью устраивает и все эти пляски и приседания с openwrt даже мне вообще никуда не упёрлись, у меня есть дела поинтереснее. А уж неспециалистам так и подавно. openwrt это удел энтузиастов.
К тому же, заворачивать весь трафик через VPN бывает чревато. Если кто-то качает торренты, то привет вам прилетит довольно быстро, мне прилетало.
13werwolf13
25.11.2023 09:50Вам не приходило в голову, что многих в целом устраивает ситуация
то что кто-то считает что у него всё хорошо не значит что у него всё хорошо, да, навязывать плохо, но предложить - хорошо. я не раз был в ситуации когда подговаривал кого либо попробовать нечто новое и потом было за уши не оттащить
а в случае проблем поддержку осуществляет поставщик интернета
осуществляет что простите? попросить перезагрузить роутер это не поддержка, а служба поддержки увидев в письме трейсы в ужасе и панике начинает листать скрипты в поисках подходящего и не находит..
все эти пляски и приседания с openwrt даже мне вообще никуда не упёрлись
не понял о каких плясках речь
К тому же, заворачивать весь трафик через VPN бывает чревато. Если кто-то качает торренты, то привет вам прилетит довольно быстро, мне прилетало.
1) об этом я и говорю, нельзя заворачивать весь трафик в тоннель
2) и нет дело не в торрентах, проблему торрентов решает абузоустойчивый хостингDolios
25.11.2023 09:50+3то что кто-то считает что у него всё хорошо не значит что у него всё хорошо
Нет, у него всё хорошо.
я не раз был в ситуации когда подговаривал кого либо попробовать нечто новое и потом было за уши не оттащить
Когда вы подговариваете кого-то на подобное, вы либо берёте на себя ответственность, либо сразу объясняете, какие могут быть проблемы в будущем и как человек может встрять. И что решать эти проблемы он будет самостоятельно. Я не готов брать на себя такую ответственность во многих ситуациях, особенно, когда человек находится фиг знает где, но готов сказать ему, какую программу на телефон поставить и какой там логин/пароль ввести, чтобы инстаграмм заработал. В подавляющем большинстве случаев человеку более ничего не надо.
осуществляет что простите?
Поддержку. Приходит специально обученный челорвек и решает проблему. В 99% случаев бесплатно, т.к. никто кроме сотрудников поставщика услуги в роутер не залезает. У обычных людей так дела обстоят, представляете? Это если делать по-моему, если по-вашему, то это геморрой и деньги.
попросить перезагрузить роутер это не поддержка
Всё равно ничего не работает. Зачем вы навязали свой роутер, у нас всё было хорошо, что нам теперь делать и кто будет за это платить? Сделайте что-нибудь срочно, я в этом ничего не понимаю!
не понял о каких плясках речь
С кастомными прошивками. Сейчас в багтрекере openwrt 2000+ открытих тикетов и 4000+ закрытых. Конечно же, никаких проблем и плясок с бубном не бывает никогда, ага.
13werwolf13
25.11.2023 09:50-1чтобы инстаграмм заработал
вы точно не любите своих родственников..
Приходит специально обученный челорвек
примерно через месяц ссор с поддержкой через чатботов и email ага
У обычных людей так дела обстоят
как хорошо живётся в мире фантазий..
если по-вашему, то это геморрой и деньги.
лол, вы ещё и лучше меня знаете как живётся "по моему"? так вы всевидящий, простите не знал
С кастомными прошивками. Сейчас в багтрекере openwrt 2000+ открытих тикетов и 4000+ закрытых. Конечно же, никаких проблем и плясок с бубном не бывает никогда, ага.
что же вам мешает преобрести девайс с предустановленной owrt? да и с чего вы взяли что в трекере кинетика ситуация лучше? он ведь не доступен простым смертным как и у большинства проприетарщиков в первую очередь потому что показывать стыдно.
ладно, я закрываю этот тред, живите в мире фантазий где в провайдерах проффессионалы по какой-то волшебной причине остаются работать в поддержке, где обязательны пляски и где настраивать впн на сотне устройств проще чем на одном.. вам и там:
Нет, у него всё хорошо.
MiraclePtr Автор
25.11.2023 09:50+2вы точно не любите своих родственников..
А что не так? Соцсети - это всего лишь инструмент коммуникации и получения информации. А с кем именно коммуницировать и какую информацию там получать, каждый уже выбирает сам.
примерно через месяц ссор с поддержкой через чатботов и email ага
Если у вас это так, то сочувствую, срочно меняйте провайдера. У прова, которым пользуются мои родители, позвать "мастер" домой можно прям на следущий день безо всяких телефонных квестов. Роутеры настраивать эти мастера прекрасно умеют. А еще они могут чистить систему от гадостей, подключать разную периферию, настраивать мобильные устройства, накатывать обновления, и т.д. И знаете что? Все это для абонентов бесплатно. И оно реально так работает.
как хорошо живётся в мире фантазий..
Это не фантазии, это как раз реальная жизнь. Если у вас ситуация другая, то вам просто очень не повезло, но это не значит, что у других так же.
и где настраивать впн на сотне устройств проще чем на одном
Ну вообще-то да, странно, что вы не понимаете очевидной вещи: все зависит от того, что это за устройтства, и кто настраивает.
Скачать по ссылке приложение, запустить его, скопипастить строку подключения и нажать огромную зеленую кнопку "Подключиться" сможет даже ребенок или очень далекий от всей этой техники пенсионер (действительно сможет, проверяли). Скачать приложение по ссылке из Google Play, отсканировать камерой QR-код и нажать огромную кнопку "подключиться" - тоже сможет без проблем.
А вот пердолиться с пакетами и скриптами для установки клиента на роутер у пенсионера уже наврядли получится, для этого нужно что-бы рядом был кто-нибудь, кто в этом хорошо разбирается. А если что-то сломается (РКН забанит очередной протокол, или сдохнет сам роутер, или еще что), то придется все настраивать заново. И такого "помогающего" человека рядом уже может и не быть. А потом еще пенсионер поедет на дачу, захочет там почитать свои любимые иноагентские новости, и сделать он это сможет только с телефона, домашний роутер с настроенным VPN ему тут никак не поможет.
13werwolf13
25.11.2023 09:50А вот пердолиться с пакетами и скриптами для установки клиента на роутер у пенсионера уже наврядли получится
а зачем ему это делать?
Скачать по ссылке приложение, запустить его, скопипастить строку подключения и нажать огромную зеленую кнопку "Подключиться" сможет даже ребенок или очень далекий от всей этой техники пенсионер (действительно сможет, проверяли). Скачать приложение по ссылке из Google Play, отсканировать камерой QR-код и нажать огромную кнопку "подключиться" - тоже сможет без проблем.
сделайте это на телевизоре, на playstation, на какой нибудь умной колонке.. удачи.
MiraclePtr Автор
25.11.2023 09:50а зачем ему это делать?
В смысле, зачем? Вы сами выше утверждали, что ставить клиенты для обхода блокировок на сами устройства - это неправильно, а их надо ставить на роутер. Вот мы и рассматриваем предложенный вами вариант.
сделайте это на телевизоре, на playstation, на какой нибудь умной колонке.. удачи
Страшно далеки вы от народа. Большинству пенсионеров (и не только пенсионеров, а вообще простых людей) это нахрен не надо - у них нет ни плоек, ни умных колонок, а телевизор (да и колонка если есть) от блокировок не страдает, ютуб-то еще не забанили.
Просто два устройства - десктоп и телефон, а то даже и только что-то одно.
Andy_U
25.11.2023 09:50Ситуации бывают разные. Мне вот хочется обезопасить возможность иногда работать из РФ на корпоративном ноутбуке без полных админ.прав, где установку "левых" программ отслеживают, а доступ во внутреннюю сеть - как раз CISCO AnyСonnect, кажется, в Швецию.
Heggi
25.11.2023 09:50Да. И не нашел клиента для этого протокола в Кинетике, что весьма печально.
13werwolf13
25.11.2023 09:50-2я конечно предпочитаю держаться подальше от проприетарных прошивок сомнительного качества, но насколько знаю на кинетики ставятся пакетики от openwrt, да и help говорит что есть
Heggi
25.11.2023 09:50+3Ну вот про сомнительное качество это вы очень зря. Имею в эксплуатации чертову дюжину разных моделей кинетиков и никогда не было с ними никаких проблем. Если, конечно, не экспериментировать с бета-прошивками. Плюс есть русскоязычный форум, где разработчики отвечают на разные вопросы по функционалу и помогают решать возникающие проблемы.
Про сторонние пакеты. По openwrt не знаю, но можно ставить пакеты entware. Однако это только для устройств с USB портами, чтобы можно было подключить внешний накопитель.
P.S. и изначально я писал про OpenConnect, а не WireGuard.
MiraclePtr Автор
25.11.2023 09:50+2У вас по ссылке инструкция про ванильный Wireguard. Он в наше время блокируется роскомпозором на раз-два, они это уже делали много раз и будут делать ещё и ещё.
13werwolf13
25.11.2023 09:50-4знаете.. за всё время у меня zabbix только однажды крикнул о проблемах с vpn, и это был не роскомпозор а склероз (я забыл оплатить vps).
Heggi
25.11.2023 09:50Мой проводной провайдер тоже не играет в роскомпозоровские игры и проблем с openvpn не было никогда (кроме технических проблем с самим сервером), но не могу тоже самое сказать про мобильных операторов. Т.к. тот же самый openvpn к тому же самому серверу через мобилу иногда не работает.
MiraclePtr Автор
25.11.2023 09:50+2Заббикс крутится на какой-то домашней машине? Тогда вам, видимо, просто очень повезло, что у вашего провайдера до сих пор нет ТСПУ.
13werwolf13
25.11.2023 09:50-2таких провайдеров в россии я знаю 2, и у меня не один из них
у моего провайдера тспу есть, просто всё работает не совсем так как все расписывают
MiraclePtr Автор
25.11.2023 09:50+1Спросите у своего провайдера, почему у него не работают роскомнадзоровские блокировки как надо. Может у него какая-то редкая модель ТСПУ неполным функционалом. Может быть РКН тестирует блокировки не глобально, а по отдельным регионам, и вам пока не досталось (но в любой момент может достаться). Может еще что.
Расслабляться, кстати, не стоит - судя по всему, РКН по-тихому собирает статистику детектированных VPN-протоколов на разных адресах, чтобы потом ее использовать - есть свидетельства, что во время дагестанских событий у людей полностью пропадала связность с IP-адресами, на которых до этого крутились ванильные WG или OpenVPN, так что даже установка чего-то другого после этого уже не помогала (в принципе, не удивительно, пару лет назад РКН делал ровно то же самое с IP-адресами, на которых когда-то жили Tor-бриджи).
В любом случае, есть уже огромное количество фактов, говорящих о том, что РКН умеет и может банить Wireguard, и весьма вероятно что он будет это делать при необходимости. И говорить "фигня, все не так как расписывают, у меня все работает, значит проблем не будет" - это, извините, феерический кретинизм.
13werwolf13
25.11.2023 09:50феерический кретинизм это молча сидеть и ждать новых блокировок.
официальное заявление в нужный орган помноженное на кол-во недовольных поделило бы роскомпозор на ноль ещё лет 10 назад.
Может быть РКН тестирует блокировки не глобально, а по отдельным регионам
не "может быть" а "точно"
Спросите у своего провайдера, почему у него не работают роскомнадзоровские блокировки как надо
у него работает всё так как зовещали роскомпозоровские гомогеи, к сожалению.
если вывести себя из состояния паники то можно увидеть где и почему начинаются блокировки по протоколам а не по адресам. это происходит не везде и не рандомно.
ну а если уж прийдёт тот день когда эта проблема станет глобальной тогда и прийдётся искать альтернативу, а не заранее предлагать роскомпедикам что именно следует начать анализировать и учиться ломать.
MiraclePtr Автор
25.11.2023 09:50+1официальное заявление в нужный орган помноженное на кол-во недовольных поделило бы роскомпозор на ноль ещё лет 10 назад.
Это какие-то детские фантазии. В правовом государстве - да, но РФ к таким не относится. За блокировками стоят Минцифры и Минюст, и они не будут бороться сами с собой. А им, в свою очередь, приказы отдают свыше. Судебная система подконтрольна тем, на кого вы собрались в нее жаловаться. Проблемы бизнеса их не волнуют, бизнес они шлют нахер прямым текстом, для совсем уж "своего" крупняка разрешили белые списки, но не более.
можно увидеть где и почему начинаются блокировки по протоколам а не по адресам. это происходит не везде и не рандомно.
Нет. За исключением дагестанских событий, блокировки OpenVPN и Wireguard за последние пол года происходили именно что рандомно вообще без каких-либо закономерностей.
прийдёт тот день когда эта проблема станет глобальной тогда и прийдётся искать альтернативу
Тогда будет уже поздно.
sazhyk
25.11.2023 09:50Ну во-первых, огромное спасибо за ваши труды. Все статьи уже лежат в формате pdf.
Во-вторых, судя по комментариям, большинство читателей почему-то забыли, что статья про VPN как про VPN. А то, что блокируют в большинстве своем именно мобильные ОпСоСы - это прям в точку. Сами уже намучились. Так что пожалуй воспользуюсь вашей статьей, да буду настраивать.
Ну и в-третьих
Проблемы бизнеса их не волнуют, бизнес они шлют нахер прямым текстом, для совсем уж "своего" крупняка разрешили белые списки, но не более.
Не, нахер-то не шлют. У них вполне прямое предложение. Использовать впн решения от провайдеров, там все гарантированно работает. Или випнет. Там тоже все работает. А то, что ваш трафик шифруется сертификатами, которые есть так же у "кого надо", так это "а вам чего прятать?". Для них это дело десятое. Ну и стоимость таких решений туда же. У них вариантов много. То что они не нравятся пользователям - вот тут уже шлют нахер. Это да.
alexmac1
25.11.2023 09:50У x-ray пре-релиз вышел, написано что добавлен wireguard входящий и исходящий трафик с использованием сетевой карты ядра Linux. Что это означает мне непонятно. Не смотрели, может это помочь для маскировки wireguard?
MiraclePtr Автор
25.11.2023 09:50Это значит что они добавили поддержку протокола Wireguard с использование модуля ядра для более высокой производительности. Для маскировки это не помогает вообще никак.
scruff
25.11.2023 09:50А есть всё-так готовый скрипт или образ? К сожалению не располагаю ни временем ни техническим бэкграундом что всё это установить. Ну или хотя бы пошаговая инструкция.
MiraclePtr Автор
25.11.2023 09:50+2Это статья больше для системных администраторов, которым надо организовать доступ в корпоративные сети.
Для нубов есть Amnezia VPN, там AWG и OpenVPN-over-Cloak, настраивается все в два щелчка вообще без необходимости лезть в консоль.
scruff
25.11.2023 09:50Спасибо, только сейчас вкурил, что сервак настраивается с клиента. Очень новый для меня подход. Скармливать сторонней проге рутовые данные сервака в надежде что рут никуда не утечет налево конечно так себе надежда. В любом случае интсалю...
sdramare
25.11.2023 09:50есть докер образы, упрощающие установку до 2-3 команд, но это очевидно имеет риски в плане безопастности, так что гуглите и используйте на свой страх и риск.
MiraclePtr Автор
25.11.2023 09:50+2С этими образами проблема в том, что они почти все основаны на очень старых версий.
Есть один более-менее свежий, но там нельзя задать в конфиге настройки camouflage, а подсовывать свой конфиге через mount volume - это уже не уровенть "просто 2-3 команды".
Nyanny
25.11.2023 09:50+1Вы упомянули модифицированный Wireguard от проекта Amnezia, а затем пишете, что существует Cloack, спрятанный в OpenVPN, но такое не получится поднять на мобильный устройствах.
Но ведь у проекта Amnezia есть как раз "OpenVPN over Cloack", который работает в том числе и на мобильных устройствах.
Вы пропустили его специально, например, есть какие-то минусы или просто забыли/не знали о нем?
Можете, пожалуйста, дать комментарий, насколько и чем хорош и плох "OpenVPN over Cloack" от проекта Amnezia?
MiraclePtr Автор
25.11.2023 09:50+2который работает в том числе и на мобильных устройствах.
Работает уже, да? Просто долгое время он у них работал только в десктопном клиенте, и они жаловались, что не могли нормально реализовать его в клиенте под iOS.
Если теперь работает - то хорошо. Другой недостаток остаётся - низкая производительность такой связки, они даже сами об этом написали в статье про AWG.
И ещё один недостаток, про который все забывают - если я правильно помню, у них для маскировки через Cloak всегда и везде используется один и тот же "камуфляжный" домен. То есть если РКН внесёт этот домен в блоклист, то отвалится оно у всех, и поменять этот параметр там не так-то просто.
andToxa
25.11.2023 09:50+1для маскировки через Cloak всегда и везде используется один и тот же "камуфляжный" домен
он настраивается
MiraclePtr Автор
25.11.2023 09:50А, нашел. В старых версиях, когда я тыкал, не было, в новой версии очень глубоко запрятано в настройках. Настолько глубоко, что скорее всего большинство оставит значение по умолчанию :(
lainsbearpajamas
25.11.2023 09:50Здравствуйте!
Я полный нуб в системном администрировании, но хочу для себя разобраться с ВПНами для того, чтобы пользоваться Ютубом в случае отключения его у нас. Я прочитал все статьи у MiraclePtr, а также купил VPS с Амнезией для OpenVPN с Cloak. У вас написано, что Cloak идеально подходит для таких нубов, которые хотят решение "из коробки", но я бы хотел кое-что спросить.
Во-первых, чем Cloak в наших реалиях на практике уступает тем же XTLS-Reality с Vless и насколько существенно? То есть, понятно, что ни один протокол и прокси не выдержит ударных мер типа Mitm от Минцифры или "белых списков", но если уж РКН решит поочередно браться за протоколы, то в какой примерно очереди он, скорее всего, сможет вскрыть Cloak? Насколько дальше тот окажется от простого Wireguard и насколько уступит в очереди тому же XTLS-Reality + Vless?
Во-вторых, стоит ли вообще нубу запариваться со всеми этими консолями и прочими фишками сисадминов, чтобы установить что-то более надежное, даже если понадобится много времени разобраться во всем? Много ли это, как вы считаете, в итоге выиграет времени в борьбе "меча и щита", если получится, конечно? К сведению говоря, я уже попробовал установить Docker с 3X-UI, но не смог зайти в панель из-за незнания какого-то пароля и логина. Не получилось даже с вводом root и пароля от самого VPS. Что я мог сделать не так? Простите, если я задаю очень глупые вопросы, но я честно не понял из ваших статей эти вещи.
Да, и еще кое-что. Огромное спасибо за статьи, MiraclePtr!
MiraclePtr Автор
25.11.2023 09:50+2Самое смешное, что XTLS-Reality и Cloak как раз и были сделаны, чтобы в том числе пробираться наружу, когда работают "белые списки" :) Естественно, речь про белые списки доменов, а не IP.
В целом, в ответ на ваш вопрос, я бы сказал так: все что угодно будет лучше ванильного Wireguard, т.к. его уже умеют блокировать и блокировать когда надо. Вариант Wireguard от Amnezia - очень хорошо, но как я уже писал в статье, более суровые блокировки с белыми списками протоколом он уже может не пережить.
Cloak и XTLS-Reality основаны на очень схожих механизмах и принципах, особо большой разницы между ними нет.
Плюс XTLS-Reality в том, что он обычно работает вместе с XTLS-Vision, защищая от детектирования TLS-in-TLS. Но такое детектирование пока что нормально не осилили сделать даже китайцы, а нашему РКН до такого вообще очень далеко.
В остальном, если у вас уже есть настроенное Чтото-over-Cloak, то можно продолжать им пользоваться.Всякие китайские прокси еще умеют работать через вебсоткеты и CDN, возможно в случаях полного п...ца это может спасти. Но настройка там очень нетривиальная, даже технически подкованные люди иногда от такого плачут.
К сведению говоря, я уже попробовал установить Docker с 3X-UI, но не смог зайти в панель из-за незнания какого-то пароля и логина.
В старых версиях там были стандартные реквизиты admin/admin.
Возможно в новых версиях они что-то поменяли и сделали как в X-UI, где реквизиты для первого входа выводятся в терминал во время установки панели.lainsbearpajamas
25.11.2023 09:50Огромное спасибо за крайне ценную информацию!
Понятно. Да, я именно про белые списки IP говорил как в примере Туркменистана.
То есть, как я понял, единственные различия между Cloak и XTLS-Reality на практике в защите у второго от итак сейчас почти не используемого нигде детектирования TLS-in-TLS, а также в возможности подкрутить вебсокеты и CDN, которые мне как простому пользователю 100% ни за что не осилить. Кстати, хочу у вас как эксперта спросить, как с Cloak обстоят дела в Китае? Я пытался найти в сети информацию по его эффективности в обходе их файрвола, но не смог.
Да, у меня OpenVPN-over-Cloak с fallback'ом на сайт office.com вместо их стандартного сайта на Амнезии настроен и работает. Я неприхотлив в плане скорости интернета, а значит смысла что-то менять нет на практике.
Еще я вчера на всякий случай спросил у службы поддержки своего хостинга на счет 3X-UI и его конфигураций. Мне там ответили, что с Амнезией с Клоаком можно еще долго не париться, а вот с тем же, казалось бы, простеньким 3X-UI у меня как простого пользователя есть шанс что-то сделать не так и сломать вообще все до переустановки системы.
По поводу реквизитов все понял.
Еще раз большое спасибо!
MiraclePtr Автор
25.11.2023 09:50а также в возможности подкрутить вебсокеты и CDN
к XTLS-Reality нельзя прикрутить вебсокеты через CDN (и к XTLS-Vision тоже) - только к обычному VLESS.
Кстати, хочу у вас как эксперта спросить, как с Cloak обстоят дела в Китае?
Я не так много знаю о ситуации в Китае, кроме отчетов GFW-Report и обсуждений в репах XRay и Net4People BBS. Поэтому ситуацией с Cloak там не владею.
а вот с тем же, казалось бы, простеньким 3X-UI у меня как простого пользователя есть шанс что-то сделать не так и сломать вообще все до переустановки системы.
Если вы устанавливаете его в Docker, то сломать систему таким образом невозможно :)
lainsbearpajamas
25.11.2023 09:50Понятно. Я имел в виду их все в связке XTLS-Reality + Vision + VLESS, но знать подробности от вас все равно очень приятно :).
Понятно. Мне тоже не удалось там особо ничего найти. Я помню, что как-то читал, что 443 порт, к которому, насколько я помню, и подключается Cloak, в Китае просто блочат, а потому он и может там не работать. Хотя в Амнезии я увидел возможность смены порта в Cloak. Но так как информации по Китаю все равно нет, нет и способа это проверить на практике.
Да, в Docker. Понял. Но сейчас, думаю, как вы и сказали, смысла на практике особого париться с чем-то круче OpenVPN-over-Cloak попросту нет. На будущее буду знать.
Еще раз огромное спасибо за ответы!!! Я очень много узнал чрезвычайно полезной и ценной технической информации из ваших статей и ответов тут! Я раньше в основном химией, биологией и медициной интересовался, но в том числе по вашим статьям стал вкатываться в IT и разбираться во всем. Все ваши статьи оказались огромным подспорьем, которого нет даже близко на том же Ютубе в такой доступной форме.
MiraclePtr Автор
25.11.2023 09:50Я помню, что как-то читал, что 443 порт, к которому, насколько я помню, и подключается Cloak, в Китае просто блочат, а потому он и может там не работать
Через 443 порт в наше время работают практически все веб-сайты (HTTPS) - именно поэтому он же и используется в Cloak и в VLESS. Заблокировать 443 порт по сути дела означает заблокировать весь интернет.
OctoSinel
25.11.2023 09:50+26Никто не хочет оформить серверную часть в докер, чтобы оно запускалось по docker run без любви с конфигами? Для openvpn полно таких решений.
MiraclePtr Автор
25.11.2023 09:50Из тех существующих контейнеров что я видел, самый приличный это https://github.com/aminvakil/docker-ocserv/tree/master - он на базе последней релизной версии 1.2.2, и если ему подсунуть сертификаты по правильному пути, то он будет использовать их вместо самоподписанных. Но у него в конфиге по-прежнему не хватает опций, связанных с camouflage (и возможности их настроить переменными при разворачивании контейнера), и еще было бы неплохо сразу интегрировать letsencrypt.
Если кто-то хочет заняться - автор довольно дружелюбный и открыт к pull request'ам.
Abyss777
25.11.2023 09:50А вам удавалось настроить какой-нибудь VPN в докер с нормальной маршрутизацией?
Т.е. в режиме NAT VPN клиенты могут ходить во внутреннюю сеть предприятия или в интернет, но к клиенту подключиться невозможно из сети предприятия.
А вот если попробовать смаршрутизировать, даже отдельный интерфейс пробросить... Хост не знает о внутренней сети "за контейнером" и всё отбрасывает.
Даже в режиме -net host пакеты на каком-то уровне отбрасываются.
KanzenNiTaika
25.11.2023 09:50Что-то пробежался и так и не понял, в чём отличие этого протокола от VLESS + xtls-reality. Вроде тоже в шифруется всё TLS, тоже гоняем трафик под чужой домен. Или я слепой и в статье где-то об этом написано?
MiraclePtr Автор
25.11.2023 09:50+1Основная разница в том, что VLESS - это прокси (он оперирует "подключениями" и только в одну сторону), а этот протокол - это полноценный VPN (оперирует IP-пакетами, что позволяет подключаться клиентам друг к другу, или из удаленной сети к какому-то из клиентов, пинговать, и т.д.).
И да, OpenConnect не "гоняет трафик под чужой домен" - только под свой.
Grogcm20
25.11.2023 09:50-4Ну и те кто цензурирует этот сайт и удаляет комментарии к статьям должны быть собою довольны, сотворили т.с. "великое" швондеровское дело!
Asmodeus465
25.11.2023 09:50+1Подскажите, а если на VPS уже работает XTLS-Reality на 443 порту, как тогда настроить OpenConnect, чтобы все вместе работало на одном VPS?
MiraclePtr Автор
25.11.2023 09:50Настроить можно, но лучше не нужно. Суть XTLS-Reality в том, что он должен максимально достоверно маскироваться через чужой сервер - а поскольку на чужом сервере нет никаких левых сервисов и SNI-proxy, то и на сервере с XTLS-Reality не должно, иначе это будет подозрительно. Если уж очень хочется, то лучше купить на сервер еще один IP-адрес, на одном адресе поднять XTLS-Reality, на другом OpenConnect.
Но если сильно надо чтобы они были на одном и том же и вы знаете, что вы делаете, то можно использовать SNI-proxy, как я писал в статье - на 443 порту слушает Nginx (с ssl_preread) или HAproxy, потом на одном порту (например, 7443) на localhost'е слушает XRay, а на другом порту (например 8443) на localhost'е слушает OpenConnect.
В этом случае очень жалательно активировать proxy protocol в SNI-proxy и в OpenConnect, иначе могут быть проблемы с работой по UDP (но если вам оно не надо, то можно и не заморачиваться).
YaNeTot
25.11.2023 09:50+1В случае с Nginx можно через апстримы раскидать по SNI через ssl_preread, о чем автор в этой статье и написал. Примерно как то так, вставлять в nginx.conf перед блоком http, переменные заменить на свои. Xray c Reality заставить слушать 127.0.0.1:444, oceserver - 127.0.0.1:445. Можно еще через Haproxy, с подобной логикой. В конфиге закомментирован proxy_protocol (добавил на всякий), т.к. при его включении что xray, что ocserver придётся особо настраивать под его использование
stream { map $ssl_preread_server_name $name { $SNI_FOR_REALITY reality; $SNI_FOR_OCSERVER openconnect; default reality; } upstream reality { server 127.0.0.1:444; } upstream openconnect { server 127.0.0.1:445; } server { listen $VPS_EXTERNAL_IP:443 reuseport; proxy_pass $name; ssl_preread on; #proxy_protocol on; } }
mahmud-podzhigai
25.11.2023 09:50Вот это я удачно зашел! Попробуем.
Сегодня как раз прилетел в Китай и мой XTLS-Reality тут не работает (и через nekoray, и через foxray), хотя правила роутинга для Китая заранее настраивал. Что могло пойти не так? Сайт хостинг-провайдера не открывается, могли ранее весь его пул забанить?MiraclePtr Автор
25.11.2023 09:50+1Сайт хостинг-провайдера не открывается, могли ранее весь его пул забанить?
Могли
Alexey2005
25.11.2023 09:50А как настраивать VPS, если SSH-протокол тоже заблокируют? Если же SSH работает, то больше ничего собственно и не требуется - его вполне достаточно для проброса соединения на сервер.
MiraclePtr Автор
25.11.2023 09:50+3Если же SSH работает, то больше ничего собственно и не требуется - его вполне достаточно для проброса соединения на сервер
Было много упоминаний, что в Китае и Иране SSH в период обострений жёстко шейпят - то есть в консоли ещё кое-как работать можно, а вот серфить через него уже нет (скорость падает до диалапной).
Aelliari
25.11.2023 09:50+1Зато консоль можно использовать для настройки xtls/cloak/etc... Главное чтобы эта консоль была
Но лучше иметь заранее, а не встрять в «белые списки» когда не надо
aborouhin
25.11.2023 09:50+3А как настраивать VPS, если SSH-протокол тоже заблокируют?
Для начала через какую-нибудь noVNC консоль в личном кабинете хостера, а там уже поднять что-то незаблокированное и через него SSH.
DockerizedEvil
25.11.2023 09:50+1Как правило у хостинг провайдеров есть веб консоль в личном кабинете, где панель управления серверами. Этот момент можно заранее уточнить до оплаты.
Scorplion
25.11.2023 09:50+1Использую связку ocserv - sssd - ldap в качестве корпоративного vpn, с клиентами Cisco AnyConnect. Раздаем роуты на основе групп пользователей, все работает как часы! Блокировки ни разу не возимели эффекта) но о опции camouflage узнал только из этой статьи, автору спасибо!
karavan_750
25.11.2023 09:50+1# не совсем понял что это, но должно быть true
tunnel-all-dns = true
Судя по сорцам, этот параметр, несмотря на то, что находится в серверном конфиге, является инструкцией клиенту на строгое использование рекурсоров туннеля. Избавляет от dns leak в сеть провайдера.
MetallRaven
25.11.2023 09:50Хоть ты бейся, хоть ты плачь, но параметр camouflage не работает.
При подключении с компьютера (последний релиз с гугл диска) не видит разницы, ввожу я аргумент после ? или нет, а при подключении с телефона AnyConnect отказывается подключаться при указании аргумента. Собиралось все непосредственно с GitLab, версия 1.2.2.
То ли мои руки не так все сделали, то ли что-то конфликтует. Все три настройки указал, как в статье :)
MiraclePtr Автор
25.11.2023 09:50Я не знаю, что конкретно вы сделали не так - судя по симптомам, опция camouflage не активна, либо после ее активации вы не перезапустили сервер.
Я сейчас писал инструкцию по разворачиванию через Docker (добавил в статью) и заодно протестировал еще раз.
Результаты такие:
OpenConnect что десктопный, что Android - с camouflage работает
Cisco Secure Client на Android - с camouflage работает, десктопный - нет (видимо, надо обновиться на сервере до 1.2.3)
OneConnect - ругается на сертификат, у меня валидный от LetsEncrypt, но возможно для продуктов Clavister нужен какой-то специальный.MetallRaven
25.11.2023 09:50# это самый низ конфига camouflage = true camouflage_secret = "arasaka" camouflage_realm = "Hmmm"
Возможно, есть еще взаимосвязанная настройка? Или слон, которого я не заметил...
После этого рестарт сервиса, проверка статуса - все гуд, кроме:
error connecting to sec‑mod socket '/run/ocserv.socket.aa037 834': No such file or directory
Стучусь по <мой_домен>/?arasaka с андроида через OneConnect - "no server reachable at configured address"
UPD: а вот через OpenConnect работает!
AlexHighTower
25.11.2023 09:50Попробовал OneConnect на iOS
с camouflage не заработал...
если вписать адрес как myserver/?camouflage то ругается что "no server reachable"
если убрать /?camouflage, то "error in server response" или "authentication failed", хотя до проверки пароля даже не доходит
через AnyConnect подключается без проблемMiraclePtr Автор
25.11.2023 09:50+1Кстати, интересная штука. Получается OneConnect не умеет парсить camouflage-урлы. И даже без них, у меня версия под Android почему-то ругается на абсолютно валидный TLS-сертификат, а версия для iOS работает нормально.
Итого, пока статистика такая:
Результаты такие:
OpenConnect что десктопный, что для Android - с camouflage работает
Cisco Secure Client на Android - с camouflage работает, десктопный - нет (видимо, надо обновиться на сервере до 1.2.3)
OneConnect - на Android всегда ругается на сертификат, у меня валидный от LetsEncrypt, на iOS работает нормально, но только без camouflage (клиент не умеет парсить camouflage-урлы).
Pro100x3mal
25.11.2023 09:50У меня на ios с AnyConnect не работает почему-то. Во-первых ругается на сертификат (от letsencrypt), во-вторых ни с камуфляжем, ни без него - ошибка на этапе ввода имени пользователя «Secure client. Не удалось установить подключение»
MiraclePtr Автор
25.11.2023 09:50Ищите ошибку в конфигурации сервера.
Я буквально вчера проверял ещё раз OCServ 1.2.2 + Cisco Secure Client 5.0.02602 (текущая версия из стора) = работает как часы. У вас та же версия клиента?
Если есть проблема с сертификатом - в цисковском клиенте можно убрать в настройках опцию "Block untrusted servers", может поможет. Там же можно включить Debug Logs на клиенте, попробовать переподключиться ещё раз, и изучить Service logs.
Pro100x3mal
25.11.2023 09:50+3Спасибо, разобрался. Все дело было в пути к файлу с данными авторизации в конфиге по умолчанию (было auth = "plain[passwd=./sample.passwd]", заменил на свой auth = "plain[passwd=/etc/ocserv/ocpasswd]").
Также пришлось повозиться, так как собирал из исходников крайнюю версию 1.2.3. В результате все файлы помещаются по нестандартным путям: в /usr/local/bin и / usr/local/sbin. Ну и в конфиге пришлось многое закомментить, иначе ругалось на а всякие дефолтные example.com. После этого на сертификаты тоже перестало ругаться!
В итоге завелось все. Сервер v1.2.3. На ios через Cisco Secure Client v5.0.02602 - с камуфляжем работает. На ПК (windows) с Cisco AnyConnect v4.10.07073 - тоже работяет с комуфляжем!
uranik
25.11.2023 09:50>Также имейте в виду, что OpenConnect, как и другие подобные VPN, работает поверх HTTPS. То есть да, вам будет нужен домен и TLS-сертификат. Домен может быть любым, хоть DynDNS
А я без всякого домена настроил, vps с ip хватило. Сертификаты самоподписанные в консоли сделал на 100 лет.
MiraclePtr Автор
25.11.2023 09:50В случае с суровыми блокировками, самоподписанные сертификаты - это довольно подозрительный признак.
А цисковский клиент вроде с самоподписанными сертами вообще не даёт подключаться...
uranik
25.11.2023 09:50Ну и да, OpenConnect есть так же под Android, и он живет в Google Play
Интерфейс спартанский, но работает хорошо.
Не хорошо он работает. Последняя версия 1.33 с маркета пермишены не спрашивает после установки и ругается при попытке выбрать сертификат для установки. Пришлось искать и ставить 1.15, там получше, разрешения установил, но сертификаты пришлось переименовывать в user.crt.mp3 и user.key.mp3 так как видимо стоит фильтр и cer,crt,pem файлы не показывает в списке.
MiraclePtr Автор
25.11.2023 09:50Я использую как раз 1.33, проблем никаких - но это без сертификатов. Попробовал начать добавлять клиентский сертификат в подключение - список директорий в ФС открылся без ошибок, на пермишены вроде не ругается.
karavan_750
25.11.2023 09:50У меня без UDP (с чистым TCP) и настроенным в системе BBR
Вопрос с академической точки зрения. Есть ли в этом эффект, если между клиентом и сервером присутствуют промежуточные узлы, каждый из которых может быть сконфигурирован с иным алгоритмом tcp_congestion_control?
MiraclePtr Автор
25.11.2023 09:50Не знаю как оно с академической точки зрения, а из жизненого опыта - эффект есть.
Dimmiart
25.11.2023 09:50Кому эта херня нужна разверните червоточину... Свой интернет... Wormhole проект на гитхабе интересно Роскомнадзор сможет его заблочить лет через 10 или 15????????????
https://github.com/NOXCIS/Wiregate
Ссылка и забудьте про блокировки...
Плю бонус нет рекламы на твоем впн
В адгард добавьте одну ссылку
https://raw.githubusercontent.com/ZeoRexDevs/EnergizedProtection-block/master/ultimate/formats/hosts
И забудьте про рекламу на своем впн
Скорость вас поразит а устройства живут на 35-40% дольше
MiraclePtr Автор
25.11.2023 09:50+2Wormhole проект на гитхабе интересно Роскомнадзор сможет его заблочить лет через 10 или 15????????????
Оно на базе Wireguard, поэтому Роскомнадзор легко его забанит полностью в первый же день, когда захочет, они такое уже умеют.
Inflame
25.11.2023 09:50Хабр, видимо, будет вынужден ограничить доступ к подобным статьям из РФ, поэтому давайте от души поразвлекаемся в последнюю неделю пока можно. А потом я уйду на покой и наконец-то буду писать статьи про C++.
В таком случае какие ресурсы по теме обхода интернет-цензуры можете порекомендовать? Где в дальнейшем можно будет получать актуальную информацию по технологиям и инструментам обхода блокировок?
Saitozavisim
25.11.2023 09:50Курто! Понял что крутой VPN, но как установить и настроить не понял нифига
akdengi
25.11.2023 09:50А не пробовали с Cisco AnyConnect (точнее он просто AnyConnect), который "родной" идет с Win10/11 в Store? Его если настроить, то подключение идет через стандартное меню Сети и Интернет -> VPN виндовс
Так как у обычного клиента есть неприятный глюк, а именно отвал резолвинга DNS в WLS2 :(
Pro100x3mal
Спасибо, разобрался. Все дело было в пути к файлу с данными авторизации в конфиге по умолчанию (было auth = "plain[passwd=./sample.passwd]", заменил на свой auth = "plain[passwd=/etc/ocserv/ocpasswd]").
Также пришлось повозиться, так как собирал из исходников крайнюю версию 1.2.3. В результате все файлы помещаются по нестандартным путям: в /usr/local/bin и / usr/local/sbin. Ну и в конфиге пришлось многое закомментить, иначе ругалось на а всякие дефолтные example.com. После этого на сертификаты тоже перестало ругаться!
В итоге завелось все. Сервер v1.2.3. На ios через Cisco Secure Client v5.0.02602 - с камуфляжем работает. На ПК (windows) с Cisco AnyConnect v4.10.07073 - тоже работяет с комуфляжем!