Call the testers: AmneziaWG protocol

в официальном WG все именно так, и на офф сайте в гайде по настройке это есть

С официальным в большинстве случаев используется и в большинстве гайдов описан wg-quick, который берёт адрес (и ещё несколько параметров, перечисленных в его мане, неизвестных wg) из конфига. Для тех, кто не пользовался чистым wg - тот момент, что wg setconf ругается на тот самый конфиг, который wg-quick принимал на ура, может быть неочевиден, как и показал пост @spirt выше. Поэтому и пояснил.
Но в целом, пожалуй, и тут лучше и wg-quick дособрать, да, а то у меня какой-то промежуточный вариант получился - уже с wg, но ещё без wg-quick :slight_smile:

Завелся на арче , скорость на первый взгляд как на родном вайргуарде. Только почему-то виндовс клиент(амнезия) не работает. Wireshark вообще не показывает пакетов в строну сервера во время подключения. Проверял на вин10 и вин11. На андроиде всё ок.

Завёлся на Mikrotik RB3011 (arm32, в контейнере на базе Alpine). Где-то я только накосячил с кросс-компиляцией wg, не запускается, но обошёлся без него, берём nc и пишем настройки в сокет, от wg не сильно много облегчения в этом вопросе. Можно сделать контейнер, которые все настройки будет брать из переменных окружения, настроенных в Микротике (и сделаю).

Производительность разочаровала. 2 ядра по 1,4 ГГц, при трафике всего 30 Мбит/с загрузка CPU 75-85%. С родым Wireguard микротика держится в пределах 30%. Сейчас с того роутера, на котором поднял для теста amnezia-wg, больше скорость и без VPN не получается, следующий раз попробую на более шустром канале, но что-то мне подсказывает, что в потолок по CPU упрусь очень скоро :frowning:

P.S. Кто ещё будет заморачиваться с применением wireguard-go в чистом виде без wg - чтобы получить из ключа, который генерит wg и который в обычном конфиге для wg-quick указывается, ключ, который можно напрямую скормить в сокет с командой set, надо исполнить следующее: “echo your_key_from_wg_conf | base64 -d | xxd -p -c 256” Может, это я один такой недогадливый, но я на этот момент час потратил, пока исходники wg не почитал. А ведь должен мне был знак “=” в конце ключа сразу намекнуть, что это base64, и прежде чем его кодировать в hex, надо его раскодировать…

вы не разбирались с wg-quick? у меня собранный из гитхаба amnezia-wg-tools почему-то всё равно ругается на неверный параметр. без него очень грустно )

Нет, я решил обойтись одним wireguard-go. По ходу, я даже wg под какую-то не ту разновидность arm32 собрал, а с учётом моего сценария использования (все параметры надо брать из переменных окружения, а не из файла) никакого смысла в wg особого нет, чем десять раз вызывать wg set, проще echo -e “set=1\n\private_key=…\n…\n\n” | nc local:/var/run/wireguard/wgXX.sock" вызвать один раз и ip два раза.

Ну а если wg есть - то wg-quick заменяется ровно на три команды - wg setconf, ip address add и ip link set. Ну ещё если у Вас там в PostUp что-то было - то вызвать его вручную. Особых проблем не вижу.

@spirt, берешь свой conf, комментируешь строку с Address, ниже добавляешь нужные параметры:
Jc=uint16 Jmin=uint16 Jmax=uint16 S1=uint16 S2=uint16 H1=uint32 H2=uint32 H3=uint32 H4=uint32

после:
wg setconf <interface> conf-file
ip (-6) address add <какой там был закомментированный адрес> dev <interface>
ip link set mtu 1404 up dev <interface>
#по поводу mtu не уверен
ip (-6) route add <адрес пира> dev <interface>
и проверяешь пингом

PS: У меня wireguard-wg (amnezia-wg) собранная статически занимает меньше места:
в Makefile заменить
go build -v -o "$@"
на
CGO_ENABLED=0 go build -v -trimpath -ldflags "-s -w" -o "$@"

Спасибо всем за развернутые ответы. С сервером разобрались более менее ) теперь возникает проблема на линукс-клиенте c дефолтным маршрутом. клиент-сервер друг друга пингуют, но стоит добавить на клиенте ip r add 0.0.0.0/0 metric 1 dev wg0 , всё глохнет. что не так опять ?)

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

ждём модуль ядра ) и amnezia-wg-quick ) я конечно понимаю unix-way , все дела, но удобно же )

win клиент амнезия не работает. трафика нет с него вообще. проверили на много всяких разных виндовс.
на этих же компах прекрасно работают openvpn wintun, tun, dco, wireguard оригинал , sing-box system, gvisor, mixed.

Пару слов о том, как сделать конфиг для мобильного приложения AmneziaVPN:

  1. Заполнить шаблон параметрами своего сервера:
    a-conf.example.json (1.7 KB)
    Очень внимательно. По непонятным причинам многие параметры указываются трижды.
  2. Запустить прикрепленный скрипт и вставить текст полученного конфига:
    a-conf.py (1.0 KB)
    После нажатия Enter параметры будут упакованы в строку вида vpn://… которую можно импортировать в мобильном приложении.

Для работы скрипта требуется PyQt6. Если необходимо установить:
# pip install PyQt6

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

Что вы имеете в виду? У вас не подключается приложение или в чем заключается ошибка?

Понимаю что проблема не самая важная, но стало интересно. Попробовал выложенным выше скриптом сгенерировать конфиг для своего обычного WG сервера (по вашей рекомендации выставлены Jc, Jmin, Jmax, остальные поля нулевые). Мобильное приложение его приняло и позволило подключаться, никаких проблем. Десктопная версия конфиг тоже приняла, но подключаться отказывается- кнопка просто не реагирует на нажатия. Видимо, в десктопе как-то подругому проверяется конфиг?
a-conf.json (1,3 КБ)

да, не подключается. Просто бесконечно крутит - “подключение” . wireshark не показывает пакетов в сторону сервера

Интересно, для Entware (Keenetic) реализация этого протокола планируется? Обычный WG на новых arm-кинетиках просто спасение по скорости и удобству…

Это tun-based софт. Если есть шелл, entware и tun, будет работать.
Но

  1. GO программы очень жирные. без флэшки, наверно, не обойтись
  2. Что там по RAM ? 64 может быть мало

В интерфейс вряд ли проведут. Все-таки что-такое кинетик производитель и что такое этот проект

Обновил шаблон. Похоже параметр PresharedKey обязателен для десктопной версии.
a-conf.example.json (1.7 KB)

Да в веб-интерфейсе и не надо, если есть OPKG :slight_smile: В новых ARM-кинетиках (Peak, Ultra) по 256 Мб хранилище, я без проблем туда ставлю все нужные пакеты OPKG, флэшку не использую. А оперативки там 512. Очень удачные аппараты получились, лучше них только RB5009.

Отписали вам в ЛС.

Здравствуйте
Установка на свой сервер только через приложение?
Планируется ли docker вариант для самостоятельной установки и настройки как в своё время wirehole/ DWG и т.д.?
Заранее спасибо за ответ :wink: