February 25, 2025

Блокировка протокола BitTorrent в панелях Xray [устарело]

Существует достаточное количество гайдов, где предлагают добавлять сразу по несколько тысяч серверов трекеров в iptables, или блокировать торрент соединения через иные способы, но они не идеальны, собственно как и способ, о котором пойдет речь.

Кому это действительно нужно

  • Тем, чьи панели или конечные сервера расположены у крупных Европейских или Американских хостеров, которые исполняют законы ЕС или США насчет авторских прав.
  • Тем, кто хочет огранчить черезмерное потребление трафика в рамках пользования вашими услугами.

Тут стоит внести небольшую помарку: ядро Xray, и собственно сама панель 3X-UI — не в состоянии на 100% противостоять использованию протокола BitTorrent через внутренние методы ограничения, так как часть трафика не распознается как P2P-соединения.

Один из рассмотренных мною вариантов решения проблемы использования протокола BitTorrent — ограничение доступа пользователей к серверу посредствам временной блокировки адреса пользователя на машине.

Сервис блокировки

На просторах GitHub был найден небольшой сервис на Go, позволяющий читать логи панелей Marzban и 3X-UI, чтобы при единичном упоминании использования торрентов, отправлять пользователей подумать над своим поведением.
https://github.com/kutovoys/xray-torrent-blocker

Сам сервис устроен достаточно просто: читаем логи в онлайне, баним негодных на заданное в конфиге время, при этом получая уведомления в Telegram.

https://github.com/kutovoys/xray-torrent-blocker

Настройка панели

Настройка для Marzban имеется уже в самом README проекта, поэтому перейдем сразу к 3X-UI:

  • Заходим в панель, далее переходим во вкладку Xray Configs из меню слева.
  • Вкладка Basics, включаем логирование Access Log, для своих нужд я так-же включил Error Log, но это не обязательно.
Xray Configs -> Basics
  • Далее, в этом же окне переходим во вкладку Outbounds, создаем Outbound по протоколу blackhole с названием torrent, TORRENT или как-то иначе (это лишь эстетика, у меня не красивый вариант с заглавными).
Xray Configs -> Outbounds
  • После создания Outbound переходим во вкладку Routing Rules. При базовой настройке правило будет 3 по счету, а так ищем правило, где протокол указан как bittorrent и назначаем ему наш созданный тег.
Xray Configs -> Routing Rules

На этом настройка панели окончена, сохраняемся и перезапускаем Xray кнопками вверху страницы.

Установка Xray Torrent Blocker

Для автоматической установки приложения выполните следующие шаги:

  • Запустите скрипт установки: bash <(curl -fsSL git.new/install)
  • Скрипт автоматически установит все зависимости, скачает последний релиз, спросит Token и Chat ID администратора и запустит сервис.
  • После завершения установки приложение можно контролировать через systemd: systemctl start/status/stop tblocker

Настройка конфига Xray Torrent Blocker

Настройка конфига для Marzban опять-же уже итак имеется в самом проекте изначально, поэтому перейдем к настройке для 3X-UI:

  • Настройку LogFile меняем на "/usr/local/x-ui/access.log"
  • Настройку TorrentTag ставим такую, как указывали в панели, в нашем случае: "TORRENT"
  • Настройку UsernameRegex на "email: (\\S+)"

На этом отличия от основной версии закончены, можем донастраивать конфиг, в частности пункты: BlockDuration, BlockMode (при использовании ufw настройте его по гайду из самого README проекта), SendAdminMessage, AdminBotToken и AdminChatID для уведомлений в Telegram.

Ссылка на полный гайд по запуску и установке блокировщика: https://github.com/kutovoys/xray-torrent-blocker/blob/main/README.ru.md

Проверка блокировки

Проверить работу блокировщика тоже достаточно просто, нужно лишь почитать поток лога доступов из панели 3X-UI по определенному email, например:

tail -f /usr/local/x-ui/access.log | grep --line-buffered 'user_email'

Итоги

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

Кстати, лично от себя рекомендую использовать сервера TimeWeb Cloud, достаточно приличная контора, которая показала себя с лучшей стороны за несколько лет использования.

Поддержать автора

https://pay.cloudtips.ru/p/32741af9