Pull to refresh

Comments 57

Огромное Вам спасибо за ваш невероятно АКТУАЛЬНЫЙ труд...

Спасибо за оценку. На мой взгляд существуют более актуальные способы, но и этот на данный момент вполне рабочий.

Файл займет около 9Мб

Если прогнать через strip, то можно значительно уменьшить размер. По крайней мере версия для х86_64 худеет почти на 3 мегабайта.

Спасибо за комментарий, интересный инструмент, как-то раньше не встречался

Уже несколько лет существует коробочное решение от Amnezia VPN c клиентами для Windows, Mac, Linux, Android и iOS (iOS не поддерживает Cloak).

Немного не актуальная информация, так как поддержку Cloak (а именно OpenVPN over Cloak, который в том числе позволяет настроить связку SS + Cloak в родном клиенте SS и не только) давно ввели для iOS (с версии 3.0.7, если не ошибаюсь).

Спасибо что обратили внимание, исправил

На Android TV можно поставить большой SS, он нормально управляет с пульта и поддерживает плагины в отличии от тивишного.

У меня есть стойкое подозрение, что автор XRay при разработке XTLS-Reality вдохновлялся именно Cloak, потому что принцип действия у них очень схожий - определение "свой-чужой" по самому первому пакету и в результате полная маскировка под чужой веб-сайт, вплоть до fingerprint'а сервера и реального TLS-сертификата.

На сегодняшний день для тех, у кого есть уже настроенный OpenVPN-сервер и кто хочет его обезопасить от блокировок - это самое простое и надежное решение (ну либо shadowsocks-2022, ага).

Подскажите, в shadowsocks-2022, как я понял, они исправили только производительность и безопасность, маскировка там та же, что и в оригинальном SS? То есть Cloak более перспективное решение, как и XTLS-Reality, но в отличие от последнего, попроще в настройке.

в shadowsocks-2022, как я понял, они исправили только производительность и безопасность, маскировка там та же, что и в оригинальном SS

Наоборот, там именно улучшения по части шифрования и установления соединения, для защиты от выявления прокси с использованием различных багов первых версий.

А хабр еще не завел себе зеркало в onion сети? Кажется самое время.

Tor в России давно работает через пень-колоду.

Друзья, подскажите, cloak работает только с ovpn и другими протоколами из доки или можно произвольный протокол в него завернуть? Очень пригодилось бы заворачивание в него корпоративный впн.

Насколько я знаю можно завернуть OpenVPN, Shadowsocks, а также видел, что кто-то пытался и WireGuard в него заворачивать, но не знаю, успешно ли...

Я заворачивал WireGuard  через Shadowsocks скорость канала сильно проседает, чем больше накрываешь шифрованием, тем канал проседает

у меня скорость канала упал 15 - 20 %

тут не показывают какой получился результат канала после использования OpenVPN + Cloak

А не подскажете, какой был результат падения скорости в абсолютных цифрах? Сколько было и сколько стало? Какую именно реализацию Shadowsocks использовали? И пробовали после этого какие-то другие решения, тот же Cloak?

А то есть Wireguard канал между сервером в РФ и сервером за границей. Сейчас прокачивает 400-500 Мбит/с. Пока не падал, но другой Wireguard за другую границу с того же российского сервера уже пару раз отваливался, так что пора принимать меры.

Но все статьи концентрируются только на степени неуловимости всех этих новомодных протоколов, тесты скорости нашёл только из 2019 года, там немного не то и давно устарело. Хотелось бы хотя бы 300 Мбит/с сохранить, иначе грустно.

Можно завернуть все что угодно, что работает по TCP

Вроде как UDP тоже добавили. "UDP support is experimental at the moment"

Правда, так и не нашел успешных примеров заворачивания WG

Вот с этим у меня wg прекрасно работает под Debian12 через cloak. Конфиг сервера от автора можно не трогать, единственно "RedirAddr" указать такой же, как "ServerName" у клиента . В конфиге интерфейса вайргард-сервера естественно указываем Listen=51000

