Перейти к содержимому

Плагины ноды

Модуль Плагины ноды настраивает три встроенных плагина Remnawave Node сразу для всех нод панели:

Torrent Blocker

Ловит торрент-трафик пользователей и блокирует их IP на уровне nftables: одного пойманного пакета достаточно.

Банвременный, длительность настраиваетсяОтчётыстатистика и TelegramИсключениябелый список IP

Ingress Filter

Режет входящие соединения целыми подсетями: сканеры стучатся в порт ноды и не получают ответа.

ПресетыRU-сканеры, классические, FOFAСвои спискиIPv4 и подсети /8…/32Трафиквходящий, весь сервер ноды

Egress Filter

Блокирует исходящий трафик по адресам и портам назначения: взломанная учётная запись не уйдёт в частные сети и не начнёт рассылать спам.

Пресетычастные диапазоны, почтовые портыСвои спискиIPv4/IPv6 и порты 1-65535Трафикисходящий, весь сервер ноды

Все три функции живут в одной записи плагина Reverse Node Plugins, настраиваются через API панели с сервера, где панель установлена, и применяются на нодах без перезапусков.

сервер панелиremnawave_reverse · APIсохранение · синхронизацияплагин · Reverse Node Pluginsодна запись · activePluginUuidTorrent BlockertorrentBlockerIngress FilteringressFilterEgress FilteregressFilterактивация плагина на нодахнода · de-fra-01nftablesнода · nl-ams-02nftablesотчёты Torrent Blockerстатистикаодна запись на все три функции · каждое изменение применяется сразу на всех нодах

У каждой ноды Remnawave есть ровно один активный плагин (activePluginUuid), поэтому три функции не могут быть тремя отдельными записями: активной всегда была бы только одна. Скрипт держит одну общую запись с тремя секциями конфига: torrentBlocker, ingressFilter и egressFilter.

Каждое изменение настроек проходит один и тот же путь:

PATCH конфига→синхронизация→привязка ко всем нодам

Оффлайн-ноды получают привязку в базе панели и подхватят конфиг при подключении.

В верхней части меню модуля всегда видна строка правды: Нод под плагином: 2 из 2. Плагин, на который не указывает ни одна нода, не работает, что бы ни показывали статусы функций.

Для Torrent Blocker требуется Node версии 2.7.0 и новее с ядром Xray 26.3.27+.

Выполните на сервере панели:

root@server: ~
remnawave_reverse
  1. В главном меню выберите пункт 4:

    root@server: ~
    REMNAWAVE REVERSE-PROXY by eGames
    Версия: 3.7.2
    Wiki: https://wiki.egam.es/
    
    1.Установка компонентов Remnawave
    2.Переустановить панель и компоненты
    3.Управление панелью и компонентами
    
    4.Расширения ноды (шаблоны, плагины, ядро)
    
    5.Xray Checker: мониторинг подписки
    6.Кастомные расширения от legiz
    7.WARP Native
    8.Backup and Restore
    
    9.Управление IPv6
    10.Управление сертификатами домена
    
    11.NetBird: сеть для нод и панели
    12.Проверить обновления скрипта
    13.Удалить скрипт
    
    0.Выход
    - Быстрый запуск: remnawave_reverse
    
    Выберите действие (0-13):
  2. В меню расширений выберите Плагины ноды:

    root@server: ~
    Расширения ноды
    
    1.Установить шаблон для selfsteal ноды
    2.Плагины ноды
    3.Ядро Xray
    4.SSH-доступ к удалённому серверу
    5.Серверный роутинг
    
    0.Выход
    
    Выберите действие (0-5):
  3. Откроется меню модуля со статусами всех трёх функций и счётчиком привязки:

    root@server: ~
    Плагины ноды
     Подробности в wiki: https://wiki.egam.es/ru/configuration/node-plugins
    
    Нод под плагином: 2 из 2
    1.Torrent Blocker: ВКЛЮЧЁН
    2.Ingress Filter: выключен
    3.Egress Filter: не настроен
    
    0.Выход
    
    Выберите плагин (0-3):

Статус каждой функции бывает четырёх видов:

ВКЛЮЧЁН: функция работает на нодах
выключен: секция в конфиге есть, но отключена
не настроен: секции ещё нет в конфиге плагина
неизвестно: API панели не ответил

