github hoaxisr/awg-manager v2.17.1

3 hours ago

Исправления

  • Туннель sing-box получает разрешение межсетевого экрана и для IPv6 — интерфейс режимов «Политики + tun» и FakeIP поднимается с адресом IPv6, а в «Политики + tun» на него паркуется ещё и маршрут по умолчанию для IPv6. Разрешение же ставилось только для IPv4: у роутера для IPv6 отдельный список доступа, и правило IPv4 его не покрывает. У кого провайдер выдаёт IPv6, такой трафик упирался в фильтр — а обойти туннель ему негде, маршрут по умолчанию ведёт в него.

    Теперь рядом с разрешением для IPv4 ставится такое же для IPv6 — там, где у интерфейса адрес IPv6 есть; при выключении режима оно снимается тем же порядком. Обновление поверх уже включённого режима доставляет разрешение ближайшей сверкой, перезапускать режим не нужно.

  • «Сохранять адреса клиентов» больше не требует перезапуска режима — опция переводит выбранные сети на static-NAT, чтобы sing-box видел устройства по их настоящим адресам, а не под одним адресом tun-шлюза. Применялась она только в момент подъёма режима «Политики + tun»: включённая при уже работающем режиме, она сохранялась в настройках, показывалась включённой со списком сетей — и не делала на роутере ничего. Маскарад оставался на месте, клиенты по-прежнему приходили одним адресом, и понять это по интерфейсу было нельзя. То же происходило с сетью, дописанной к уже применённому списку.

    Теперь применение идёт сразу после сохранения настроек, а сверка доводит его до конца — и когда оно не доехало целиком, и когда его откатили мимо нас. Признак «применено» стал посегментным: раньше он смотрел лишь на то, что применялось хоть что-то, и потому молчал о сети, добавленной к готовому набору, — теперь расхождение видно подсказкой в карточке режима.

    Побочно закрыта потеря состояния при неудачном применении: сеть, у которой маскарад успели снять, а static-NAT доставить не успели, не попадала в записи — и её исходный режим не возвращали ни выключение опции, ни выключение режима.

    Ещё один случай, который опция раньше пропускала: сеть, где одновременно заданы динамический NAT и собственное правило static-NAT. Роутер показывает такую сеть как настроенную статически, но строка динамического NAT у неё остаётся живой и продолжает подменять адреса клиентов на пути в туннель. Теперь опция снимает её и здесь.

  • В списке сетей для этой опции больше не предлагаются выходы в интернет — список строился по всем записям NAT роутера подряд, и в него попадали WAN-подключение и клиентские VPN-туннели: у них тоже есть запись NAT, но описывает она трансляцию самого выхода, а не сеть с устройствами. Выбор такой строки снимал бы NAT с выхода в интернет. Теперь интерфейсы, помеченные в роутере как выход наружу, из списка исключены.

  • WDTT: остановка во время запуска больше не отменяется сама собой — запуск клиента или сервера занимает секунды: создаётся интерфейс, применяются NAT и правила firewall, и только в конце записывается признак «должен работать». Остановка, нажатая в это окно, снимала признак раньше, чем запуск успевал его поставить, — и инстанс оставался помеченным как работающий вопреки решению пользователя. Сторож через полминуты поднимал его заново, а повторная остановка попадала в то же окно.

  • FreeTurn/WDTT: остановка во время запуска больше не отменяется сама собой — запуск клиента или сервера занимает секунды: создаётся интерфейс, применяются NAT и правила firewall, и только в конце записывается признак «должен работать». Остановка, нажатая в это окно, снимала признак раньше, чем запуск успевал его поставить, — и инстанс оставался помеченным как работающий вопреки решению пользователя. Сторож через полминуты поднимал его заново, а повторная остановка попадала в то же окно.

    Теперь остановка дожидается завершения идущего запуска и только потом гасит инстанс — итоговое состояние всегда соответствует последнему нажатию. Побочно закрыт и второй одновременный запуск того же сервера: раньше сторож мог начать поднимать инстанс поверх запуска, идущего из интерфейса, и оба пути параллельно ходили в NDMS.

  • Падающий клиент или сервер FreeTurn/WDTT теперь можно выключить — инстанс, который не поднимается (неверный конфиг, занятый порт, несовместимый бинарь), показывался как «Остановлен», и кнопки «Остановить» у него не было: она появлялась только у работающего. При этом флаг «должен работать» оставался снятым только на словах — сторож продолжал поднимать инстанс каждые полминуты (дальше реже, до раза в 15 минут), журнал наполнялся неудачными попытками, а прекратить это из интерфейса было нечем.

    Теперь состояние «не запускается» отличается от «остановлен» прямо в строке статуса, а кнопка «Остановить» доступна и у неработающего инстанса — она снимает флаг, и попытки прекращаются. Кнопка «Запустить» рядом остаётся: после устранения причины можно поднять инстанс сразу, не дожидаясь очередной попытки сторожа.

  • WDTT: сервер не запускался со старым бинарём, и обновиться было нечем — если в /opt/bin лежал wdtt-server от прежней сборки, запуск обрывался сразу: awg-manager передаёт ему флаги режима Raw (-listen-raw, -listen-direct, -dns), которых тот бинарь не знает, и процесс завершался с распечаткой списка поддерживаемых флагов вместо старта. Выйти из этого состояния через интерфейс было нельзя: файл версии объявлял такой бинарь актуальным, панель показывала «установлено», и кнопки обновления не появлялось.

    Причина — в том, что установленным считался любой файл, оказавшийся на месте: версия записывалась по факту его наличия, без сверки с тем, что закреплено в сборке. Теперь состояние установки определяется по контрольной сумме самих бинарей, а не по записи в файле версии: бинарь, не совпавший с закреплённым, установленным не считается, и панель предлагает его поставить. Уже испорченная запись версии роутер больше не запирает — достаточно обновить пакет и нажать «Обновить» на вкладке WDTT.

    Заодно wdtt- и freeturn-бинари больше не кладутся внутрь пакета: единственный путь их появления — загрузка с зеркала по закреплённой версии с проверкой контрольной суммы. Раньше тестовые сборки могли принести с собой бинарь, расходящийся с закреплённым, и расхождение никак не проявлялось до неудачного запуска.

Don't miss a new awg-manager release

NewReleases is sending notifications on new releases.