Всем привет! Возможно уже совсем скоро разные новостные и IT‑ресурсы будут подчищать информацию о способах обхода блокировок. А пока этого не случилось, запасаемся полезными гайдами и разворачиваем свои собственные VPN с защищенными от блокировок протоколами. Расскажу как это сделать, как изменилась Amnezia и как мы защитили WireGuard от блокировок.

Мини‑гайд в конце статьи, а я сначала скажу пару слов о проекте. Amnezia — это бесплатное self‑hosted приложение с открытым исходным кодом. Amnezia позволяет в два клика создать персональный VPN на личном сервере. Пользователю нужно просто приобрести виртуальный сервер (VPS) у любого VPS‑провайдера и ввести данные сервера в приложение и выбрать уровень цензуры его регионе. Более подробно о принципе работы в предыдущей статье.

За время существования проекта мы добавили множество протоколов, среди них WireGuard, OpenVPN и IKEv2 для Windows. А после начала массовых блокировок сайтов и VPN‑протоколов на территории России мы серьезно задумались об уязвимостях перед системами DPI и добавили поддержку ShadowSocks и OpenVPN over Cloak.

ShadowSocks первых версий оказался уязвим к блокировкам во многих странах, поэтому в будущем мы планируем его добавить в более современной и защищенной интерпретации. OpenVPN over Cloak, напротив, оказался очень устойчивым к блокировкам, и сейчас используется жителями Ирана, Туркменистана и Китая. Это одно из тех немногих решений, которое, на данный момент, не подвержено блокировкам в этих регионах.

Несмотря на все преимущества, OpenVPN over Cloak во многих случаях замедляет работу интернета, поэтому мы занялись поисками защищенного протокола с более высокой скоростью работы. Мы много думали, и временно отложив другие задачи, пришли к решению — просто защитить любимый всеми WireGuard. Так на основе WireGuard‑GO, мы выпустили собственный форк — AmneziaWG. Он уже доступен в приложении Amnezia.

Немного о принципе работы AmneziaWG

Протокол работает в рамках обратной совместимости. То есть реализация AmneziaWG позволяет изменить некоторые статичные параметры в WireGuard, по которым этот протокол обычно и распознают системы DPI. А если оставить эти параметры по умолчанию (равными 0), то протокол работает как обычный WireGuard.

В AmneziaWG изменены заголовки всех пакетов: пакета рукопожатия (Initiator to Responder), ответного пакета (Responder to Initiator), пакета данных, а также специального пакета «Under Load» — по умолчанию они имеют рандомные значения, но их можно самостоятельно поменять в настройках.

Так как заголовки пакетов у каждого пользователя разные, то написать универсальное правило на основе заголовков для систем отслеживания, чтобы вычислить протокол и заблокировать, просто невозможно.

Еще одно слабое место WireGuard — это размеры пакетов авторизации. В AmneziaWG к каждому auth‑пакету дописываются рандомные байты, чтобы изменить их размер. Так «init и response пакеты» рукопожатия дополнительно имеют «мусор» в начале данных, размер которого определяется значениями S1 и S2. По умолчанию инициирующий пакет рукопожатия имеет фиксированный размер (148 байт), а после добавления мусора, его размер будет равен 148 байтам +S1.

В реализации AmneziaWG предусмотрен и еще один трюк для более надежной маскировки. Перед началом сессии Amnezia отправляет некоторое количество «мусорных» пакетов, чтобы окончательно запутать системы DPI. Количество таких пакетов и их минимальный и максимальный размер в байтах тоже задается в настройках, параметрами Jc, Jmin и Jmax.

Нам уже удалось успешно протестировать AmneziaWG в Китае и в России. Оказалось, что по скорости оно практически не уступает обычному WireGuard. Кстати, будем рады, если вы присоединитесь к тестированию и напишите нам свои впечатление на почту support@amnezia.org, как начать тестирование описано в мини‑гайде, в конце статьи.

Немного о новом дизайне Amnezia.

Кроме нового протокола, Amnezia 4 версии кардинально отличается от предыдущих версий дизайном. Три года назад Amnezia была проектом одного человека, именно тогда был создан дизайн неизменный до сегодняшнего дня. Сейчас Amnezia — приложение с множеством протоколов и сервисов, над которым работает целая команда. Мы стараемся сделать его приятнее для использования.

Так четвертая версия теперь исполнена полностью в темной теме. Мы также постарались сделать приложение намного понятнее, чтобы каждый пользователь смог найти ту функцию или кнопку, которая ему нужна. Еще мы увеличили скорость работы UI, что позволяет избавится от микро‑задержек и старых багов. Так же были исправлены регрессионные баги из 3 версии приложения и добавлены удобные мелочи. Самая главное — к Английскому мы наконец добавили Русский и Китайский языки, и в ближайшем будущем планируем добавить Фарси.

Кроме приложения у нас появился новый Сайт с 30 новыми инструкциями для каждого пользовательского сценария, и переработан раздел с инструкциями по покупке VPS, так что теперь каждый сможет найти ответ на любой вопрос связанный с приложением. В общем, лучше один раз показать чем писать много текста .https://amnezia.org/

Мини-гайд