Если плагин не привязан ни к одной ноде, счётчик заменяется предупреждением Плагин не привязан к нодам, функции не работают на нодах. Любое изменение настроек привяжет его.

При первом входе модуль проверяет, нет ли на аккаунте старых записей плагинов от прошлых версий скрипта (они назывались Torrent Blocker, Ingress Filter, Egress Filter по отдельности). Такие записи предлагается объединить в одну: настройки сольются, лишние записи удалятся, плагин привяжется ко всем нодам. Отказ ничего не меняет, вопрос повторится при следующем входе.

Плагин ловит торрент-трафик на стороне Xray и блокирует IP нарушителя на самой ноде через nftables. Бан истекает сам через заданное время, уведомления о блокировках панель отправляет в Telegram, если там настроен бот.

Меню функции:

root@server: ~
Torrent Blocker

 Torrent Blocker: ВКЛЮЧЁН

1.Отключить Torrent Blocker
2.Настройки (длительность бана, белый список IP)
3.Статистика и последние отчёты
4.Разблокировать IP
5.Пересоздать таблицы nftables
6.Настроить Telegram-уведомления (панель)

7.Удалить общий плагин (все три функции)

0.Выход

Выберите действие (0-7):
  1. Выберите пункт Включить Torrent Blocker (или Отключить, когда он включён):

    root@server: ~
    Torrent Blocker
    
     Torrent Blocker: выключен
    
    1.Включить Torrent Blocker
    2.Настройки (длительность бана, белый список IP)
    3.Статистика и последние отчёты
    4.Разблокировать IP
    5.Пересоздать таблицы nftables
    6.Настроить Telegram-уведомления (панель)
    
    7.Удалить общий плагин (все три функции)
    
    0.Выход
    
    Выберите действие (0-7): 1
    
    [ * ] Включаю Torrent Blocker...
    [ ✓ ] Torrent Blocker включён, плагин привязан ко всем включённым нодам. Уведомления о блокировках приходят в Telegram, только если в панели настроены уведомления (Telegram-бот).
    Требуется Node v2.7.0+ с Xray 26.3.27+. Xray видит лишь часть торрент-трафика: одного пойманного пакета достаточно для бана IP.

Выключение проходит так же, но блокировки с нод при этом не сбрасываются: активные баны доживают свой срок.

Настройки (длительность бана, белый список IP)

Заголовок раздела «Настройки (длительность бана, белый список IP)»

Пункт Настройки показывает текущие значения: Enter оставляет их как есть, - у белого списка очищает его.

  1. Выберите пункт 2 и введите новые значения:

    root@server: ~
    [ * ] Настройки Torrent Blocker
    Длительность бана в секундах [текущая: 3600]: 7200
    Белый список IP через запятую [текущий: нет] (Enter - оставить, '-' = очистить): 203.0.113.7, 198.51.100.4
    [ ✓ ] Настройки сохранены и синхронизированы на ноды.

Белый список пригодится, если у честного пользователя статический адрес и он жалуется на блокировки: добавьте его IP, и Torrent Blocker перестанет на него реагировать.

Пункт Статистика и последние отчёты показывает счётчики, топ нарушителей и свежие блокировки по всем нодам:

root@server: ~
[ * ] Статистика Torrent Blocker
 Всего: 1284   За 24ч: 17   Пользователей: 96   Нод: 2

 Топ пользователей:
   megauser - 204
   ivanpro - 118

 Топ нод:
   de-fra-01 - 731
   nl-ams-02 - 553

 Последние отчёты (до 15):
       Дата              Пользователь     IP                                        Нода
    2026-10-03T11:52  megauser         45.151.100.214                            de-fra-01
    2026-10-03T09:14  ivanpro          178.62.95.10                              nl-ams-02
    2026-10-02T23:41  megauser         185.220.101.5                             de-fra-01

Если бан пришёлся на адрес, который трогать не хотели (например, пользователь за CGNAT, и под бан ушла вся подсеть провайдера), IP можно разблокировать сразу на всех нодах:

  1. Выберите пункт Разблокировать IP и укажите адрес:

    root@server: ~
    IP для разблокировки на всех нодах: 185.220.101.5
    [ * ] Разблокирую 185.220.101.5...
    [ ✓ ] Запрос на разблокировку 185.220.101.5 принят нодами.

