Обновить

Свой AmneziaWG пару лет спустя: что ломается в быту и что я с этим делаю

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.2K
Всего голосов 10: ↑10 и ↓0+13
Комментарии13

Комментарии 13

 Сервер-вход решает, куда направить пакет, по списку российских сетей: список берётся из открытой зоны ipdeny, грузится в ipset, трафик к адресам из него идёт мимо туннеля, а остальное помечается и уходит на выход. На клиенте настраивать нечего - добавляете его обычным manage add на сервере-входе, деление целиком на сервере и одинаковое для всех.

вот это самое неудобное всей инсталляции. нормальные xray, v2raya клиенты в один клик подцепляют файл loyalsoldiers.dat и нет всех этих прыжков

Так и есть, для себя одного клиентский роутинг проще - в статье про это и написано, хватает AllowedIPs на клиенте, без всякого каскада. И geosite в xray штука удобная, тут не спорю.

Каскад нужен в другом случае: когда деление держишь на сервере и не хочешь лезть в каждого клиента. Раздал семье QR в приложении - и у всех сразу рунет напрямую, остальное за границу, без .dat и правил. Для одного пользователя это правда перебор.

Я некоторое время тоже игрался с амнезией..но в итоге ушёл от неё во первых потому, что многие датацентры а может и не только здорово шейпят одиночные udp соединения..те если с сравнивать множественными агрессивными типа hy2 то разница в скорости довольно большая .. Ну и постоянно приходилось подкручивать параметры обфускации в зависимости от операторов ..мест и т.д. для меня оказался не самый удобный вариант )

многие датацентры а может и не только здорово шейпят одиночные udp соединения

так ведь суть сети в дц чтобы трафик шёл без ограничений, это же не домашний интернет какой-то... я таких не видел

множественными агрессивными типа hy2

hy2 работает через одно соединение, с wg разница в том что к каждому tcp соединению внутри туннеля добавляется bbr/brutal congestion control из-за чего может работать гораздо быстрее wg, хотя при желании можно сделать тоже самое и на wg/openvpn и др.

Почти везде столкнулся с тем что что udp шейпят..при канале в 1гигабит мне естественно не хотелось большую её часть терять..так вот проведя множество экспериментов на абсолютно разных дц я точно могу сказать что 90 процентов из них шейпят .. Пока подбирал дц буржуйский для ВПС попробовал около 15..от самых известных до вообще нонеймов..везде я упирался в лимит до 450мб в секунду по udp через амнезию..а где то и до 300..и тут же овпн через tcp давал 900 и та же hy2 .. Сначала я думал что проблема именно в амнезии потому тестил udp так же через iperf и картина та же..по tcp норм по udp тот же лимит что у умнезии получался..

ну так вы получили ваши мегабиты через hy2, значит всё таки на udp нет шейпинга

нету такого шейпера который будет шейпить любой udp трафик, но не hysteria2

Да вы правы ..под моножественными соединениями я имел ввиду как раз поведение алгоритма брутал..те обычный удп вполне себе режется шейпером который может задерживать пакеты .. Соответственно при потерях в 2-4 процента у обычного удп падает скорость .. А у hy2 нет т.к. он продолжает продавливть канал ни смотря на потери..не знаю как ещё по другому выразить свою мысль но я думаю вы поняли что я имею ввиду ) и о каком недостатке амензии говорю)

Справедливо, для гигабита на быстром канале hy2 с агрессивным congestion control выжмет больше - 0ka выше верно разложил, не поспоришь. Но это другая задача. Козырь у Амнезии другой - лёгкость: WireGuard в ядре, копеечный VPS почти не грузится, на клиенте просто приложение на телефоне (хочешь - и бота-раздатчика в докере рядом, серверу без разницы). Для дома 300-450 Мбит за глаза, а весь смысл - проскочить DPI, не теряя этой лёгкости. Возни с настройкой под операторов, кстати, стало меньше - есть пресет и таблица с рецептами.

Я не проверял ваш скрипт, но меня интересует установка Амнезия сервера под Proxmox. Там легковесные контейнеры — LXC. Скажите, ваш скрипт сможет работать в таких условиях?

P.S. сам не проверял не из-за лени, а потому что в дороге.

Прямо внутри LXC - нет. Я ставлю AmneziaWG модулем ядра через DKMS, а контейнер делит ядро с хостом и свой модуль загрузить не даёт. На Proxmox есть два рабочих пути:

  1. Отдать VPN отдельную KVM-виртуалку. Там своё ядро, и скрипт отрабатывает ровно как на обычном VPS, без танцев с бубном. Я бы выбрал этот - проще всего.

  2. Остаться в LXC, но ставить userspace-вариант amneziawg-go: модуль ядра ему не нужен, работает через /dev/net/tun. Мой инсталлятор этот путь не покрывает (он намеренно kernel-native ради скорости), но в ADVANCED.md есть ручной рецепт. Нужен privileged-контейнер либо unprivileged с проброшенным /dev/net/tun и CAP_NET_ADMIN, плюс nesting для iptables. По скорости хуже kernel-native, ориентир +30-50% CPU на гигабите.

Раздел про LXC: https://github.com/bivlked/amneziawg-installer/blob/main/ADVANCED.md#lxc-userspace-adv

Если пойдёте по userspace и упрётесь - заходите в Issues, разберёмся.

Для тех кто привык к функционалу нормального роутера/файрволла - можете поглядеть мой проект Cascade. Я профессиональный сетевой инженер с 23 годами опыта в networking/security.
https://github.com/JohnnyVBut/cascade/blob/master/docs/FEATURES.ru.md
Аналогов по функционалу нет (я не нашел по крайней мере). Контрибьюторы - welcome.

Спасибо, гляну на досуге. Только у нас разные истории: у вас, судя по Docker с панелью, роутер/файрвол с веб-мордой; у меня наоборот - голый kernel-native установщик под одну задачу, без докера и демонов, чтобы на копеечном VPS ничего лишнего не молотило. Так что не пересекаемся - скорее про разные сценарии. Удачи с проектом.

Два с лишним года назад оплатил VPS в Германии с минимальными характеристиками через российского хостера. Установил там Amnezia Self-hosted с помощью их же приложения и root доступа. С тех пор не было ни разу причины зайти на сервер. Все управление, в том числе доступом, через приложение. Удобно и без лишних сложностей)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации