Amnezia JSON: форматы конфигураций, раздельное туннелирование и автоматизация

Разбираемся, что такое Amnezia JSON, как использовать конфигурации XRay Reality, настраивать раздельное туннелирование и автоматизировать создание списков сайтов.

Что такое Amnezia JSON и зачем он нужен

AmneziaVPN — это клиент с открытым исходным кодом, который поддерживает несколько форматов конфигураций для подключения к VPN-серверам. Среди них есть и JSON. В отличие от привычных .ovpn или .conf, JSON в Amnezia используется не для всех протоколов, а только для XRay Reality, а также для импорта конфигураций XRay VMESS и VLESS.

Формат JSON — это текстовый файл, в котором данные организованы в виде пар «ключ — значение». Для VPN это удобно, потому что структура позволяет хранить вложенные параметры: адрес сервера, идентификатор пользователя, публичный ключ, shortId и другие настройки. AmneziaVPN умеет читать такие файлы и создавать на их основе рабочие подключения.

Важно понимать: если вы используете Amnezia Self-hosted, то при настройке собственного сервера приложение само генерирует конфигурации в нужном формате. JSON вам может понадобиться, когда вы хотите импортировать уже готовый профиль от другого пользователя или из другого клиента, например, из v2rayN или аналогичных инструментов.

Поддерживаемые форматы конфигураций в AmneziaVPN

AmneziaVPN поддерживает несколько форматов, и каждый из них предназначен для своего сценария:

  • .vpn — нативный формат AmneziaVPN. Создаётся при нажатии «Поделиться VPN» и выборе пункта «Для приложения AmneziaVPN». Содержит все настройки подключения, включая протоколы и параметры туннелирования.
  • .ovpn — стандартный формат OpenVPN. Подходит для использования в OpenVPN, OpenVPN Connect и других клиентах, поддерживающих этот протокол.
  • .conf — нативный формат WireGuard. Используется в официальном приложении WireGuard и совместимых клиентах.
  • .json — формат для XRay Reality. Также позволяет импортировать конфигурации XRay VMESS и VLESS, но создать VPN с этими протоколами через Amnezia нельзя.

Выбор формата зависит от того, куда вы хотите перенести конфигурацию. Если вы остаётесь в экосистеме Amnezia, проще всего использовать .vpn. Если нужно подключиться через сторонний клиент, выбирайте .ovpn или .conf. JSON пригодится для XRay-совместимых приложений.

Как устроен JSON-конфиг для XRay Reality

JSON-конфигурация для XRay Reality — это структурированный файл, который описывает параметры подключения к серверу. Внутри вы найдёте такие поля, как hostname (адрес сервера), port (порт), protocol (протокол), settings (настройки), streamSettings (параметры транспортного уровня) и другие.

Пример типичного JSON для XRay Reality может выглядеть так:

{
  "hostname": "example.com",
  "port": 443,
  "protocol": "vless",
  "settings": {
    "id": "uuid-здесь",
    "encryption": "none"
  },
  "streamSettings": {
    "network": "tcp",
    "security": "reality",
    "realitySettings": {
      "publicKey": "публичный-ключ",
      "shortId": "короткий-id"
    }
  }
}

Обратите внимание: в AmneziaVPN импорт JSON возможен только для XRay Reality. Если вы попытаетесь импортировать конфигурацию VMESS или VLESS, приложение может принять её, но не сможет создать полноценное VPN-подключение на основе этих протоколов. Это ограничение важно учитывать, если вы планируете использовать Amnezia как основной клиент.

Раздельное туннелирование: зачем оно нужно

Раздельное туннелирование (split tunneling) — это функция, которая позволяет направлять трафик выбранных приложений или сайтов через VPN, а остальной — напрямую. Это полезно, когда вы хотите, например, чтобы браузер работал через VPN, а мессенджер или торрент-клиент — через обычное подключение.

В AmneziaVPN раздельное туннелирование реализовано на уровне приложений. Вы можете выбрать конкретные программы, которые будут работать вне VPN. Это удобно для:

  • экономии трафика, если VPN-сервер имеет лимиты;
  • доступа к локальным ресурсам, которые блокируются при VPN-подключении;
  • повышения скорости для приложений, которым не нужна анонимность.

Настройка проста: в главном окне AmneziaVPN нажмите на «Раздельное туннелирование выключено», выберите режим «Раздельное туннелирование приложений», добавьте нужные приложения через «+» и включите переключатель. После этого выбранные программы будут работать напрямую, а остальные — через VPN.

Как добавить приложение в исключения AmneziaVPN

Процесс добавления приложения в исключения одинаков для Windows и Android, хотя на Android он немного проще. На Windows вы можете выбрать исполняемый файл программы, например, Brave.exe, прямо с рабочего стола или из папки установки. На Android достаточно выбрать приложение из списка установленных.

Пошаговая инструкция для Windows:

  1. Запустите AmneziaVPN, но не подключайтесь.
  2. Нажмите на «Раздельное туннелирование выключено».
  3. Выберите «Раздельное туннелирование приложений».
  4. Нажмите «+» и укажите путь к исполняемому файлу приложения.
  5. Убедитесь, что переключатель раздельного туннелирования включён.
  6. Вернитесь на главный экран — статус должен измениться на «Раздельное туннелирование включено».

После этого выбранное приложение будет использовать прямое подключение, а остальные — VPN. Проверить это можно, например, открыв сайт 2ip.ru в браузере, который вы добавили в исключения, и сравнив IP-адрес с тем, который виден в другом браузере.

Автоматизация создания JSON-списков сайтов

Иногда возникает задача подготовить JSON-файл со списком сайтов для AmneziaVPN. Например, для раздельного туннелирования по сайтам или для массового импорта конфигураций. Вручную создавать такой файл утомительно, поэтому можно автоматизировать процесс с помощью скриптов.

Один из подходов — использовать AutoHotkey (AHK). Скрипт читает текстовый файл, где каждая строка содержит имя сайта, и преобразует его в JSON-массив объектов с полем hostname. Например, из файла:

example.com
another.org

получается:

[
  {
    "hostname": "example.com"
  },
  {
    "hostname": "another.org"
  }
]

Такой скрипт может быть полезен, если вы часто обновляете списки сайтов для туннелирования. Однако важно помнить, что AmneziaVPN не имеет официального API для импорта таких списков, поэтому результат нужно будет вручную добавить в конфигурацию.

Пример скрипта на AutoHotkey для генерации JSON

Рассмотрим простой скрипт на AHK v2, который преобразует текстовый файл со списком сайтов в JSON. Основная идея — прочитать файл, обработать каждую строку и записать результат в новый файл с расширением .json.

Вот базовая версия:

if !sites := FileSelect(1,, 'Список сайтов', 'Documents (*.txt)')
    ExitApp
sitesJson := SubStr(sites, 1, -3) . 'json'
try FileDelete sitesJson
i := '  '  ; отступ
s := Trim(FileRead(sites, '`n'), '`n`t ')
s := RegExReplace(s, '\V+', i . '{`n' . i . i . '"hostname": "$0"`n' . i . '},')
s := '[`n' . RTrim(s, ',') . '`n]'
FileAppend s, sitesJson

Этот скрипт использует регулярное выражение \V+, которое захватывает все символы, кроме вертикальных пробелов (то есть каждую строку). Затем каждая строка оборачивается в объект JSON. В результате получается корректный массив.

Если вы не знакомы с AHK, можно использовать другие инструменты, например, Python или PowerShell. Главное — понимать структуру JSON и правильно экранировать кавычки.

Ограничения и подводные камни при работе с JSON в Amnezia

