Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

BitBlockerInstaller (BitTorrent Blocker)

BitBlockerInstaller — это скрипт, который разворачивает DPI-детектор на базе nDPId и в реальном времени точечно блокирует обнаруженные BitTorrent-потоки на сервере, не трогая остальной трафик. Дополнительно статически блокирует известные DHT-бутстрап ноды с периодическим обновлением их IP.

Использование

bash <(curl -Ls https://raw.githubusercontent.com/sngvy/BitBlockerInstaller/refs/heads/main/BitBlockerInstaller.sh)

Технические детали

  • Захват: nDPId слушает трафик на сетевом интерфейсе в userspace через libpcap — без сборки кастомного модуля ядра.
  • Фильтр: опционально BPF-фильтр ограничивает захват конкретными портами/диапазоном или всеми портами, кроме указанных.
  • Анализ: nDPId классифицирует потоки через nDPI и стримит JSON-события по UNIX-сокету слушателю BitBlocker.
  • Вердикт: если протокол потока — BitTorrent, слушатель добавляет запись потока в ipset (hash:ip,port,ip,port, TTL 1 час) и рвёт уже установленное соединение через conntrack -D. DROP-правило в цепочке BITBLOCKER статично и не растёт — блокировка масштабируется на уровне ipset, а не количества правил в цепочке.
  • Раннее отбрасывание: правила BITBLOCKER стоят в таблице RAW (PREROUTING/OUTPUT), то есть до conntrack — повторные пакеты уже заблокированного потока отбрасываются раньше по конвейеру ядра, не создавая новую conntrack-запись.
  • DHT: отдельный демон резолвит известные bootstrap-хосты (router.bittorrent.com и др.) и статически дропает их IP — через UFW (ufw deny out to) либо отдельную цепочку iptables, в зависимости от выбранного firewall-бэкенда; обновление раз в 30 минут по systemd-таймеру, т.к. IP этих хостов меняются.
  • Firewall: при установке выбирается бэкенд — iptables+iptables-persistent или UFW (влияет только на блокировку DHT-нод). Точечная блокировка потоков (BITBLOCKER) всегда идёт напрямую через iptables/ip6tables + ipset независимо от выбора — у UFW нет механизма для таких динамических правил.
  • Установка: если рабочий бинарник nDPId уже найден в системе, сборка пропускается; сама сборка идёт тихо, с индикатором прогресса, полный лог показывается только при ошибке.
  • Обновление: при запуске поверх ранее установленной версии скрипт автоматически находит и удаляет устаревшую цепочку BITBLOCKER в таблице filter (если она осталась от версий до перехода на ipset+RAW) — повторный запуск безопасен и не оставляет «осиротевших» правил.
  • Автоматизация: три systemd-юнита (bitblocker-listener, bitblocker-ndpid с Restart=always, bitblocker-dht-block.timer), переживают перезагрузку; лог — /var/log/bitblocker.log с ротацией через logrotate (ежедневно, хранится 7 дней).

About

Простой блокировщик протокола BitTorrent для VLESS-серверов

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages