---
date: 2026-05-20
type: decision
tags: [vpn, amnezia, amneziawg, macos, finland, server, incompatibility]
status: open
severity: medium
---

# AmneziaVPN macOS-клиент несовместим с v1 AmneziaWG-сервером

## TL;DR

macOS-клиент AmneziaVPN (текущей версии на 2026-05) умеет только новый **AmneziaWG v2** handshake-формат. На **v1**-серверах (старые `amnezia-awg` контейнеры) — handshake silently дропается, клиент видит `ErrorCode 305 — Тайм-аут подключения к серверу`. iOS-клиент, Windows-клиент и Linux-kernel-module `wireguard-go-amneziawg` шлют в v1-совместимом формате — продолжают работать.

## Симптомы

Mac-клиент при попытке Connect:
- На v1-сервере: шлёт **только junk-преамбулу (96-байтовые UDP-пакеты)**, реальный handshake_init (148+ байт) не уходит. Таймаут 305.
- На v2-сервере: handshake проходит, туннель поднимается, всё работает.

В tcpdump на v1-сервере видно множество одинаковых 96-байтных UDP-пакетов от Mac-клиента и **ноль ответных**. На v2-сервере — пакеты разных размеров (handshake → data 1452 байт).

## Подтверждённые случаи (2026-05-20)

| Клиент | Сервер | Контейнер | Версия | Результат |
|---|---|---|---|---|
| Mac Олега | `78.17.4.225` (НИИКН) | `amnezia-awg2` | v2 | ✓ работает |
| Mac Олега | `202.71.12.186` (finland5870) | `amnezia-awg` (7 мес) | v1 | ✗ ErrorCode 305 |
| Mac Александра (Бенелюкс) | `202.71.12.186` | v1 | v1 | ✗ ErrorCode 305 |
| iPhone Александра | `202.71.12.186` | v1 | v1 | ✓ работает |
| Win 2012R2 1С Бужарово | `78.17.4.225` | v2 | v2 | ✓ работает |
| Cudy TR3000 (kernel-mod) | `202.71.12.186` | v1 | v1 | ✓ работает |

## Как опознать v1 vs v2 на сервере

```bash
ssh root@<server> 'docker ps | grep amnezia-awg'
```
- `amnezia-awg` — v1
- `amnezia-awg2` — v2

В `wg0.conf` v2-конфиг включает поля `I1..I5` (после `H1..H4`), в v1 — нет:
```bash
docker exec <amnezia-awg|amnezia-awg2> awk '/^\[Interface\]/,/^\[Peer\]/' /opt/amnezia/awg/wg0.conf
```

## Конфиги клиентов

В `vpn://`-ключе AmneziaPanel оба формата выглядят почти одинаково (поля `I1..I5` присутствуют пустыми и в v1-конфигах). Реальная привязка к версии — на стороне сервера + версия клиентского `wireguard-go-amneziawg`.

## Решение (выбрано Олегом)

**Не трогаем v1-сервер finland5870** — там 84 активных peer (iOS/Windows/Linux/kernel-WG), которые работают. Риск перевыпуска всех конфигов перевешивает пользу.

Mac-юзерам, кто жалуется на 305, выдаём:
- Конфиг от v2-сервера `78.17.4.225` (НИИКН), либо
- Конфиг от **любого** v2-сервера в инфре Олега.

Александру (Бенелюкс) — выпущен новый конфиг от НИИКН-сервера.

## Что не сделано (отложено)

- **Параллельный v2-контейнер на finland5870** на другом UDP-порту (например `37210`) — старые v1-клиенты продолжают на `37209`, новые/Mac — на v2 `37210`. Без вмешательства в текущий контейнер, риск минимальный. Откладывается пока не накопится критическая масса Mac-юзеров.
- **Полная миграция finland5870 v1 → v2** — массовый перевыпуск 84 конфигов. Только в плановое окно даунтайма.

## Диагностика для будущих случаев

Чтобы не разбирать с нуля, чек-лист:

1. **Mac жалуется на ErrorCode 305 или тайм-аут к AmneziaVPN.**
2. Проверь — **iOS-клиент / Windows-клиент того же пользователя на том же сервере работают?** Если да — гипотеза macOS-v1-баг сильно правдоподобна.
3. **Какая версия контейнера на сервере** — `docker ps | grep amnezia` → если `amnezia-awg` (без `2`) — это v1. Если `amnezia-awg2` — v2.
4. Если v1 — выдай Mac-юзеру конфиг от v2-сервера. Не пытайся "починить" v1-контейнер.

## Снэпшот серверов на момент решения (2026-05-20)

- **finland5870.com** `202.71.12.186`: `amnezia-awg` (v1, создан ~2025-10), 84 peer, port 37209/udp. Используется как основной endpoint для роутерных podkop-туннелей: Бенелюкс, Сергей, Знаменское, НИИКН-роутер, Lipki, Михуринец и др.
- **finlandit5870.com** `78.17.4.225`: `amnezia-awg2` (v2, создан 2026-05-18), `amnezia-panel-web` (управляющая PHP-панель), полный VPN-стек (xray, shadowbox, socks5, mtproto, WA-proxy). Олег управляет конфигами отсюда через AmneziaApp.

## Связанные

- [[../projects/dttb/finland-hostkey-vps]] — карточка finland5870
- [[../projects/dttb/vpn-clients]] — клиентский реестр
- [[2026-05-20-benelux-compromise]] — параллельная история инцидента с роутером Бенелюкса