При работе с JSON-конфигурациями в AmneziaVPN важно учитывать несколько ограничений:

  • Только XRay Reality: импорт JSON работает только для XRay Reality. VMESS и VLESS не поддерживаются для создания VPN.
  • Ручная проверка: после импорта JSON всегда проверяйте подключение. Неверные параметры (например, неправильный publicKey) приведут к ошибке.
  • Совместимость: не все JSON-файлы, созданные для v2ray, будут корректно импортированы. Amnezia ожидает определённую структуру.
  • Безопасность: не передавайте свои конфигурационные файлы третьим лицам, так как они содержат ключи доступа.

Также помните, что автоматически сгенерированные списки сайтов не являются официальной функцией AmneziaVPN. Они могут пригодиться для личного использования, но не гарантируют полной совместимости.

Практические советы по использованию AmneziaVPN

Чтобы получить максимум от AmneziaVPN, следуйте нескольким рекомендациям:

  • Используйте раздельное туннелирование для приложений, которые не требуют VPN. Это снизит нагрузку на сервер и ускорит работу.
  • Регулярно обновляйте приложение — разработчики исправляют ошибки и добавляют новые функции.
  • Делайте резервные копии конфигураций в формате .vpn, чтобы быстро восстановить подключение после переустановки.
  • Проверяйте скорость через разные протоколы: WireGuard обычно быстрее, но OpenVPN может быть стабильнее в некоторых сетях.
  • Используйте KillSwitch, чтобы предотвратить утечку трафика при обрыве VPN.

Если вы используете Amnezia Self-hosted, настройте собственный сервер — это даст больше контроля и безопасности, чем публичные VPN-сервисы.

Вопросы и ответы

Можно ли импортировать JSON-конфигурацию VMESS в AmneziaVPN?

Да, AmneziaVPN поддерживает импорт конфигураций XRay VMESS и VLESS в формате JSON. Однако создать VPN-подключение с этими протоколами через Amnezia нельзя. Импорт возможен только для XRay Reality. Если вы попытаетесь использовать VMESS или VLESS, приложение может принять файл, но не сможет установить соединение.

Чем отличается формат .vpn от .json в AmneziaVPN?

Формат .vpn — это нативный формат AmneziaVPN, который сохраняет все настройки подключения, включая протоколы, параметры туннелирования и ключи. Он используется для обмена конфигурациями между устройствами с AmneziaVPN. Формат .json — это универсальный текстовый формат, который применяется только для XRay Reality. Он может быть импортирован в другие XRay-совместимые клиенты, но не содержит всех настроек Amnezia.

Как включить раздельное туннелирование в AmneziaVPN?

Запустите AmneziaVPN, но не подключайтесь. На главном экране нажмите на «Раздельное туннелирование выключено», выберите режим «Раздельное туннелирование приложений», добавьте нужные приложения через «+» и включите переключатель. После этого выбранные приложения будут работать напрямую, а остальные — через VPN. Статус на главном экране изменится на «Раздельное туннелирование включено».

Какие протоколы поддерживает AmneziaVPN?

AmneziaVPN поддерживает несколько протоколов: OpenVPN, WireGuard, AmneziaWG и XRay Reality. Для каждого протокола используется свой формат конфигурации: .ovpn для OpenVPN, .conf для WireGuard, .json для XRay Reality. AmneziaWG — это собственная разработка Amnezia, которая также поддерживается приложением.

Можно ли автоматически создать JSON-файл со списком сайтов для Amnezia?

Да, можно. Например, с помощью скрипта на AutoHotkey, который читает текстовый файл со списком сайтов и преобразует его в JSON-массив с полем hostname. Такой скрипт полезен для автоматизации, но помните, что AmneziaVPN не имеет официальной функции импорта таких списков, поэтому результат нужно будет вручную добавить в конфигурацию.

Что делать, если импортированный JSON-конфиг не работает?

Проверьте структуру JSON: убедитесь, что все обязательные поля заполнены (hostname, port, protocol, settings, streamSettings). Также проверьте правильность publicKey и shortId — они должны соответствовать серверу. Если ошибка сохраняется, попробуйте создать конфигурацию через AmneziaVPN самостоятельно и сравните параметры. Также убедитесь, что вы используете XRay Reality, а не VMESS или VLESS.