Вышел Gately v0.6.3
2 ноября 2026 г.
Скачать v0.6.3 · GitHub Release
Мониторинг производительности (#59)
Новый модуль «Производительность» каждые 5 секунд собирает CPU, память, диск и нагрузку хоста, а также CPU, память, файловые дескрипторы и число горутин процесса Gately:
- страница показывает графики за 60 секунд / 1 час / 24 часа, а рядом запросы в обработке, запросы в секунду, долю 5xx, время до первого байта (P95) и состояние бэкендов работающих сайтов; щелчок по сайту открывает его статистику;
- Веб-сайты теперь измеряют время до первого байта (от получения запроса до отправки заголовков ответа), статистика сайта получила кривые P50 / P95, в Prometheus появились
gately_site_request_duration_secondsи метрикиgately_host_*иgately_process_*, а панель Grafana обновлена; - правило оповещения выбирает метрику, способ сравнения и порог, затем длительность (от 1 до 1440 минут); оно срабатывает, только если условие выполняется всю длительность, а при восстановлении отправляется отдельное уведомление. Для доли 5xx и задержки можно задать минимальное число запросов, поэтому при малом трафике оценка не выполняется. Оповещения уходят через Центр уведомлений, а если на них не подписано ни одно правило уведомлений, страница предупреждает об этом.
История хранится только в памяти и после перезапуска копится заново. См. Производительность.
WAF с SafeLine
Экземпляр WAF может передавать запросы вашему собственному движку обнаружения SafeLine Community Edition для семантического анализа, без дополнительного обратного прокси перед Gately или за ним:
- укажите адрес детектора (
host:portлибоunix:и путь кsnserver.sock); «Проверить подключение» отправляет heartbeat и пример SQL-инъекции и показывает время обращения и ID события, записанный SafeLine; - SafeLine выполняется раньше групп правил, и при использовании только SafeLine группы можно не выбирать; режим «Только обнаружение» записывает срабатывания, но не блокирует;
- блокировки учитываются в счётчиках WAF, журнале WAF (с ID события), журналах доступа, статистике сайтов и в Защите от вторжений;
- можно задать тайм-аут обнаружения (по умолчанию 1 секунда), предел проверяемого тела (по умолчанию 1024 КБ, остальное передаётся без изменений) и то, пропускать ли запросы или отвечать 503, когда движок недоступен (по умолчанию пропускать).
См. Брандмауэр WAF · Подключение SafeLine.
Пакетные операции (#57)
Режим «Сортировка» в списках теперь называется «Сортировка и пакет»: отметив элементы, их можно разом включить, отключить и удалить, а перед удалением показывается список имён для подтверждения. Сайты Веб-служб можно отмечать сразу на нескольких слушателях, чтобы массово добавлять и удалять домены, заменять суффикс основного домена (old.com → new.com заодно переписывает www.old.com и *.old.com) и массово менять сжатие, журналы доступа, CORS, пересылаемые заголовки, разрыв соединения при отказе и ссылки на WAF; неизменённые параметры сохраняют значения каждого сайта. Весь пакет сначала проверяется и сохраняется за один раз, при сбое любого элемента ничего не применяется, перезагружаются только затронутые слушатели, а текущие соединения не разрываются. API состоит из общих PUT <путь>-enable и POST <путь>-delete, а также POST /api/webservice/sites/batch.
STUN: автоматическое открытие портов в брандмауэре
Правила STUN получили «Открыть порт в брандмауэре»: при включении Gately открывает порт обхода в брандмауэре этой машины (вместе с внутренним портом UPnP / NAT-PMP, если он задан) и убирает его при остановке или удалении правила. Поддерживаются nftables (OpenWrt fw4, firewalld) и iptables (fw3, ufw), после перезагрузки брандмауэра правила восстанавливаются в течение 30 секунд, а карточка правила показывает результат или причину сбоя. См. STUN-обход NAT.
Исправление: сбой выпуска из-за wildcard-CNAME (#61)
Если у домена есть wildcard-запись вроде *.example.com, указывающая на example.com, то _acme-challenge тоже разрешается в CNAME, проверочная запись DNS-01 записывалась в @, и центр сертификации сообщал, что не находит TXT-запись. Теперь Gately определяет это сам: явно заданный CNAME по-прежнему отслеживается, что позволяет делегировать проверку другому домену; CNAME, возникший из wildcard-записи, распознаётся, и запись создаётся в _acme-challenge.<домен>. У сертификатов также появился параметр «Не следовать CNAME для _acme-challenge». См. SSL-сертификаты.
Журналы Веб-служб (#62)
- Журналы доступа записывают причину блокировки (бан, список IP, страна, ограничение частоты, WAF), а запросы с сеансом входа в панель этого экземпляра записывают имя пользователя панели;
- на странице журнала появились «Скрыть заблокированные источники» (по умолчанию выключено, чтобы запросы, вызвавшие бан, оставались видны для аудита) и «Скрыть запросы панели» (по умолчанию включено); они влияют только на отображение, журналы сохраняются как раньше;
- фильтр IP принимает исключения, начинающиеся с
!или-: адреса, диапазоны и неполные адреса.
Другие улучшения
- В топологии сети появился «Фильтр»: по слушателю, только проблемные узлы и сайты по причине блокировки; в маскировании появился стиль «Псевдонимы», заменяющий адреса номерами вроде Visitor-01 и Backend-01 (#54);
- ознакомительное видео в README сразу начинается с титульной карточки;
- обновлены зависимости: go-jose до v4.1.7 и klauspost/compress до v1.18.7.
Исправления и усиление защиты
- Если бэкенд сайта с WAF сам возвращает 403, это больше не считается блокировкой WAF: раньше такой ответ увеличивал счётчики блокировок и порождал событие
waf.blocked, и правило Защиты от вторжений, подписанное на блокировки WAF, могло забанить обычного посетителя; - «Скрыть запросы панели» доверяет только сеансам администратора, поэтому cookie входа учётной записи только для чтения не позволяет пометить запросы как запросы панели; заблокированные запросы не получают отметку панели;
- пакетные операции ограничивают число присланных элементов до удаления дубликатов, а пакет с несуществующим экземпляром WAF отклоняется;
- если на одном хосте работают несколько Gately, автоматически открытые правила брандмауэра различаются по экземплярам и не удаляют друг друга.
Об обновлении
- Docker: скачайте новый образ и пересоздайте контейнер; если смонтирован сокет Docker, Gately может обновить и сам себя на странице Docker. OpenWrt: установите новый
.apk/.ipkповерх старого. fnOS: вручную установите новый.fpkв Центре приложений. Остальные варианты развёртывания можно обновить онлайн в настройках.