Блокировка протокола BitTorrent в панелях Xray [устарело]
Существует достаточное количество гайдов, где предлагают добавлять сразу по несколько тысяч серверов трекеров в iptables, или блокировать торрент соединения через иные способы, но они не идеальны, собственно как и способ, о котором пойдет речь.
Кому это действительно нужно
- Тем, чьи панели или конечные сервера расположены у крупных Европейских или Американских хостеров, которые исполняют законы ЕС или США насчет авторских прав.
- Тем, кто хочет огранчить черезмерное потребление трафика в рамках пользования вашими услугами.
Тут стоит внести небольшую помарку: ядро Xray, и собственно сама панель 3X-UI — не в состоянии на 100% противостоять использованию протокола BitTorrent через внутренние методы ограничения, так как часть трафика не распознается как P2P-соединения.
Один из рассмотренных мною вариантов решения проблемы использования протокола BitTorrent — ограничение доступа пользователей к серверу посредствам временной блокировки адреса пользователя на машине.
Сервис блокировки
На просторах GitHub был найден небольшой сервис на Go, позволяющий читать логи панелей Marzban и 3X-UI, чтобы при единичном упоминании использования торрентов, отправлять пользователей подумать над своим поведением.
https://github.com/kutovoys/xray-torrent-blocker
Сам сервис устроен достаточно просто: читаем логи в онлайне, баним негодных на заданное в конфиге время, при этом получая уведомления в Telegram.
Настройка панели
Настройка для Marzban имеется уже в самом README проекта, поэтому перейдем сразу к 3X-UI:
- Заходим в панель, далее переходим во вкладку Xray Configs из меню слева.
- Вкладка Basics, включаем логирование Access Log, для своих нужд я так-же включил Error Log, но это не обязательно.
- Далее, в этом же окне переходим во вкладку Outbounds, создаем Outbound по протоколу blackhole с названием torrent, TORRENT или как-то иначе (это лишь эстетика, у меня не красивый вариант с заглавными).
- После создания Outbound переходим во вкладку Routing Rules. При базовой настройке правило будет 3 по счету, а так ищем правило, где протокол указан как bittorrent и назначаем ему наш созданный тег.
На этом настройка панели окончена, сохраняемся и перезапускаем 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, достаточно приличная контора, которая показала себя с лучшей стороны за несколько лет использования.