AmneziaWG конфиг 2026: что внутри, как читать и редактировать
Структура .conf файла AmneziaWG разбор по полям: Interface, Peer, jc/jmin/jmax, magic header bytes h1-h4, AllowedIPs, MTU — что менять и зачем.
Каждый клиент AmneziaWG — на iPhone, на Android, на Mac, на Windows — хранит внутри один и тот же файл с расширением .conf. Открыть его можно в обычном блокноте: 15-25 строк текста, никакой бинарщины. В этих строках — всё, что нужно тоннелю, чтобы работать.
Конфигов у нас в Molystrix приходит по одному на устройство. Иногда люди спрашивают: можно я его открою и посмотрю, что там? Можно. И если планируете переносить настройку между приложениями, держать сразу два тоннеля или просто понимать, почему MTU стоит именно 1280 — структуру файла полезно знать.
Эта статья — построчный разбор. Где .conf лежит физически, что значат секции [Interface] и [Peer], для чего нужны магические Jc, Jmin, Jmax, S1, S2, H1-H4. Что можно поменять, не сломав соединения. И почему категорически нельзя править PrivateKey.
Где .conf лежит физически
«Лежит файл» — не всегда означает, что вы можете его открыть. Современные ОС прячут конфиги внутри песочниц приложений. На какой-то платформе путь доступен только из самого клиента, на какой-то — через root, на какой-то — через явный экспорт.
iPhone и iPad. Конфиг живёт внутри изолированного хранилища приложения AmneziaWG. Чтобы увидеть текст, откройте клиент, тапните на тоннель в списке, потом «Export tunnel». Получите файл (расшарить через Files, AirDrop, почту) или QR-код.
Android. Технически файл лежит в /data/data/org.amnezia.awg/files/ — без root туда нет доступа. Через GUI: тапнуть по тоннелю, «Export». Файл уйдёт в Downloads.
Windows. Клиент amneziawg-windows-client хранит конфиги в C:\ProgramData\AmneziaWG\Configurations\ (admin-установка) или в локальной папке пользователя. Можно открыть блокнотом, но запущенный тоннель использует копию в памяти — без реимпорта через GUI изменения не подхватятся.
macOS. Приложение из App Store хранит конфиги в системном расширении и ~/Library. Прямого пути нет — экспорт через GUI: правый клик на тоннеле → Export.
Linux. Зависит от установки. Через amneziawg-tools и awg-quick — конфиг в /etc/amnezia/amneziawg/ (обычно awg0.conf). Можно редактировать, потом awg syncconf awg0 <(awg-quick strip awg0) чтобы применить без рестарта интерфейса.
Главное правило: пока тоннель активен — не правьте файл напрямую. Отключите, отредактируйте, импортируйте заново. Иначе в лучшем случае ничего не изменится, в худшем — клиент откажется поднимать тоннель при следующем переподключении.
Пример конфига от Molystrix
Вот как выглядит реальный файл, если открыть его блокнотом. Все ключи и идентификаторы — заглушки, реальные пришли бы вам на email после оплаты.
[Interface]
PrivateKey = <client-private-key-Curve25519-base64>
Address = 10.8.0.42/32
DNS = 1.1.1.1, 1.0.0.1
MTU = 1280
Jc = 4
Jmin = 50
Jmax = 1000
S1 = 86
S2 = 574
H1 = 1742979039
H2 = 2849184293
H3 = 1483721895
H4 = 982734159
[Peer]
PublicKey = <server-public-key-Curve25519-base64>
PresharedKey = <psk-base64-optional>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = node1.molystrix.com:51820
PersistentKeepalive = 25
Две секции. [Interface] описывает ваше устройство: внутренний адрес в тоннеле, ключи, параметры маскировки. [Peer] описывает второй конец — наш сервер. Никаких дополнительных файлов, никаких сертификатов в отдельных PEM-ах.
WireGuard — и AmneziaWG как его форк — построены на peer-to-peer модели. Нет «сервера» и «клиента» как разных программ. Есть две стороны, и каждая описывает другую через секцию [Peer]. Технически конфиг на нашей стороне выглядит зеркально: ваш [Interface] — для нас [Peer], и наоборот.
Разбор [Interface] построчно
PrivateKey — приватный ключ вашего устройства. Алгоритм Curve25519, длина 32 байта, в файле — base64 (отсюда строка 44 символа с равно на конце). Генерируется один раз при создании конфига и хранится у вас и у нас в зашифрованном виде. Сервер знает только парный публичный ключ.
Считайте PrivateKey своим паролем. Не делитесь файлом с этим ключом ни с кем — даже если хочется передать настройку другу. Для друга мы выпустим отдельный конфиг.
Алгоритмы шифрования и хэширования те же, что в WireGuard: ChaCha20-Poly1305 для шифрования данных, BLAKE2s для хэширования handshake — маскируются только метаданные пакета, криптография ниже не трогается.
Address — IP-адрес вашего устройства внутри тоннеля. У нас вида 10.8.0.42/32. Маска /32 = ровно один хост. Адрес уникален в пределах нашей сети, никто другой такой же не получит, пока живая подписка. Снаружи в интернете вы видны под IP сервера, не под этим.
DNS — какие резолверы использовать, пока тоннель активен. По умолчанию — Cloudflare (1.1.1.1 и 1.0.0.1). Можно поменять на Google (8.8.8.8), Quad9 (9.9.9.9), NextDNS — любой публичный. Только не вписывайте DNS вашего домашнего провайдера: если домашний резолвер логирует запросы, весь смысл шифрования имён доменов внутри тоннеля пропадает.
MTU — максимальный размер пакета в байтах. По умолчанию 1280 — консервативное значение, влезает практически в любой канал. У чистого WireGuard дефолт 1420. Меньше MTU — меньше фрагментации, но больше overhead на байт данных. Стабильно проводной интернет — можно попробовать 1420. Мобильный или двойной NAT — оставьте 1280 или даже 1200.
Маскировочные параметры — главное отличие от WireGuard
Дальше — поля, которых в обычном WireGuard-конфиге нет вообще. То, ради чего форк создавался.
Jc (Junk count) — сколько фиктивных пакетов отправить перед настоящим handshake. Обычно 3-10. Это случайный мусор переменной длины — создаёт перед сессией сетевой шум. Первое, что видит наблюдатель — не аккуратный handshake фиксированной длины, а россыпь UDP-пакетов разной формы.
Jmin и Jmax — границы длины этих фиктивных пакетов в байтах. У нас 50 и 1000. Каждый junk-пакет — случайной длины из диапазона.
S1 и S2 — добавочные байты к двум handshake-сообщениям. В обычном WireGuard HandshakeInitiation всегда ровно 148 байт, HandshakeResponse — 92. Это известные числа, системы анализа трафика про них знают. AmneziaWG раздувает оба пакета на S1 и S2 случайных байтов — у нас 86 и 574, реальные размеры выйдут 234 и 722. У соседнего сервера будут совсем другие.
H1, H2, H3, H4 — magic header bytes. WireGuard использует четыре типа пакетов: handshake initiation (0x01), handshake response (0x02), cookie reply (0x03), transport data (0x04). Каждый пакет начинается с одного из этих байтов, и анализаторы трафика читают первый байт на лету — копеечно дёшево. AmneziaWG заменяет четыре константы на четыре случайных uint32 не меньше 5. У нас H1 = 1742979039 (HandshakeInitiation), H2 = 2849184293 (Response), и т.д. Все четыре числа уникальны для каждого сервера. Опознать пакет как WireGuard-родственный по первому байту нельзя — там произвольное число, а не привычная константа.
Критически важно: значения Jc, Jmin, Jmax, S1, S2, H1-H4 обязаны совпадать на клиенте и сервере. Иначе handshake распадётся — наш разбор пакета ожидает определённый H1-H4. Случайно поменяете H1 — тоннель просто не поднимется. Никакой внятной ошибки, просто handshake timeout.
Подробнее, чем именно AmneziaWG отличается от обычного WireGuard и зачем эта обфускация вообще нужна, — в статье про сравнение AmneziaWG и WireGuard.
Разбор [Peer] построчно
PublicKey — публичный ключ сервера. По этой строке устройство узнаёт, что подключается именно к нашему серверу, а не к подменённому посреднику. Снова base64, 44 символа. Меняется только при миграции серверной части — раз в год-два, в таком случае мы присылаем новый конфиг.
PresharedKey — опциональный дополнительный секрет, смешивается с handshake. Не обязательный, но повышает защиту от теоретических post-quantum атак: если когда-нибудь появится квантовый компьютер, способный взламывать Curve25519, у атакующего останется второй слой симметричного шифрования, который придётся подбирать перебором. Параноидальная штука, полезная.
AllowedIPs — какой трафик заворачивать в тоннель. 0.0.0.0/0, ::/0 означает «весь IPv4 и весь IPv6». Это full-tunnel конфигурация: каждый запрос уходит через нас, мимо ничего не идёт. Альтернатива — split tunnel: указать только определённые подсети, остальное пойдёт напрямую. Например, AllowedIPs = 192.168.0.0/16 направлял бы через тоннель только частные подсети, всё остальное (включая публичный интернет) шло бы через обычный канал.
Практическое ограничение: split-tunnel в WireGuard-семействе работает только на уровне IP-диапазонов. По доменам разделить нельзя — протокол не видит DNS-имён, только адреса. «Гнать через тоннель только ChatGPT, а Госуслуги напрямую» — технически невозможно. Мы пробовали реализовать «исключить российские IP» через инвертированный AllowedIPs: на iOS NetworkExtension молча сбрасывает routes к исключённым адресам, на macOS — не устанавливаются routes без литерального 0.0.0.0/0. По доменам задача решается только в других протоколах (XRay, sing-box).
Отдельный кейс — Android: в самом AmneziaWG-приложении есть per-app split (вкладка настроек тоннеля → «Apps»), где можно вручную выбрать, какие приложения гнать через тоннель, а какие напрямую. iOS и десктоп таких настроек не дают.
Endpoint — host:port сервера. UDP, не TCP. У нас node1.molystrix.com:51820. Поменяете — клиент будет долбить туда. Будет ли там работающий сервер с правильными ключами — отдельный вопрос.
PersistentKeepalive — раз в N секунд отправлять пустой пакет, чтобы NAT на роутере не забыл про сессию. Без keepalive любой роутер через несколько минут простоя выпишет UDP-mapping из таблицы, и входящие пакеты перестанут долетать. 25 секунд — стандартное значение, безопасное для всех известных NAT-таблиц.
Что в конфиге можно менять, а что нельзя
Главный практический вопрос. Что из всего этого вы реально можете отредактировать, не сломав тоннель?
Менять можно:
- MTU. Если на мобильном интернете рвутся загрузки больших файлов, попробуйте снизить с 1280 до 1200 или 1180. Реимпортируйте — должно полегчать.
- DNS. Замените на любой публичный резолвер: Quad9, NextDNS, AdGuard DNS. Только не на DNS своего провайдера.
- PersistentKeepalive. В пределах 15-120 секунд. Агрессивный мобильный NAT — попробуйте 15. Стабильное соединение и нужно поменьше пакетов — 60-120.
Менять можно, но согласованно с нами:
- Jc, Jmin, Jmax, S1, S2, H1-H4. Поменяете на клиенте — handshake не пройдёт. Если нужны другие параметры (например, для теста маршрута), мы перевыпускаем конфиг.
- Endpoint. У нас сейчас одна нода. Когда подключим вторую — перевыпустим конфиг.
- AllowedIPs. Технически можно сузить. На практике split-tunneling в WG плохо работает на iOS и macOS (см. выше) — не рекомендуем.
Менять категорически нельзя:
- PrivateKey. Уникальный ключ, привязанный к peer на сервере. Впишете строку «с потолка» — handshake не пройдёт, сервер не сможет вас опознать.
- Address. Адрес выделен из IP-pool. Впишете другой — пакеты уйдут в /dev/null, плюс возможна коллизия с чужим peer.
- PublicKey сервера. Идентификатор нашей серверной части. Меняется только при миграции — мы присылаем новый файл целиком.
Если конфига нет вообще или непонятно, какой у вас на руках — отдельная статья про где взять готовый WireGuard-конфиг покрывает все источники.
Поделиться конфигом между своими устройствами
Иногда нужно перенести настройку с одного своего устройства на другое — с iPhone на iPad, со старого Android на новый. Способов три.
QR-код. В клиенте откройте тоннель, тапните «Share QR». На втором устройстве — «+» → «Создать из QR-кода», наведите камеру на экран первого. Считывается за секунду.
Экспорт файла. В клиенте «Export tunnel» → отправить через AirDrop, Telegram saved messages, email самому себе. На втором устройстве — «+» → «Создать из файла», выбрать .conf.
Реимпорт из исходного email. Если сохранили исходное письмо от Molystrix — откройте его на новом устройстве и отсканируйте QR заново.
Чего делать нельзя ни в коем случае: делиться одним конфигом с другим человеком. Один peer = одно устройство по дизайну WireGuard. Если двое подключатся к одному peer одновременно, сервер начнёт получать пакеты с одним публичным ключом, но с двух разных IP — handshake начнёт конфликтовать, оба соединения станут рваться. Это структурное свойство протокола, не наше правило. Для второго человека выпустим отдельный конфиг — наш тариф включает до трёх устройств на подписку.
Migration между провайдерами
Решили попробовать другой сервис или переехать обратно? Никакой миграции данных — каждый .conf полностью самодостаточен, все ключи и параметры внутри.
AmneziaWG-клиент поддерживает несколько тоннелей одновременно (в списке). Импортируете старый, импортируете новый, переключаете тумблер по очереди — сравниваете скорость, стабильность. Активным может быть только один (два full-tunnel конфига конфликтовали бы за дефолтный маршрут).
Когда переехали — удалите старый через долгое нажатие → «Delete». На сервере старого провайдера peer обычно отзывается автоматически после окончания подписки. У нас — сразу при отмене.
Если конфига на руках нет — гайды по установке клиента и получению первого конфига есть для всех платформ: скачать AmneziaWG на все платформы и настройка тоннеля на iPhone.
Часто задаваемые вопросы
Что такое Jc в моём AmneziaWG-конфиге?
Junk count — количество фиктивных UDP-пакетов случайной длины, которые клиент отправит на сервер перед настоящим WireGuard handshake. Размер каждого — случайное число в диапазоне [Jmin, Jmax]. Первая линия маскировки: наблюдатель видит россыпь UDP-пакетов, а не аккуратный handshake фиксированного размера. У нас в Molystrix Jc = 4, диапазон длин 50-1000 байт.
Можно ли отредактировать MTU в работающем конфиге?
Можно, но не на лету. Алгоритм: отключите тоннель, экспортируйте конфиг в файл, откройте блокнотом, поменяйте MTU = 1280 на нужное (1180-1420 — рабочий диапазон), импортируйте обратно, удалите старую запись. Прямое редактирование файла в C:\ProgramData\AmneziaWG\Configurations\ без реимпорта не подхватится. На Linux с awg-quick достаточно awg syncconf.
Что такое PersistentKeepalive и зачем он 25 секунд?
Это интервал, через который клиент отправляет пустой UDP-пакет на сервер, чтобы NAT-таблица роутера или оператора не забыла про сессию. Без keepalive после нескольких минут простоя входящие пакеты от сервера перестанут долетать. 25 секунд — безопасный интервал для всех известных NAT-таблиц, которые держат UDP-mapping живым 30-120 секунд. Меньше 25 — лишний overhead, больше 60 — рискуете попасть на агрессивный мобильный NAT.
Безопасно ли отправить свой .conf по email самому себе?
Технически — это передача PrivateKey через канал, который вы не контролируете. Если email-аккаунт защищён двухфакторкой — практически безопасно. Большинство так и переносят. Если email скомпрометирован — атакующий получит ваш ключ. Альтернатива — QR-код с экрана на экран: ключ нигде не задерживается.
Что если я случайно поменял PrivateKey в файле?
Тоннель перестанет подниматься. Сервер видит handshake с публичным ключом, которому не соответствует ни один peer, и отвечает молчанием. В клиенте — бесконечный «Подключение…» или «Handshake timeout». Решение: вернуть исходное значение, реимпортировать. Если оригинал потеряли — напишите нам, перевыпустим бесплатно.
В чём отличие AmneziaWG-конфига от обычного WireGuard?
Структурно — [Interface] и [Peer] те же самые, поля PrivateKey, Address, DNS, PublicKey, Endpoint, AllowedIPs идентичны. Отличие — 9 дополнительных полей внутри [Interface]: Jc, Jmin, Jmax, S1, S2, H1, H2, H3, H4. Стандартный WireGuard-клиент откроет такой файл без ошибки, но проигнорирует эти 9 параметров и поднимет соединение как обычный WireGuard — форк теряет смысл. Для AmneziaWG-конфига нужен AmneziaWG-клиент.
Можно ли использовать один конфиг на телефоне и компе одновременно?
Нет. Один конфиг = один peer = один публичный ключ. Если два устройства подключатся с одним ключом, сервер каждый раз перезаписывает «текущий» IP — пакеты от одного начнут улетать на адрес другого, оба соединения станут рваться. Правильный путь: отдельный конфиг для каждого устройства. У нас в подписку входит до трёх устройств.
Где взять конфиг если его нет?
После оплаты в Molystrix конфиг приходит на email в течение нескольких минут — текстовый molystrix.conf плюс QR-код в самом письме. Сканируйте QR с экрана или импортируйте файл через «+» → «Создать из файла». Если письма нет — проверьте «Спам» (Unisender Go иногда туда попадает у Mail.ru и Yandex.Mail), потом напишите на support@molystrix.com. Общий разбор источников — в статье про готовый WireGuard-конфиг.
Параметры маскировки можно посмотреть на сервере?
Только владельцу сервера. У нас Jc, Jmin, Jmax, S1, S2, H1-H4 хранятся в JSONB-поле базы для каждой ноды — при перевыпуске выдаём те же значения. Сторонний наблюдатель извне эти параметры не вычислит: без приватного ключа алгоритм маскировки определить нельзя. Каждая нода Molystrix получает свой уникальный набор.
Итог
Если совсем коротко.
- Конфиг AmneziaWG — обычный текстовый файл из двух секций.
[Interface]про ваше устройство,[Peer]про наш сервер. - Главное отличие от обычного WireGuard — 9 параметров маскировки:
Jc,Jmin,Jmax,S1,S2,H1-H4. Они должны совпадать на обеих сторонах, менять самостоятельно нельзя. MTU,DNS,PersistentKeepaliveменять можно.PrivateKey,Address,PublicKey,Endpoint, маскировочные параметры — нельзя.- Один конфиг = одно устройство по дизайну. Для второго устройства нужен отдельный файл с собственными ключами.
В Molystrix этим всем заниматься вам не приходится. После оплаты на email прилетает готовый QR-код с правильными параметрами для нашей ноды, импортируется в AmneziaWG-приложение за десять секунд, работает. Тариф 249 ₽ в месяц, до трёх устройств на одну подписку — то есть три разных конфига, каждый со своими ключами, без доплат. Если на конкретном маршруте через какое-то время начинаются просадки — поддержка перевыпускает конфиг с другим набором параметров маскировки бесплатно, сервер остаётся тем же.
Подключите Molystrix за 2 минуты
Защищённое соединение для работы с международными сервисами. Протокол AmneziaWG, серверы в Европе, 3 устройства, оплата картой или СБП.