Адрес под баном снова попадёт в блок-лист при следующем срабатывании. Чтобы вообще не блокировать его, добавьте IP в белый список в настройках.

Пункт пересоздаёт nftables-таблицу плагина на всех нодах: сбрасывает активные баны и очищает таблицу от остатков после сбоев. Списки Ingress Filter и Egress Filter живут в той же таблице, поэтому если они включены, скрипт предупредит: после сброса ноды могут держать их пустыми до следующего изменения конфига плагина или перезапуска ноды.

  1. Подтвердите сброс:

    root@server: ~
    Пересоздать таблицы nftables на всех подключённых нодах? Текущие баны будут сброшены (y/n): y
    [ * ] Пересоздаю таблицы nftables...
    [ ✓ ] Запрос на пересоздание принят нодами.

Пункт Настроить Telegram-уведомления (панель) пишет настройки в /opt/remnawave/.env панели: бот из раздела уведомлений панели начинает дублировать отчёты Torrent Blocker в указанный чат.

  1. Введите токен бота (получается у @BotFather) и чат для отчётов. Для темы в супергруппе укажите chat_id:thread_id. Перед сохранением модуль отправляет тестовое сообщение:

    root@server: ~
     Telegram-уведомления панели: выключены, чат Torrent Blocker: —
    Токен Telegram-бота [текущий: —]: 7481203945:AAH3k2QvLpR9tXmZwYb5C1dE
    Чат для отчётов Torrent Blocker (chat_id или chat_id:thread_id) [текущий: —]: -1002345678901
    Отправляю тестовое сообщение...
    
    Записать в .env и перезапустить панель с компонентами? Будет короткий простой, ~30 секунд (y/n): y
    [ * ] Сохраняю настройки в /opt/remnawave/.env...
    [ * ] Перезапускаю панель и компоненты (docker compose down/up)...
    [ ✓ ] Готово: панель отправляет отчёты Torrent Blocker в Telegram.

Если api.telegram.org недоступен с сервера (частое явление для серверов в РФ), модуль предложит отправлять сообщения через прокси, например socks-инбаунд xray на зарубежной ноде:

