Вышел Gately v0.6.2
31 октября 2026 г.
Скачать v0.6.2 · GitHub Release
Маршрутизация по протоколу
Новый модуль «Маршрутизация по протоколу» находится в боковой панели рядом с «Пробросом портов». Он определяет протокол по первым байтам, которые отправляет клиент, и направляет соединения с одного порта на разные бэкенды, ничего не расшифровывая:
- TLS маршрутизируется по домену SNI и ALPN, HTTP — по Host, Minecraft — по адресу сервера в рукопожатии;
- SSH, RDP, SOCKS4/5, OpenVPN поверх TCP (включая tls-auth и tls-crypt-v2), XMPP, MQTT, PostgreSQL, RTSP, SIP, Redis, AMQP, SMB, Git, IRC, ADB и BitTorrent получают по одному маршруту; HTTP, RTSP и SIP различаются по версии в конце строки запроса;
- маршрут «Ожидание» принимает клиентов, которые ничего не отправляют после подключения (протоколы, где первым говорит сервер, например VNC или MySQL), а тайм-аут распознавания можно задавать с точностью до десятых долей секунды;
- нераспознанные соединения и соединения без подходящего маршрута уходят на цель по умолчанию; каждый маршрут может отправлять своему бэкенду протокол PROXY, а в списке видно, сколько соединений получил каждый маршрут.
По каким признакам распознаётся каждый протокол, в каком порядке сопоставляются домены и ALPN, а также примеры замены SNI-маршрутизации haproxy и sslh — на странице Маршрутизация по протоколу.
Группы и порядок в списках (#48)
Динамический DNS, проброс портов, маршрутизация по протоколу, сайты веб-служб, STUN, SSL-сертификаты, WAF, защита от вторжений, frp, туннели Cloudflare, File Browser, монтирование хранилищ, Wake-on-LAN, запланированные задачи, уведомления, сохранённые подключения веб-терминала, API-токены и другие списки теперь поддерживают одни и те же инструменты:
- поиск, сортировку перетаскиванием (на телефоне — стрелками вверх/вниз) и перенос нескольких выбранных элементов в группу за один раз;
- перемещение целых групп, переименование и объединение групп прямо в списке, запоминание свёрнутых групп;
- DNS-записи внутри задачи динамического DNS тоже можно группировать и сортировать.
Изменение групп или порядка никогда не перезапускает работающий экземпляр. Подробнее — в разделе Группы и порядок в списках.
Адреса STUN в динамическом DNS (#47)
В значениях записей и в Webhook можно использовать {STUN_имя правила_PORT}, {STUN_имя правила_IP} и {STUN_имя правила_ADDR}. Когда публичный адрес правила STUN меняется, ссылающиеся на него задачи сразу синхронизируются; если переменные есть только в Webhook, Webhook всё равно вызывается один раз. Пока правило выключено или обход NAT ещё не удался, запись в этом цикле пропускается, а в её статусе указана причина. Подробнее — в разделе Динамический DNS · Переменные в значении записи.
STUN за несколькими NAT
Правила с UPnP / NAT-PMP теперь сначала запрашивают у шлюза его собственный внешний адрес. Если он отличается от публичного адреса, который видит STUN (например, роутер находится за NAT провайдера), публичный порт принадлежит внешнему NAT: сохраняется только проброс порта туннеля, дополнительный проброс на роутере не создаётся, и публичный порт больше не меняется при каждой повторной проверке. В документацию STUN добавлены разделы о полноконусном и ограниченном NAT провайдера, UPnP за несколькими NAT, фиксации локального порта и его разрешении в брандмауэре хоста.
Усиление безопасности
- Пока используется пароль по умолчанию, учётная запись, двухэтапная проверка, Passkey, дополнительные учётные записи, API-токены, системные настройки и настройки безопасности веб-терминала доступны только для просмотра, а восстановление из резервной копии и откат этих настроек к версии из истории тоже отклоняются, пока пароль по умолчанию не будет изменён;
- учётные записи и API-токены только для чтения видят в конфигурации и журналах скрытые пароли общих пользователей, токены ссылок общего доступа, значения заголовков и секреты, а также пароли, значения параметров запроса и токены в пути внутри URL;
- для просмотра каталогов в
files/иsftp/нужны права на запись; - вход только по паролю больше не сбрасывает счётчик неудачных попыток, поэтому коды двухэтапной проверки нельзя подобрать перебором;
- за доверенным прокси несовпадающие заголовки X-Forwarded-For и X-Real-IP обрабатываются строже, так что поддельный внутренний адрес не позволяет обойти «Доступ только из локальной сети»;
- в окне API-токенов модули, право записи в которых позволяет выполнять команды на сервере (динамический DNS, запланированные задачи, защита от вторжений, STUN, SSL, веб-терминал, Docker, frp, File Browser, туннели Cloudflare), помечены «Выполняет команды», а при выдаче такого права показывается предупреждение;
- URL описания устройства и управления, которые возвращает UPnP-шлюз, должны принадлежать ответившему устройству.
Другие улучшения
- Каждую запись на карточке задачи динамического DNS можно удалить напрямую (DNS-запись у провайдера сохраняется);
- панель клавиш веб-терминала на телефоне стала одной строкой с горизонтальной прокруткой и по умолчанию появляется и скрывается вместе с экранной клавиатурой;
- значки на главном экране в Android Chrome и iOS больше не прозрачные, а интерфейс администрирования и сайт предоставляют манифест веб-приложения;
- обновлён дизайн главной страницы сайта и README.
Исправления
- Редактирование правила защиты от вторжений, которое уже срабатывало, завершалось ошибкой «unknown field lastSeen»;
- если один домен покрывают несколько сертификатов, используется тот, что истекает позже всех, поэтому порядок и группы в списке сертификатов больше не меняют используемый сертификат;
- маршрутизация по протоколу больше не пересылает нулевое заполнение, когда ClientHello обрывается тайм-аутом распознавания, а остановка или изменение правила сразу закрывает соединения, которые ещё распознаются;
- переменные STUN в JSON-теле Webhook не подставлялись.
Об обновлении
- При первом запуске после обновления правила SNI-маршрутизации из «Проброса портов» переносятся в «Маршрутизацию по протоколу» с прежними ключами, именами, состоянием включения, группами и маршрутами; если проброс портов был выключен, маршрутизация по протоколу тоже выключена; API-токены с доступом к пробросу портов получают такой же доступ к маршрутизации по протоколу.
- Скрипты, которые управляют правилами маршрутизации через API, должны использовать
/api/protoroute/rules, где поле маршрутов называетсяroutesвместоsniRoutes;/api/portforward/rulesбольше не принимает полеmode. Метрики этих правил теперь называютсяgately_protoroute_*. - Docker: скачайте новый образ и пересоздайте контейнер. OpenWrt: установите новый
.apk/.ipkповерх старого. fnOS: вручную установите новый.fpkв Центре приложений. Остальные установки можно обновить онлайн в разделе «Системные настройки».