Спасибо что дочитали. Как и обещал, мини‑гайд по созданию собственного VPN с защищенным от блокировок WireGuard — AmneziaWG.

  1. Покупаем любой VPS у любого хостинг провайдера. Важно чтобы была операционная система Ubuntu (официально поддерживаемая версия — 22.04), или Debian 11. Вот  тут есть пошаговые инструкции в качестве примера, но вы можете выбрать любой другой.

  2. Устанавливаем приложение https://amnezia.org/, есть версии для Windows, Linux, MacOS, IOS и Android.

  3. Вносим данные сервера в приложение, и выбираем «Средний или Высокий» уровень цензуры (или вручную выбираем протокол AmneziaWG). Ну и нажимаем «Подключиться»!

Профит! Теперь у Вас есть собственный VPN с защищенным от блокировок протоколом AmneziaWG. Его можно использовать на неограниченном количестве устройств и делиться с другими людьми.

Комментарии (100)


  1. alex_kag
    26.10.2023 17:21
    +4

     Важно чтобы была операционная система Ubuntu (официально поддерживаемая версия - 22.04), или Debian 11. 

    Это имеется в виду - минимум, или ТОЛЬКО ?


  1. aborouhin
    26.10.2023 17:21
    +13

    Самое интересное не упомянули - что протокол можно и без всего "комбайна" от Amnezia использовать, собрав из их репозиториев ровно два бинарника - wireguard-go отсюда и wg отсюда. Я потестировал немного - скорость впечатляет, если оно будет достаточно долго оставаться неблокируемым - это прямо спасение для тех случаев, где нужно быстро.


    1. numb
      26.10.2023 17:21

      А как же мобильные девайсы?


      1. aborouhin
        26.10.2023 17:21
        +7

        Ну на мобильных ставьте весь "комбайн" :)

        Лично меня это решение интересует именно для связи между серверами и роутерами, для конечных пользователей с моими потребностями голый Wireguard в любом случае не очень применим (SSO нет, 2FA нет, маршрутизация примитивная). Вот ещё собрать его под Микротик попробую (контейнер), если взлетит (пока собралось, но что-то не работает, надо время выделить)... Так что эта информация полезна для тех, у кого такие же потребности.


        1. avacha
          26.10.2023 17:21
          +7

          Если таки получится - опубликуйте контейнер, для связи между роутерами будет какой-никакой вариант.


          1. aborouhin
            26.10.2023 17:21
            +4

            Контейнер точно не опубликую, т.к. если у Микротика нет внешней памяти (USB-флэшки, например), а у меня нет, - то подмонтировать volume к контейнеру там физически нельзя. Поэтому я все конфиги буду зашивать внутрь контейнера, и под каждый роутер собирать его индивидуально. Но инструкцию опубликую, если взлетит.

            Cloak до этого собрал и заработало, amnezia-wg пока по непонятным причинам молча вылетает сразу после старта. На микроте много не надиагностируешь, так что надо сделать виртуалку под armv7 (с моим Proxmox тот ещё секс) и позапускать на ней сначала. На днях соберусь точно, больно уж скорость понравилась. Cloak я после тестов не стал сразу внедрять, ибо пока не особо блокируют обычный WG, резать себе скорость добровольно не хочется. А тут можно и заранее подстраховаться.


            1. aborouhin
              26.10.2023 17:21
              +2

              P.S. Взлетело! Ну точнее wireguard-go взлетел, а wg не хочет, видимо я её кросс-компиляцией под armv7 какие-то косяки у меня (там gcc, а не go). Но раз wireguard-go заработал - то с wg точно разберусь, теоретически и без wg можно.


              1. vp7
                26.10.2023 17:21
                +2

                Можно поподробнее? В современных же микротах давно выпилен metarouter и что-то подцепить туда не получится. Или я отстал от жизни? Можно такое развернуть на hAP ac2?


                1. aborouhin
                  26.10.2023 17:21
                  +4

                  Metarouter выпилен, зато завезли (несколько своеобычный, но почти полноценный) docker. См. документацию на эту фичу.

                  На hAP AC2, по идее, должно взлететь, т.к. ARM32, но требует USB-флэшку для хранения контейнеров (что логично, на встроенные 16 Мб не особо что влезло бы в любом случае). А вот насколько хватит RAM - другой вопрос. Я погоняю у себя, напишу, как оно с ресурсоёмкостью. У меня RB3011, гиг RAM и 128 Мб встроенного флэша, так что я без USB обхожусь (контейнер с amnezia-wg на базе Alpine - 9 Мб). Пока не могу понять, от добавления и старта контейнера объём использованной RAM, который показывает микрот, вообще никак не изменяется, что-то тут неладно.


                  1. aborouhin
                    26.10.2023 17:21
                    +2

                    P.S. Первые результаты - на RB3011 (2 ядра arm32 по 1,4 ГГц) при загрузке канала 30 Мбит/с использование CPU - 75-85%. Грустновато. В следующий раз соберу на роутере, у которого канал во внешний мир потолще, проверю, на какой скорости упрётся в потолок по CPU - но это явно будет даже не 100 Мбит/с, увы.


                    1. avacha
                      26.10.2023 17:21
                      +3

                      Пусть хоть так, все равно как резерв полезно. Смысл хотя бы в том, что на удаленных локациях использовать как резервный vpn для админов, на случай если постоянные линки на стандартных протоколах будут банить. Можно инструкцию for dummies? и для Cloak тоже было бы интересно. Si vis pacem, para bellum.


                    1. vp7
                      26.10.2023 17:21

                      Грустновато, встроенный wireguard выдаёт сильно больше.

                      На hAP AC2 при нагрузке в 50 мегабит (в одну сторону) CPU загрузился на +20%, можно ожидать, что 200+ мегабит встроенный WG сможет выдать.

                      С другой стороны - как средство резервного доступа даже 10 мегабит хватит с запасом.


                    1. aborouhin
                      26.10.2023 17:21
                      +1

                      Попробовал на другом роутере, там 300 Мбит/с честных. Поднимаю amnezia-wg до сервера, с которым уже есть канал по обычному WG. В том же контейнере устанавливаю iperf и тестирую скорость к этому серверу в трёх вариантах:

                      • напрямую по публичному IP без VPN - 195 Мбит/с, упирается в канал, CPU меньше 50%

                      • через встроенный WG микротика - 85 Мбит/с, упирается, похоже, тоже в CPU, т.к. в пике подскакивает до 80%

                      • через amnezia-wg - 32 Мбит/с, упирается в CPU практически сразу, больше 90%

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

                      В общем, не тянет мой микрот эту вундервафлю никак :( У меня за этим VPNом частное файловое облако на много терабайт, которое могут несколько пользователей одновременно использовать, с 30 Мбит/с это печаль и страдания.

                      И что ещё плохо, что в микроте контейнеры можно ограничить по использованию памяти, но не по использованию CPU. Т.е. трафик идёт, использование CPU взлетает под 100%, и на микроте начинает тормозить (хорошо, если не вылетать), вообще всё, а не только amnezia-vpn. Тут разве что как-то шейпить трафик так, чтобы CPU гарантированно не перегружать, но это ещё ухудшит скорость.


                      1. MRD000
                        26.10.2023 17:21
                        +1

                        А просто TLS между датацентрами не будет работать? VPN может иметь смысл для разного типа трафика, но, в основном , нешифрованного (включая SNI в TLS). Если все Ваше, то Вы можете напрямую использовать SSH и TLS (можно с ECH). Такая схема сейчас считается более современной учитывая большие скорости и ограничения оборудования VPN. (Естественно, все остальные предосторожности должны быть тоже, Zero Trust ).


                      1. aborouhin
                        26.10.2023 17:21

                        Частично так и сделано, там, где какой-то софт на самом сервере общается с каким-то другим софтом на другом сервере (ну, скажем, зарубежный Proxmox бекапит свои виртуалки на российский и наоборот - там и HTTPS, и сами бекапы зашифрованы).

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

                        Опять же, сейчас есть две точки входа во внутреннюю сеть - VPN для мобильных пользователей и офисный / домашний Wi-Fi, - каждую из которых достаточно просто настроить использовать LDAP/Radius, 2FA, обеспечить мониторинг и т.п. Отдельные сервисы с этим всем работать или в принципе не могут, или настройка нетривиальная, да и поверхность для атаки расширяется.

                        Можно, конечно, заставить пользователей и в офисе/дома подключаться через VPN, сняв нагрузку с роутера. Но как пользователь из дома будет, скажем, на офисный принтер документы на печать отправлять без VPN на роутере? Никак. Так что какое-то стойкое к блокировке решение для роутерного VPN всё равно нужно. Хотя если совсем прижмёт, то максимум трафика придётся отправлять в обход него, да.


            1. dimsoft
              26.10.2023 17:21
              +1

              а разве переменными нельзя передавать в контейнер у микротика ?


              1. aborouhin
                26.10.2023 17:21

                Можно, я уже подумал. Там оно несколько своеобычно реализовано, переменные, которые задаются в конфиге микрота, доступны только для команд RUN в Dockerfile, но не в environment запущенного контейнера. Но можно в Dockerfile сформировать длиннющую строчку конфигурации, которую через RUN отправить в сокет, созданный wireguard-go. В общем, реально, буду делать.


                1. dimsoft
                  26.10.2023 17:21

                  где-то будет публикация ?


                  1. aborouhin
                    26.10.2023 17:21
                    +1

                    Сначала надо бы доделать :) Потом постараюсь собрать все мысли в кучку и хотя бы здесь в комментариях отметиться, ну или пост сделать, если потянет на пост.


            1. Eyrafir
              26.10.2023 17:21

              так если у вас есть прокс, не проще ли поднять на нем полноценную виртуалку для этих экспериментов?

              я раньше до выхода ros7 так поступал с обычным ваергардом:

              2 сетевые на вм (по одной прилетает то что проброшено с мира, а вторая обратно на крота тип локалка)

              и на кроте кнал на вм как второй провайдер настраивал

              как мне кажется скорость будет сильно приятней чем контейнеры даже на самых жирных микротах


              1. aborouhin
                26.10.2023 17:21
                +1

                Так ведь вопрос, на чём реализовать канал от микрота до этой самой виртуалки. Сейчас и так российские пользователи коннектятся к российскому серверу, а тот уже к нероссийскому, между серверами проще протокол менять хоть раз в неделю. Но внутрироссийские VPN, судя по отчётам, тоже блокируют прекрасно, и от этого риска надо как-то страховаться. Или SSTP (тормоза), или что-то в контейнере (пока что тоже тормоза, продолжаю эксперименты), или Raspberry Pi какой-нибудь на двусторонний скотч к этому микроту приклеить и через него VPN гонять (но тут неплохо бы рядом с тем микротом физически находиться, чтобы это сделать, а у меня их 4 штуки в разных городах и странах, в некоторых из которых я точно не планирую появляться в обозримом будущем).


      1. ganzmavag
        26.10.2023 17:21

        С обычным WG сервером может работать конфигурация AmneziaWG в которой установлены Jc, Jmin, Jmax, а остальные поля нулевые. Таким образом клиент AWG будет просто посылать мусорные пакеты перед init пакетами, что абсолютно не влияет на работу протокола WG, но может сбить с толку DPI.

        Вот такое пишут.


  1. spidersarecute
    26.10.2023 17:21
    +31

    На мой взгляд, вы используете не самый удачный подход. Вы обфусцируете данные, чтобы трафик выглядел как случайный набор чисел. И это плохо, потому что это вас выделяет на фоне других пользователей, у которых 99% трафика это HTTPS к вконтакте, пикабу, ютубу и другим популярным сайтам. У них HTTPS, а у вас какой-то обфусцированный трафик.

    Мне кажется, лучше максировать трафик, чтобы он был неотличим (без тщательного ручного анализа) от HTTPS, который передает Chrome. Сделайте заголовки как у HTTPS 2.0 или 3.0, но после установки SSL передавайте внутри свои данные. Чтобы меньше выделяться, также шлите запросы на топ-100 популярных сайтов. Или маскируйтесь под трафик от приложений, от популярных игр вроде Counter Strike.

    Еще под Телеграм хорошо максироваться, потому что он использует свое кастомное шифрование и использует (в отличие от других) IP из сторонних сетей.

    Что скажете?


    1. dimitrii_z
      26.10.2023 17:21
      +2

      Похоже по описанию на другой протокол https://habr.com/ru/articles/731608/


      1. Kenya-West
        26.10.2023 17:21
        +3

        Пользуюсь, полёт нормальный (выбрал форк X-UI). От ПК на любой системе до мобилок. Сотня своих абонентов. Сервер крутится в контейнере на VPS у Hukot в Чехии. На ПК настройка слегка нетривиальная для домохозяйки на каноничном клиенте, поэтому записал видеоинструкции, для мобилок на всякий случай тоже. Вопросов не было, скорость улёт. Торренты и реклама блокирутся, поэтому шанс получить бан на VPS нулёвый. Эксплуатирую прям с момента публикации статьи - очень стабильно работает. В общем, искал костыльное подвальное дерьмо, а нашёл очень крепкий и неотличимый от HTTPS алмаз!


        1. aborouhin
          26.10.2023 17:21

          А можно "улёт" конкретизировать в цифрах? Описываемый в посте amnezia-wg у меня в тестах выдал 600 Мбит/с (между серверами 40 мс, без любого VPN скорость незначительно больше). В целом, 200-300 я бы пережил, меньше уже печаль.


          1. Sazonov
            26.10.2023 17:21
            +1

            У меня с домашнего интернета (сервер на самый дешёвый digital ocean тариф поставил) 600 мегабит спидтест показывает. Пинг 30-40.


            1. aborouhin
              26.10.2023 17:21

              Это про какой сейчас протокол? X-Ray? И через TCP так летает? Поразительно...


              1. MiraclePtr
                26.10.2023 17:21
                +2

                У меня XRay (VLESS через TLS) легко между серверами в Москве и Европе выдавал 150-200 мегабит, главное не забыть BBR на сервере настроить. Впрочем, с настроенным BBR у меня даже OpenConnect (без DTLS, просто TLS) давал ~120 мегабит.

                К тому же не забывайте, что XRay и подобные прокси-протоколы не оперируют IP-пакетами (из-за чего как раз могут быть проблемы, когда дважды срабатывает congestion control), а оперируют потоками, причем на каждое подключение к точке назначения поднимается новое TCP-подключение через прокси. А в случае с XTLS, там еще дополнительный слой TLS-шифрования отключается.

                Так что там тормозить в принципе особо нечему, не считая оверхеда на дополнительные заголовки пакетов и перекладывание данных в памяти туда-сюда.


          1. Kenya-West
            26.10.2023 17:21
            +2

            Выше 100 Мбит/сек не выдавал, потому что у меня был провайдер на 100 Мбит/сек. Как только подключат 500 Мбит/сек, проверю ещё раз.


            1. aborouhin
              26.10.2023 17:21

              Ну если 100 Мбит/с вытягивает без видимого падения скорости - это уже прекрасно, значит с 500 тоже если и упадёт, то не в разы. Надо тоже протестировать, спасибо.


        1. MiraclePtr
          26.10.2023 17:21
          +2

          На ПК настройка слегка нетривиальная для домохозяйки на каноничном клиенте, поэтому записал видеоинструкции, для мобилок на всякий случай тоже. 

          Можно присмотреться к новым InvisibleMan-XRay и Hiddify-Next, у них максимально простой интерфейс, грубо говоря с двумя кнопками: "Добавить сервер через URL или файл" и "Подключиться".


          1. Kenya-West
            26.10.2023 17:21

            Мельком что-то видел про них - статьи писал кто-то, ага.

            К сожалению, база пользователей (родственники, друзья, знакомые) уже давно набрана, и они совершенно не готовы проходить процесс добавления нового VPN.

            Уверен, эти Hiddify и прочие проекты не имеют механизмов бесшовной миграции юзеров какого-нибудь X-UI, чтобы у конечного юзера вообще ничего не отвалилось.

            Так что сидим на том, на что подсели впервые. Пока довольны. Если гром грянет - разверну что-то более однокнопочное. Пусть будет Hiddify.


            1. MiraclePtr
              26.10.2023 17:21
              +1

              Уверен, эти Hiddify и прочие проекты не имеют механизмов бесшовной миграции юзеров какого-нибудь X-UI, чтобы у конечного юзера вообще ничего не отвалилось.

              Вы не поняли. Этот Hiddify-Next, как и InvisibleMan-Xray - это прокси-клиенты для конечных юзеров на базе тех же самых движков xray/sing-box, как Nekobox, v2rayN, и подобные, просто в отличие от каноничных клиентов Nekobox и v2rayN у них гораздо более простой интерфейс, как раз для домохозяек. Со стороны сервера у вас все так же может быть ваша X-UI, там ничего менять не надо.


              1. Kenya-West
                26.10.2023 17:21

                Понял. Спасибо. Обновлю инструкции для юзеров, добавлю вариант Hiddify


    1. aborouhin
      26.10.2023 17:21
      +1

      Так это же разные задачи. Туннель через TCP, да ещё и со всеми этими реверансами, безумно медленный по определению. Как уже отметили, таких решений тоже хватает, и для конечного пользователя, которому через VPN только в инсту заглянуть, они вполне ОК.

      А вот ниша решений для обеспечения неблокируемой и при этом быстрой связи со своими зарубежными серверами пока была пуста, этот протокол внушает надежду. Да, его наверняка можно научиться блокировать, но пока и обычные-то VPN в массе своей работают, так что пока до таких извращений руки доберутся... а там, глядишь, то ли осёл, то ли падишах... :)

      P.S. Да, забыл, ещё же какой плюс в этом протоколе. WG - это mesh, где можно десять пиров объединить в сеть "каждый к каждому". На основе китайских TCP туннелей такое построить вообще никак не получится. Опять же, для сценария "конечные пользователи ходят к запрещённому через один сервер" оно не очень полезно, а вот для сценария "объединить в сеть несколько площадок одной организации в России и несколько за границей" - очень даже.


    1. makkarpov
      26.10.2023 17:21
      +3

      HTTPS - это TCP. Маскироваться надо под WebRTC (DTLS + SRTP + STUN).


      1. izogfif
        26.10.2023 17:21
        +2

        А его не блокируют? Мне кажется, что в любой непонятной ситуации блокировать будут все, кроме HTTPS.


      1. abrwalk
        26.10.2023 17:21

        А как же QUIC


        1. nidalee
          26.10.2023 17:21
          +1

          QUIC в РФ забанен превентивно. Или я путаю с HTTP/3?


          1. Ermowkin
            26.10.2023 17:21
            +5

            HTTP/3 это и есть UDP+QUIC


          1. vanxant
            26.10.2023 17:21
            +1

            Точнее, не забанен только для белых


      1. MiraclePtr
        26.10.2023 17:21
        +1

        Такое есть, например, в AnyConnect/OpenConnect.
        Подключение устанавливается по TLS (HTTPS), а потом, если возможно, передача данных переключается на DTLS.

        Единственная проблема - уязвимость к active probing, но в последних версия OCserv есть прогресс с этим. Ну и опенсорсный клиент использует GnuTLS, у которой характерный фингерпринт - можно использовать вместо него оригинальный цисковский клиент, либо OneConnect, либо пересобрать опенсорсный клиент с OpenSSL.


    1. quakin
      26.10.2023 17:21
      +2

      Это вы описали протоколы VLESS и Cloak. Последняя, кстати, есть в Амнезии.


    1. atrost
      26.10.2023 17:21
      +1

      Мне кажется, лучше максировать трафик, чтобы он был неотличим (без тщательного ручного анализа) от HTTPS, который передает Chrome.

      Есть готовое решение naiveproxy, писал здесь https://habr.com/ru/articles/764812/


  1. UplandDivan
    26.10.2023 17:21
    +1

    Спасибо и за нужный людям проект, и за статью. Но у меня есть пара замечаний к Амнезии. Зачем такой комбайн протоколов, большинство из которых легко и непринужденно блокируется с минимальными усилиями (а некоторые уже заведомо давно заблокированы в ряде стран)? Раз задача проекта - обход цензуры, то можно было не распылять усилия и сразу сосредоточиться на предназначенных для этого инструментах.

    Бегло поглядел инструкцию по установке - напрягает необходимость вводить куда-то логин и пароль к серверу. У конкурентов на букву "O" всё ставится одной командой из консоли без каких-либо паролей. Пока мне их подход кажется более логичным. Они базируются на одном только Shadowsocks, но всячески дорабатывают свою реализацию, как только её где-то удаётся заблокировать.


    1. pokamest_nikak
      26.10.2023 17:21
      +7

      У конкурентов на букву O всё ещё трекинг юзеров и глубокая гугловская аналитика - https://habrastorage.org/r/w1560/webt/ja/cv/qn/jacvqnbw6tqnqc16kyjyqqlcrzo.png

      Зачем кучу протоколов - в 4й версии технически два протокола - AWG и OpenVPN. AWG дает в режиме совместимости WG, а OpenVPN в режиме Pluggable Transport даёт связку с Cloak.

      По вводу пароля - был аудит от 7ASecurity - не доверяете - форкните на гитхабе репу, запустите actions - и у вас будет своя сборка.

      Да вообще, а в чем разница по секурности между вбить креденшелсы сервера в ui клиента, или запустить непонятный скрипт установки сразу на сервере? Видимо только в бренде ))


      1. iddqda
        26.10.2023 17:21
        +2

        дело может быть не в доверии и не в секурности (решается просто сменой пароля/ключа на временные)
        Не хватает прозрачности что ваш деплоймент скрипт конкретно делает
        Просто есть опасение, что ваш сценарий установки что-то нужное работающее поломает

        Скажем, есть у меня уже VPS с давно настроенными работающими полезными мне и друзьям-знакомым сервисами включая тот же WG кстати и теперь я хочу попробовать ваш чудо-проект поставить потестировать
        И нет у меня уверенности что мой работающий WG работать перестанет и конфиги с ключами всех акков не исчезнут

        Могу, конечно, чистую VPS-ку под это дело выпустить за условные $5,
        но я б лучше эту денежку вам задонатил

        И кстати, которую репу предлагаете форкать? Откуда там у вас деплоймент деплоится?


        1. Bonstor
          26.10.2023 17:21

          Только что поставил себе вайргуард через амнезию на сервер, где уже был вйргаурд. Работает и тот и тот)

          Порт просто другой выбрал да и все.


        1. pokamest_nikak
          26.10.2023 17:21
          +2

          1. iddqda
            26.10.2023 17:21

            спасибо


      1. AADogov
        26.10.2023 17:21
        +2

        Вообще, для меня логин пароли от серверов это как пин код от банковской карты. Я привык вводить только в консоль для подключения по ssh. Даже ssh клиентам не очень доверяю.

        И если все равно придется возиться с консолью, для установки сервера, то почему не сделать простое консольное меню и гайд как им пользоваться, чем требовать пароли доступа к серверу.


        1. MiraclePtr
          26.10.2023 17:21

          И если все равно придется возиться с консолью, для установки сервера

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

          Создал VPS в веб-панели у хостера, вбил IP, логин и пароль в установщик Амнезии - и все работает. Юзеру даже не нужно знать про какую-то консоль, не то что вводить там команды.


          1. xenon
            26.10.2023 17:21

            Для неопытных (которые купили новый дешевый VPS который им ценен как 5 баксов) это хорошо. Для опытных, это что-то вроде "суньте яйца в наш безопасный яйцеприемник, чтобы мы идентифицировали вас и дали вам скидку на поездку в метро".

            То, что команда амнезии борется с РКН и старается - молодцы. Но я бы скорее по простой хаутушке сделал 3-4 команды, или подключил APT репозиторий и ввел apt-get, чем "сунь яйца, нажми кнопку и доверься, что мы нигде не накосячили, а сервер полностью соответствует нашим ожиданиям".


      1. izogfif
        26.10.2023 17:21
        +2

        в чем разница по секурности между вбить креденшелсы сервера в ui клиента, или запустить непонятный скрипт установки сразу на сервере

        Если credentials не давать, то они никуда не утекут. Но да, в обоих случаях на сервере может появиться дыра (а сам сервер встать в стройные ряды ботнета), вот тут разницы нет.


    1. aborouhin
      26.10.2023 17:21
      +8

      Ну мне, скажем, идеологически что Amnezia, что Outline не заходят вообще никак, потому что не люблю чёрные ящики, которые что-то там делают за меня и выдают в итоге типовой сетап, который для меня совершенно непригоден. Ну так я и не есть ЦА данных проектов - они для обеспечения массового доступа к VPN тем, кто собрать его из кирпичиков сам не может / не хочет.

      Но главное-то, что в данном случае Amnezia как раз сделала совсем другую штуку - выпустила новый протокол (ну ОК, новую реализацию протокола), который в качестве того самого кирпичика можно взять у них отдельно и использовать для себя как угодно, ни разу не сталкиваясь со всеми этими комбайнами, требующими что-то куда-то вбивать. За что им безграничный респект.


      1. iddqda
        26.10.2023 17:21
        +1

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

        и реализация нового протокола тоже никуда не прячется - исходники открыты


  1. ultra2
    26.10.2023 17:21

    Скажите, автоматизация в Командах поддерживается для iOS приложения?


  1. vikarti
    26.10.2023 17:21

    Я же правильно понимаю что если на сервере - обычный wireguard то работать это уже не будет? И работает это даже на Linux - через tun-адаптеры а не ядерный модуль?


    1. iddqda
      26.10.2023 17:21

      в их телеге нашел скрин
      там запускается 4 докер-контейнера
      и контейнер amnezia-wg запускается на стандартном порту 51820
      не знаю учитывает ли скрипт деплоя такой сценарий что WG на хосте уже есть чтоб сменить порт контейнера, но если нет, то их контейнер просто не запустится, а ваш WG продолжит работать


      1. pokamest_nikak
        26.10.2023 17:21
        +2

        Порт рандомный при установке предлагается


    1. aborouhin
      26.10.2023 17:21

      Выше в комментариях писали, с какими параметрами оно работает с обычным WG, за счёт снижения шансов, что такой совсем немного изменённый протокол не будет заблокирован.

      Но смысл? Как раз на сервере, в отличие от клиентских устройств и роутеров, собрать amnezia-wg не составляет проблем. Но да, работать будет в userspace. По моим тестам (см. ветку комментариев выше), это имеет значимое влияние только на дохлых роутерных 32-битных CPU.


  1. Darth_Anjan
    26.10.2023 17:21
    +6

    Спасибо за труды =)
    Было бы круто, если бы под openWrt завезли пакетик...


  1. Barefoot
    26.10.2023 17:21
    +3

    Спасибо за продукт! Вы делаете очень важное дело. Пара моментов: новое приложение не позволяет добавить сервер, зависает на после выбора способа. Откатился на старое...

    Из хотелок: v2ray в shadowsocks, поддержка pac-листов (или иная синхронизация с роскомсвободой), туннелирование для отдельных приложений. Из-за последних моментов пока использую приложение shadow socks через сервер на amnezia.

    А так - очень здорово, еще раз большое спасибо!


  1. Asen
    26.10.2023 17:21
    +1

    Мобильные клиенты сделаны на основе официальных опенсорсных клиентов Wireguard?


  1. NotSlow
    26.10.2023 17:21

    В двух словах... есть ли смысл вообще вникать мне?

    Linux роутер подключается к нескольким хостам через wireguard (На конечных клиентах ничего нет, только на роутере разруливается кого куда пускать - кого напрямую, кого через какой из vpn туннелей). После начала блокировок добавил прослойку в виде cloak. С тех пор все просто работает себе...

    Но тут говорят про какие-то мегаскорости. Не пойму, будет еще быстрей чем сейчас wireguard+cloak? Или также +/-?


    1. aborouhin
      26.10.2023 17:21
      +1

      Смотря какие у Вас сейчас скорости с Cloak, какие хочется и какой роутер.

      У меня Cloak приводил к серьёзному замедлению, amnezia-wg почти нативную скорость выдаёт. Но это между серверами. На роутере можно упереться не в механику протокола, а в CPU роутера, и разницы не будет.


      1. NotSlow
        26.10.2023 17:21
        +1

        Вот это и хотел уточнить... т.е. cloak всеж медленней. Придется пробовать :(

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

        Роутер более-менее вроде:

        Но в том и проблема - увидеть на нем cpu нагрузку от vpn'ов нереально, на нуле все время :)

        Замерил только что по-быстрому:

        Напрямую 90/90 https://www.speedtest.net/result/15430950708

        Через vpn 60/80 https://www.speedtest.net/result/15430973121

        Т.е. скорость всеж не дотягивает до полной ширины канала. Но при этом процессоры на обоих концах точно не причина.


        1. aborouhin
          26.10.2023 17:21

          Ну Xeon шестиядерный и 64 Гб RAM - это уже не роутер :) Я про еле живые 32-битные ARMы говорил (а то и MIPSы под какой-нибудь OpenWRT). На даже старых, но полноценных Xeon'ах у меня на скорости 500-600 Мбит/с загрузка в пределах единиц процентов.

          Надо погонять тесты ещё на разных каналах, т.к. с Cloak падение скорости там точно нелинейное, если с 90 падает до 60, не факт, что с гига упадёт пропорционально до 666, скорее всего гораздо хуже. И я предпочитаю iperf, т.к. со спидтестом часто провайдеры мутят (приоретизируют трафик к своим тестовым серверам для своих пользователей, режут для чужих), данные непоказательные. Я на выходных попробую на двух серверах при прочих равных условиях сравнить варианты напрямую/обычный WG/amnezia-wg/Cloak/может быть, ещё Xray какой-нибудь. И то же самое, но когда с одной стороны Микротик (тут уже и на CPU надо смотреть, не только на скорость).


  1. Stanislavvv
    26.10.2023 17:21

    Сгенерить конфиг для подключения к имеющемуся серверу можно?
    А то есть сервер openvpn + cloak и было бы неплохо к нему ещё и мобильных клиентов подключить, дабы, к примеру, пустить к внутренней телефонии.


  1. alex_sh
    26.10.2023 17:21

    У меня отключен доступ по паролю. Будет ли работать, если я включу доступ по паролю, а после установки отключу? Есть ли более подробная инструкция, как подключить к своему серверу других людей?


    1. pokamest_nikak
      26.10.2023 17:21
      +2

      По ssh ключу тоже должно работать


  1. stas_grishaev
    26.10.2023 17:21
    +2

    Кроме нового протокола, Amnezia 4 версии кардинально отличается от предыдущих версий дизайном. 

    jfyi - https://amnezia-web.vercel.app/ru/downloads здесь в ссылках на загрузку win/linux/macos/github идёт версия 3, 4-ку нашёл только на https://github.com/amnezia-vpn/amnezia-client/releases


    1. pokamest_nikak
      26.10.2023 17:21

      Зачем вы ходите на бета версию сайта? Она в индекс чтоли попала?

      amnezia.org


    1. AmneziaAdept Автор
      26.10.2023 17:21
      +1

      Ошибка, заменил ссылки. Спасибо что написали.


  1. IgorShark
    26.10.2023 17:21
    -3

    Сколько еще статей будет написано про Outline'ноподобные ВПН? Какой в них смысл?


    1. MiraclePtr
      26.10.2023 17:21
      +3

      А в чем проблема, почему вы считаете что в них нет смысла?


    1. vikarti
      26.10.2023 17:21
      +2

      Смысл что есть потребность в таком. Даже для тех кто может если потребуется и более сложное что-то настроить. Как просто и массовое решение. Тем более - решение на базе wireguard с почти-родной производительностью.


    1. nidalee
      26.10.2023 17:21

      Смысл - сохранить как можно больше статей, пока их не потерли.


  1. point-13
    26.10.2023 17:21

    Спасибо за Труд


  1. sugresmax
    26.10.2023 17:21

    Мне интересно, с точки зрения безопасности, как можно вводить пароль root от сервера в каком-то непроверенном приложении?

    Или, может быть, есть какие-то альтернативные способы установки сего чудесного vpn сервера?


    1. MiraclePtr
      26.10.2023 17:21
      +1

      На ваш вопрос выше разработчики уже ответили:

      По вводу пароля - был аудит от 7ASecurity - не доверяете - форкните на гитхабе репу, запустите actions - и у вас будет своя сборка.

      Да вообще, а в чем разница по секурности между вбить креденшелсы сервера в ui клиента, или запустить непонятный скрипт установки сразу на сервере? 


      1. sugresmax
        26.10.2023 17:21

        Да вообще, а в чем разница по секурности между вбить креденшелсы сервера в ui клиента, или запустить непонятный скрипт установки сразу на сервере? 

        Никакой разницы. Вот и боязно.


    1. aborouhin
      26.10.2023 17:21
      +1

      Ну вот для кого я выше в комментариях уже целый роман написал о том, как без всяких паролей рута и пр. собрать из исходников один (!) бинарник wireguard-go хоть для сервера, хоть вообще для роутера, и дальше настраивать подключения штатным для wireguard способом :)


      1. sugresmax
        26.10.2023 17:21

        "Как без всяких" я и так знаю. Интересен именно этот подход.


        1. aborouhin
          26.10.2023 17:21
          +1

          Ну если Вы знаете (и я знаю), как сделать без всяких, то, очевидно, что этот подход не для Вас (и не для меня) :)


          1. sugresmax
            26.10.2023 17:21

            Вам по сути вопроса есть что сказать?


        1. nidalee
          26.10.2023 17:21

          Этот подход для тех, кому либо абсолютно пофигу на "безопасность" убогой впски за 5 баксов в месяц, или для тех, кто доверяет открытому коду (и может быть даже его посмотрел).


  1. DanteLFC
    26.10.2023 17:21

    Спасибо за ваш проект, развернул предыдущий вариант рядом с обычным ваергардом. Может и этот опробуем. Нестандартный вопрос - нет ли простого варианта как установить клиент на андроид телик (обычная hdmi флешка). Wireguard так из магазина вполне встал, а вот любые клиенты под андроид от вас уже нет


  1. ussrisback
    26.10.2023 17:21
    +1

    с интересом наблюдаю за поиском технических способов обойти ограничения РКН и удивляюсь наивности граждан РФ. вопрос с VPN будет решен на законодательном уровне, а не техническом. сделают статью 123 со сроком заключения от 10 лет и все. дальше вы сами решаете - играть в эту рулетку со своей жизню и судьбыми своих близких или нет...


    1. MiraclePtr
      26.10.2023 17:21

      Я об этом говорю с самой первой статьи на тему. Технические ухищрения в виде более навороченных протоколов слабо помогут против уголовных статей за их использование. Это попытка решения социально-политических проблем техническими методами, и работает оно только до определенных пределов, а дальше рано или поздно против вас будет работать не DPI, а со вся мощь репрессивно-карательной машины государства. Это не киберпанк-фильм, а реальная жизнь, увы.


    1. xenon
      26.10.2023 17:21
      +5

      1. Если могут сделать (и ничего не мешает) - почему не сделали раньше?

      2. Если что-то мешает - может оно и дальше будет мешать?

      3. Если сделают - вот тогда и будем тонуть, а пока поплаваем.

      Превентивно сдаваться из-за выдуманных гипотетических проблем, которые может быть случатся, а может не случатся - нерационально.


      1. MiraclePtr
        26.10.2023 17:21
        -2

        Если могут сделать (и ничего не мешает) - почему не сделали раньше?

        Лягушку нужно варить медленно.


    1. nidalee
      26.10.2023 17:21

      Был бы человек, а статья найдется!


  1. wokkku
    26.10.2023 17:21

    На пк amnezia вылетает при установке любого протокола, хз что делать с этим


  1. rorosin
    26.10.2023 17:21

    Добрый день, в статье вы указали, что покупать VPS можно у любого провайдера. Соответственно, если купить сервер в РФ, он будет работать? По логике нет, а если вы изобрели такой протокол, который перемещает сервер физически, то аплодирую стоя.


    1. MiraclePtr
      26.10.2023 17:21

      Многие российские хостеры предлагают возможность аренды сервера за границей, в чем проблема?


      1. rorosin
        26.10.2023 17:21

        Я указал на неточность текста в статье


  1. LeToan
    26.10.2023 17:21

    При включении ВПН большой кнопкой, полностью отрубается доступ в локальную сеть. Не похоже на ВПН для чайников. Разбираться теперь с маршрутизацией и приоритетами, что ли?


  1. select26
    26.10.2023 17:21

    Покупаем любой VPS у любого хостинг провайдера. Важно чтобы была операционная система Ubuntu (официально поддерживаемая версия — 22.04), или Debian 11. Вот тут есть пошаговые инструкции в качестве примера, но вы можете выбрать любой другой.

    Прохожу по ссылке "тут" и получаю ошибку:
    404: NOT_FOUND Code: DEPLOYMENT_NOT_FOUND ID: fra1::glxw4-1698589174999-e242efd92cc2
    This deployment cannot be found. For more information and troubleshooting, see our documentation.