root@server: ~
Отправляю тестовое сообщение...
api.telegram.org недоступен с этого сервера (возможна блокировка в РФ).
Сообщения можно отправлять через SOCKS5/HTTP-прокси, например socks-инбаунд xray на зарубежной VPS/ноде.
Отправлять Telegram через прокси? (y/n): y
Адрес прокси (socks5h://хост:порт или socks5h://пользователь:пароль@хост:порт, пароль можно вводить как есть): socks5h://45.151.100.214:1080
Отправляю тестовое сообщение...

Логин и пароль прокси можно вводить как есть: модуль сам закодирует специальные символы, а сами креды не светятся в списке процессов, уходя в curl через файловый дескриптор.

Когда уведомления уже настроены, пункт предлагает Перенастроить или Отключить уведомления Torrent Blocker. Отключение чистит только чат Torrent Blocker: если другие категории уведомлений панели ещё живы, общий переключатель Telegram остаётся включённым.

Фильтр блокирует входящие соединения на уровне nftables по списку подсетей: сканеры интернета стучатся в порт ноды и не получают ответа. Список один на все ноды, у каждой функции свой статус.

Меню функции:

root@server: ~
Ingress Filter

 Ingress Filter: выключен
 записей в блок-листе: 0

1.Включить Ingress Filter
2.Пресеты блок-листа
3.Добавить IP/подсеть вручную
4.Убрать записи вручную

5.Удалить настройки Ingress Filter

0.Выход

Выберите действие (0-5):
  1. Выберите пункт Включить Ingress Filter:

    root@server: ~
    [ * ] Включаю Ingress Filter...
    [ ✓ ] Ingress Filter включён и синхронизирован на ноды.
    Входящий трафик блокируется на уровне nftables по всему серверу. Пресеты режут целыми подсетями, под бан могут попасть и соседние адреса хостинга в этих подсетях.

Фильтр можно включать и без списка, но работать он начнёт только после того, как в блок-листе появятся записи.

Пункт Пресеты блок-листа открывает три готовых списка. Напротив применённого пресета стоит метка [установлен: N], а когда upstream обновил список, метка краснеет и показывает, сколько записей доступно:

root@server: ~
Пресеты блок-листа Ingress

 Проверяю обновления применённых пресетов...
1.RU-сканеры (Skipa) [установлен: 145]
    Известные сканеры из РФ, ~145 подсетей
2.Классические сканеры [установлен: 270, доступно: 271 (обновите)]
    Censys, Shodan, Palo Alto, Shadowserver, Driftnet, ONYPHE, ZoomEye, LeakIX, Rapid7 (~270 подсетей)
3.FOFA + Quake
    Китайские скан-платформы FOFA и Quake, ~950 записей, большой список

0.Выход

Выберите действие (0-3):

Списки скачиваются с GitHub, при недоступности напрямую модуль сам пробует зеркала. Повторное применение пресета заменяет только его прежние записи: записи других пресетов и добавленные вручную остаются на месте.

  1. Выберите пресет, например RU-сканеры (Skipa):

    root@server: ~
    [ * ] Скачиваю списки пресета...
     Источник: github.com/tread-lightly/CyberOK_Skipa_ips
    Записать в блок-лист 145 записей? Прежние записи этого пресета будут заменены, ручные останутся (y/n): y
    [ ✓ ] Пресет применён: 145 записей в блок-листе.
    Ingress Filter сейчас выключен, включите его пунктом 1, иначе списки не работают.

Если фильтр на момент применения выключен, модуль напоминает об этом жёлтой строкой: сами списки уже сохранены в панели, включить их можно в любой момент.

Пункт Добавить IP/подсеть вручную принимает IPv4 и подсети с префиксом через запятую:

root@server: ~
IP или CIDR через запятую (например 1.2.3.4, 10.0.0.0/24): 185.220.101.5, 45.155.205.233
[ ✓ ] Блок-лист обновлён, всего записей: 2. Синхронизировано на ноды.

Пункт Убрать записи вручную показывает первые 20 записей и спрашивает, что вычеркнуть. Пустой Enter с подтверждением очищает весь список, 0 отменяет:

root@server: ~
 Текущие записи (первые 20):
   185.220.101.5
   45.155.205.233
Записи для удаления через запятую (Enter - очистить весь список, 0 - отмена): 45.155.205.233
[ ✓ ] Блок-лист обновлён, всего записей: 1. Синхронизировано на ноды.

Пункт Удалить настройки Ingress Filter убирает только секцию ingressFilter из общего плагина: блок-лист и метки пресетов стираются, Torrent Blocker и Egress Filter не затрагиваются.

root@server: ~
Удалить настройки Ingress Filter из общего плагина (блок-лист и метки пресетов)? Torrent Blocker и Egress Filter не затрагиваются (y/n): y
[ * ] Удаляю настройки Ingress Filter...
[ ✓ ] Настройки Ingress Filter удалены из общего плагина.

Фильтр блокирует исходящий трафик сервера по адресам назначения и портам. Основной сценарий: сервер взломали через украденную учётную запись, и вредоносная программа пытается уйти в частные сети или разослать спам, а двери уже закрыты.

Меню функции:

root@server: ~
Egress Filter

 Egress Filter: не настроен

1.Включить Egress Filter
2.Пресеты списков
3.Добавить IP/подсеть вручную
4.Добавить порты вручную
5.Убрать записи вручную

6.Удалить настройки Egress Filter

0.Выход

Выберите действие (0-6):

Когда списки уже есть, под статусом виден их размер: IP-записей: 5 | портов: 3.

Включение похоже на Ingress:

root@server: ~
[ * ] Включаю Egress Filter...
[ ✓ ] Egress Filter включён и синхронизирован на ноды.

Пункт Пресеты списков считает пресеты прямо на этом сервере, ничего не скачивая:

root@server: ~
Пресеты Egress

1.Частные диапазоны [установлен: 5]
    Внутренние сети (RFC1918, CGNAT, link-local), занятое на этом хосте пропускается автоматически
2.Почтовые порты
    Закрыть исходящую почту с сервера: 25, 465, 587

0.Выход

Выберите действие (0-2):
  1. Пресет Частные диапазоны закрывает внутренние сети: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, 169.254.0.0/16 и IPv6-диапазон fc00::/7. Диапазоны, которые сам хост использует (маршруты, адреса интерфейсов, DNS-резолверы, мосты Docker, mesh-сети), автоматически пропускаются:

    root@server: ~
     Будет заблокировано (5):
       10.0.0.0/8
       192.168.0.0/16
       100.64.0.0/10
       169.254.0.0/16
       fc00::/7
     Пропущено, уже используется на хосте (1):
       172.16.0.0/12 ← 172.17.0.0/16
    
    Записать эти подсети в блок-лист исходящего? (y/n): y
    [ ✓ ] Пресет применён: 5 подсетей.
    Egress Filter сейчас выключен, включите его пунктом 1, иначе списки не работают.

    Если состав подсетей на хосте изменится (появился новый мост Docker или mesh-адрес), пресет получит красную метку установлен: 5, актуально: 4 (примените заново) и пересчитается при повторном применении.

  2. Пресет Почтовые порты закрывает исходящие 25, 465 и 587: сервер перестаёт быть источником спама, обычный трафик не затрагивается:

    root@server: ~
    Заблокировать исходящие порты 25, 465, 587? (y/n): y
    [ ✓ ] Пресет применён: порты заблокированы (25, 465, 587).

Адреса принимаются IPv4 и IPv6, с префиксом и без; порты от 1 до 65535:

root@server: ~
IP или CIDR через запятую (IPv4/IPv6): 185.220.101.5
[ ✓ ] Списки обновлены (IP: 1, портов: 0). Синхронизировано на ноды.
root@server: ~
Порты через запятую (1-65535): 6667, 6697
[ ✓ ] Списки обновлены (IP: 1, портов: 2). Синхронизировано на ноды.

Пункт Убрать записи вручную показывает оба списка и принимает на удаление IP и порты вперемешку. Удаление настроек работает как у Ingress: из общего плагина уходит только секция egressFilter.

Несколько деталей, которые стоит знать про то, как модуль обращается с записями плагинов в панели:

  • Одна запись на всё. Плагин называется Reverse Node Plugins, uuid сохраняется на сервере панели, поэтому переименование записи в интерфейсе панели его не теряет.

  • Привязка при каждом сохранении. Сохранённый конфиг ничего не значит, пока плагин не активен на ноде. После каждого изменения модуль заново привязывает его ко всем включённым нодам и синхронизирует конфиг.

  • Чужой плагин на нодах. Если часть нод держит активным другой плагин (свой кастомный), модуль спросит, перевязать ли и их. Отказ запоминается до конца сессии: такие ноды остаются на своём плагине, запись в панели не удаляется.

    root@server: ~
    На этих нодах активен другой плагин: us-nyc-03. Привязать и их к общему плагину? Их текущий плагин на них перестанет действовать (запись останется в панели) (y/n): n
    Оставлены на своём плагине: us-nyc-03 — общий плагин на них не действует.
  • Объединение старых записей. Записи, оставшиеся от прошлых версий скрипта, модуль при входе предлагает слить в одну: конфиги глубоко объединяются, списки адресов складываются без потерь, лишние записи удаляются.

    root@server: ~
    Записи плагинов для объединения: Torrent Blocker, Egress Filter. Настройки будут слиты в «Reverse Node Plugins», остальные записи удалены, а плагин привязан ко всем включённым нодам. Объединить сейчас? (y/n): y
    [ * ] Объединяю плагины ноды в одну запись: Torrent Blocker, Egress Filter...
    [ ✓ ] Готово: один общий плагин, привязан ко всем включённым нодам.

Пункт Удалить общий плагин (все три функции) в меню Torrent Blocker убирает запись целиком: сначала плагин отвязывается от нод (чтобы не остались висящие ссылки), затем удаляется из панели.

root@server: ~
Удалить общий плагин из панели? Настройки Torrent Blocker, Ingress Filter и Egress Filter будут стёрты, плагин отвяжется от нод (y/n): y
[ * ] Удаляю общий плагин...
[ ✓ ] Плагин удалён и отвязан от нод. Активные баны истекут сами либо сбросьте их пересозданием таблиц.

Чтобы оставить часть функций, удаляйте секции по отдельности: пункты Удалить настройки Ingress Filter и Удалить настройки Egress Filter в их меню трогают только свои секции.