github hoaxisr/awg-manager v2.17.2

5 hours ago

Исправления

  • Выключенный сервер WDTT больше не нагружает роутер круглые сутки — уборщик брошенных интерфейсов считал сиротой любой интерфейс, чей процесс не запущен. Выключенный пользователем сервер под это подходит навсегда: раз в 15 секунд шла попытка снести его интерфейс, хотя сносить было нечего. Хуже того, обращение к несуществующему интерфейсу роутер трактует как просьбу его создать — уборка сама создавала интерфейс, чтобы тут же его удалить. Каждый такой круг — четыре команды роутеру, запись конфигурации во флеш-память, полный сброс кэшей и событие «интерфейс удалён», от которого интерфейс программы перезапрашивал весь список туннелей. В журнале это выглядело как полторы тысячи событий от интерфейса, которого в роутере нет, а команды к роутеру начинали обрываться по таймауту.

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

  • Сверка портов прокси-серверов больше не считает своими чужие правила межсетевого экрана — правила для этих портов ставились без пометки, по которой их можно узнать, и отличать свои приходилось по виду. Проверка была слишком широкой: под неё попадало любое разрешающее правило с указанием порта — в том числе правила самого роутера и других пакетов. Каждое такое правило программа считала своим и на каждом круге сверки пыталась убрать: впустую тратила вызовы iptables, а разрешение с тем же портом, но без уточнений, могла и правда снести.

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

  • Разрешение на пересылку трафика WDTT-сервера больше не остаётся в межсетевом экране навсегда — правило, открывающее пересылку через интерфейс сервера, ставится в одной форме, а снимать его пытались в другой: с версии 2.17.0 они разошлись. Снятие поэтому не удаляло ничего, и после каждой остановки — да и удаления — сервера разрешение оставалось в межсетевом экране до перезагрузки роутера. Заметить это по интерфейсу было нельзя.

    Теперь форма правила одна на всех: и на постановку, и на проверку, и на снятие, и в скрипте, который восстанавливает правила после перенастройки межсетевого экрана роутером. Правила, оставшиеся от версий 2.17.0 и 2.17.1, снимаются при первой же уборке.

  • Обход по гео-меткам больше не пугает предупреждением о недоступном модуле ядра — в настройках обхода показывалось, что модуль xt_set недоступен и правило обхода не встанет. Проверка искала его двумя способами: среди загруженных модулей и файлом на диске. На прошивках Keenetic он не является ни тем, ни другим — он встроен в само ядро, поэтому оба способа его не находят, хотя работает он безотказно. Предупреждение выводилось на полностью исправной конфигурации, ничего не блокировало и подсказать пользователю могло только неверное.

    Проверка удалена. Настоящая нехватка — если она где-то встретится — и раньше выяснялась не ею, а отказом при установке правил, с конкретным сообщением в журнале. Догрузка модуля на прошивках, где он всё же вынесен из ядра, осталась на месте.

Don't miss a new awg-manager release

NewReleases is sending notifications on new releases.