deb-router ~ # cat /etc/cloak/ckclient.json
{
"Transport": "direct",
"ProxyMethod": "openvpn",
"EncryptionMethod": "plain",
"UID": "УИД клиента",
"PublicKey": "Пабкей сервера",
"ServerName": "dl.google.com",
"NumConn": 4,
"BrowserSig": "chrome",
"StreamTimeout": 300
}

deb-router ~ # cat /etc/systemd/system/cloak-client.service
[Unit]
Description=cloak-client
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
#Service variables
#Путь до конфига клиента
Environment=CONFIG="/etc/cloak/ckclient.json"
#Адрес VPSки с сервером cloak
Environment=SRVIPADDR=123.123.123.123
#Локальный ip-адрес на котором будет слушать cloak. В данном случае будет слушать на всех интерфейсах
Environment=LISTENLOCIP=0.0.0.0
#Локальный порт на котором будет слушать cloak. Его же прописываем как порт пира сервера в конфиге wireguard
Environment=LISTENPORT=51000

ExecStart=/usr/local/bin/ck-klient -u -i "$LISTENLOCIP" -l "$LISTENPORT" -s "$SRVIPADDR" -c "$CONFIG"
Restart=always
[Install]
WantedBy=multi-user.target

deb-router ~ # cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
PrivateKey =
MTU = 1380
PreUp = ip route add 123.123.123.123 via 192.168.1.1
PostUp = iptables -t nat -A POSTROUTING -o %i -s 192.168.1.0/24 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o %i -s 192.168.1.0/24 -j MASQUERADE
PostDown = ip route delete 123.123.123.123 via 192.168.1.1

#peer on cloak-server
[Peer]
PublicKey =
AllowedIPs = 0.0.0.0/0
Endpoint = 127.0.0.1:51000
PersistentKeepalive = 20

Всем рассказам про неподвластные РКН протоколы недостаёт главного - тестов скорости.

Вот в моём случае дано - OpenVPN от клиентов до российского сервера, Wireguard от российского до нероссийского. С последним вообще вопросов нет, заменю на что угодно по мере возникновения проблем, вопрос с первым. Обход блокировок там тоже есть, но как сугубо факультативная фича, основной смысл в доступе к внутренним ресурсам. А там, в т.ч., частное облако, куда иногда один сотрудник зальёт десяток-другой Гб, а у 5-10 других сотрудников они тут же начинают скачиваться... и неплохо бы, чтобы в синхронизированное состояние все они приходили через разумное время. В общем, вопрос скорости очень актуален.

Пока что, три раза "тьфу", всё это никакими тренировками РКН не затронуто и работает. Но есть планы (по другим причинам) VPN немного переделать, и учитывая все риски, неплохо бы заодно подложить соломки, чтобы на случай ковровых блокировок VPN и за границу, и внутри России, сотрудники не пострадали.

Так вот вопрос. Насколько тот же Cloak влияет на пропускную способность соединения? Зависит ли это от latency между клиентом и сервером? Можно, конечно, самому поднять тестовый сервер и проверить, но вдруг кто уже делал бенчмарки.

Всем рассказам про неподвластные РКН протоколы недостаёт главного - тестов скорости

Да потому что там рассказывать нечего. У меня и OpenConnect и XRay выдавали честные 150 мегабит между хостами в Москве и Чехии (пинг около ~50мс). Я серьезно не понимаю, почему люди молятся на Wireguard, мол он очень быстрый, когда с другими протоколами все точно так же летает (если только у вас не какое-то адски медленное железо или совсем убитый канал). Главное BBR не забыть на сервере настроить, для Cloak и OpenVPN/TCP это тоже может хорошо помочь.

Вообще, 150 Мбит это очень скромно, если не сказать прямо: неприемлимо мало.
Сам пытался найти бенчмарки чтобы подобрать железо — нереально.

Ну тогда стоит с самого начала указывать требования, сколько надо, и расписывать, какие у вас такие диковинные юзкейсы, что вам 150 мегабит это неприемлемо мало.
Серьезно, у меня есть доступ к мониторингу корпоративного VPN (несколько сотен пользователей) и своего частного VPN для друзей для обхода блокировок (десяток пользователей) - и там и там 99% клиентов не утилизируют канал более чем на 20-30 мегабит даже в пиках.

Спасибо за ответы. У меня такая ситуация, что пики совпадают по времени у клиентов в основном (я выше описал - частное файловое облако, очень много общих папок, в которые как один что-то выложил - сразу у всех начинает скачиваться), так что 150 Мбит/с на мои десяток пользователей - это, в целом, терпимо, но не особо радостно. Потестирую, подумаю над топологией VPN-сети, может продублирую VPN-сервер тупо через RR DNS, чтобы клиентов разнести.

А можете поделиться ссылкой на какой-нибудь гайд по BBR?

Cloak "режет" скорость примерно в два раза. Замеры делал оценочные. Сравнивал чистый openvpn и openvpn завернутый в cloak. Конечно, зависит от производительности железа с обоих сторон. Если железо не узкое место, то потери будут меньше. Как вариант, можно отключить шифрование в openvpn, cloak шифрует на своём транспортном уровне. Кроме того, если позволяет инфраструктура, можно заменить openvpn на wireguard. Он действительно быстрее в несколько раз. Проверял собственными замерами: там где openvpn выдавал 150Мбит, WG выдал 400Мбит. Но лично меня больше волнует другой вопрос - насколько cloak годится для многопользовательской работы под нагрузкой. И тут у меня большие сомнения. В гитхабе висит несколько issues с проблемами производительности, зависания, и утечки памяти. Все заявленные проблемы не разрешены, более того, автор практически не участвует в обсуждении. Репозитарий Cloak давно не обновляется. В общем, как персональное решение - сойдёт. А ставить ли его в продакшн - это большой вопрос.

Есть VPS (вне России). ОС на нём - Ubuntu server 22.04.3 LTS. На WordPress (nginx) там крутится не сильно нагруженный сайт. (На порту 443.) Есть доменное имя (типа server.com).

