Перейти к основному содержимому

Принцип работы Amnezia

Что такое Amnezia?

AmneziaVPN – бесплатный open-source мультипротокольный VPN клиент с функцией настройки собственного VPN сервера, или другими словами self-hosted VPN.

Как Amnezia создает VPN на базе VPS?

При первом подключении, приложение автоматически генерирует новую пару ключей для протокола и формирует запрос на сертификат (Certificate Signing Request, CSR). Запрос на сертификат, включающий открытый ключ, затем передаётся на сервер для подписи и выдачи соответствующего X.509 сертификата, обеспечивающего аутентификацию и безопасность соединения.

Каким образом Amnezia подключается к созданному VPN?

После внесения пользователем IP логина и пароля от VPS приложение подключается к серверу по SSH, устанавливает Docker и запускает серверные контейнеры Amnezia. Для каждого протокола подключения запускается отдельный контейнер, генерируются ключи и корневой сертификат. После того как сервер настроен, можно подключаться с помощью VPN к этому серверу.

Как работает маскировка трафика?

Маскировка трафика есть у протоколов Shadowsocks, OpenVPN over Cloak и XRay Reality . AmneziaWG также имеет защиту от обнаружения, но работает по другому принципу.

Shadowsocks

Shadowsocks основан на прокси-протоколе SOCKS5, который защищает соединение с помощью шифра AEAD — примерно по тем же принципам, что и туннель SSH. Соединение ShadowSocks сложно идентифицировать потому что оно  практически идентично обычному соединению HTTPS. Однако некоторые системы анализа трафика все-таки умеют распознавать соединение ShadowSocks, поэтому в странах с высоким уровнем цензуры мы рекомендуем использовать AmneziaWG.

OpenVPN over Cloak

В связке OpenVPN over Cloak за маскировку трафика отвечает плагин Cloak. Он может изменять метаданные пакетов таким образом, что он полностью маскирует VPN-трафик под обычный Web-трафик, а также защищает VPN от обнаружения методом Active Probing. Это делает его очень устойчивым  для обнаружения и блокировки. Сразу после получения первого пакета данных Cloak аутентифицирует входящее соединение. В случае сбоя аутентификации плагин  маскирует сервер под фейковый веб-сайт, а ваш VPN становится незаметным для систем анализа. 

XRay Reality

Работа XTLS-Reality основывается на тех же принципах, что и работа Cloak - VPN маскируется под web трафик, с применением защиты от active probing. Основой работы является то, что на этапе TLS-хендшейка в момент чтения ClientHello протокол может отличить клиента от цензора. Если опознан клиент (“свой”), сервер работает как прокси, а если цензор (“чужой”), то TLS подключение передается на какой-нибудь другой абсолютно реальный хост с TLS, на который не распространяются блокировки. Таким образом, клиент или цензор, желающий методом active probing проверить, а что же прячется на том конце, получит настоящий TLS-сертификат от этого сайта и настоящие данные с этого сервера.

AmneziaWG

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.

Обращайтесь в чат за помощью, если что-то не получается