Туда же я присоседил сервер OpenVPN (на udp-порт). Клиентов у VPN-сервера... (одномоментно) штук до 10. Разумеется, в последнее время тот VPN стал попадать под ковровые блокировки РКН :((

Удастся ли по этому мануалу 1) прикрыть VPN Cloak`ом так, чтобы 2) все не VPN-запросы направлять на свой же сайт?

Да, можно. Nginx нужно перевесить слушать на 127.0.0.1, и потом указать этот адрес в "RedirAddr" в конфигурации Cloak.

Судя по тому, что у вас в конфиге openvpn транспортом указан udp - правильно ли я понимаю, что cloak умеет пробрасывать (инкапсулировать) udp через tcp (tls)? Если так, то получается можно таким же макаром и более шустрый wireguard через всё это дело пустить? Глянул в гитхабе автора cloak примеры конфигов для openvpn, так у него там транспортом tcp указано. Очень интересует этот момент.

Здравствуйте, Cloak поддерживает OpenVPN UDP, наверняка можно и с Wireguard Cloak использовать, но я этот вопрос не изучал

Изучил. Wireguard прекрасно работает через cloak, но заметил одну интересную особенность - тестил всё это у себя через мобильный Теле2 и при указании некоторых популярных доменов как обманки в "ServerName" очень сильно троттлит трафик (по анализу SNI, видимо). Прописываешь один - скорость еле-еле и пинги космические, указываешь другой и даёт почти на всю ширину канала и пинги хорошие. Вообщем, нужно еще и доменное имя сервера-обманки хорошее подбирать. Ну и MTU оптимальный найти (у меня с 1380 нормально).

А нет того же самого но через docket?

спасибо за статью. Все получилось. Единственное что
Вы пишите: "В "BypassUIDw2S8IMf/T4/TAC7MJZQlWw== (при наличии нескольких пользователей каждый UID вводится в кавычках на отдельной строке, как в примере) "
Нужно еще дописать - "через запятую" иначе не работает.
Настраивал клиент под винду - Все запустилось.
Может кто то встречал описание установки cloak на андроид?

Я имею в виду чистый Cloak а не как плагин для Shadowsocks.

Спасибище! Очень вменяемый текст, редко такой встретишь. МТС последние месяцы меня просто преследовал. Облачный ВПН восстановлен - работает через Cloak. Но я админ-нуб и даже не понял, как сохранять ключи и uid для последующего ввода, пришлось считывать со скриншота. Зато файлы на сервер закачал заранее отредактированные через FileZilla. Там же определил реальное местоположение файлов OpenVPN (для sudo cat /etc/openvpn/server.conf )

Прошло две недели - снова перекрыли. Кто может еще посоветовать более долговечное для существующего VPN?

Кчли не трудно напишите пожалуйста что именно прикрыли? у вас заблокировали openvpn over cloak? Просто налажтваю большую сеть на этом решении и если это не надежно то надо думать....

А мне вот непонятно, чем плохо использовать настроенный локально или на роутере openwrt shadowsocks (и производные) клиент как socks5 прокси для подключения по openvpn в TCP режиме ?

Да, если на роутере то даже удобнее. Не надо про роутинг до SS сервера думать, чтоб мимо опенвпна шёл.

А если не хочеться строить свой SS сервер, в сети много бесплатных SS* серверов в любых странах, с неплохой скоростью.

PS: пробовал, работает отлично.

Видимо ни чем. но автор пишет: "Здесь мы рассмотрим установку чистого Cloak для существующего сервера OpenVPN " В моем случае это и был критерий выбора.

Похоже, в скрипте автозапуска клиента Cloak - /etc/init.d/cloak - одна строка обрезана:
вместо "procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${res" напрашивается "procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}"

Спасибо что заметили, исправил

Да, кроме того я в скрипте автозапуска клиента Cloak закомментировал строки

#starts after network starts

#stops before networking stops

и еще мне не удалось запустить через определение параметров как у автора (не понимаю почему) - в итоге я закомментировал и следующие строки:

#HOST="0.0.0.0"
#PORT="1984"
#CONFIG="/etc/config/cloak/ckclient.json"

В итоге строка

procd_set_param command "HOST" -u -l "CONFIG"

в моем случае выглядит так

procd_set_param command /usr/bin/ck-client -c /etc/config/cloak/ckclient.json -s xxx.xxx.xxx.xxx -u

где xxx.xxx.xxx.xxx соотв ip вашего сервера.

И еще пришлось добавить новое правило на фаервол , что lan может общаться с роутером а вот выходить в инет может только tun0

С такими изменениями все прекрасно заработало.

Огромное спасибо автору и всем кто помог!

Прошу прощения за неточности в скрипте, видимо когда переносил из редактора не заметил отсутствия # перед строками и испорченных переменных, так же исправил ошибки в procd_set_param

РКН похоже научился блокировать вне зависимости от прокола - сегодня через Билайн не работает ни ss, ни cloak, ни v2ray (без сертификатов и CDN).

Несколько пакетов пролетает и дальше порт блокируется совсем для этого IP. Пока не понял на какой срок и с соседнего айпи доступ есть как будто оно срабатывает только после накопления статистики.

Спасибо за статью и коментарии. По следам ещё одной старой статьи сделал схему

            /-> openvpn/tcp (cloaked)
           | -> openvpn/udp (cloaked)
           | -> wireguard (cloaked)
ck-server -|                  /-> ssh
            \->sslh (redir) -| -> https
                              \-> openvpn/tcp

Успешно работают все протоколы. Без обфускации openvpn и wireguard на моих операторах связи (проводной Интерсвязь и мобильный МТС в Челябинске) блокируются в данный момент. Так же попробовал такой вариант:

       /-> openvpn/tcp
      | -> http
sslh -| -> https       /-> openvpn/tcp (cloaked)
      | -> ck-server -| -> openvpn/udp (cloaked)
       \-> ssh         \-> wireguard (cloaked)

Тоже работают все протоколы, но оставил всё таки первый вариант в надежде на то, что ck-server лучше знает как не палиться сенсорам (код не смотрел и не сравнивал)

Не хватает клиента cloak под андроид, чтобы имеющийся openvpn в него завернуть.

Amnezia глянул, но оно ставит свой vpn и cloak на сервере в контейнер при этом требуя возможность подключения по ssh root-ом с паролем. А задать параметры уже настроенного руками сервера в клиенте возможности нет.

Only those users with full accounts are able to leave comments. Log in, please.

Articles