Skip to content

About

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

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

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-фильтр ограничивает захват конкретными портами/диапазоном или всеми портами, кроме указанных. Порты проверяются при вводе (не больше 15 позиций, диапазон считается за две).
  • Анализ: nDPId классифицирует потоки через nDPI и стримит JSON-события по UNIX-сокету (права 600) слушателю BitBlocker.
  • Вердикт: если протокол потока — BitTorrent (события detected и detection-update, предположения по порту игнорируются), слушатель добавляет концы потока в пару наборов ipset hash:ip,port (источник и приёмник, TTL 24 часа). Повторные события одного потока в течение 10 минут не обрабатываются, дальше TTL записи продлевается. Ошибка ipset попадает в лог как [ERROR].
  • Правила: цепочка BITBLOCKER в таблице raw (PREROUTING/OUTPUT), то есть до conntrack. Она состоит из трёх правил (поток, ответный поток, DHT), не растёт со временем и пересобирается одной транзакцией через iptables-restore --noflush, поэтому защита не пропадает при обновлении и дубли невозможны.
  • DHT: известные bootstrap-хосты (router.bittorrent.com и др.) резолвятся в отдельные наборы bitblocker_dht4/bitblocker_dht6, которые подменяются атомарно через swap раз в 30 минут по systemd-таймеру. Частные адреса отбрасываются, при сбое DNS или резком сокращении списка остаётся прежний набор.
  • Firewall: при установке выбирается iptables+iptables-persistent или UFW. Блокировка всегда идёт напрямую через таблицу raw и не зависит от правил UFW. Выбор определяет только способ сохранения: в режиме iptables правила записываются в rules.v4/rules.v6, в режиме UFW их восстанавливают слушатель и таймер.
  • Загрузка системы: служба bitblocker-ipset создаёт наборы и восстанавливает список DHT до загрузки файрвола. Без неё iptables-restore не смог бы загрузить сохранённые правила, ссылающиеся на ещё не созданные наборы.
  • Установка: если рабочий бинарник nDPId уже найден в системе, сборка пропускается; сама сборка идёт тихо, с индикатором прогресса, полный лог показывается только при ошибке. Версию nDPId можно зафиксировать: NDPID_REF=<тег или коммит> bash BitBlockerInstaller.sh.
  • Обновление и миграция: при запуске поверх прежней версии скрипт делает резервную копию, переносит записи потоков в новые наборы, удаляет старые наборы BITBLOCKER-*, DHT-цепочку в filter, правила UFW с меткой BitBlocker-DHT и записи в /etc/iptables/ipsets. После успешной проверки резервные копии удаляются; если проверка не пройдена или список DHT не загрузился, старые DHT-правила и копии остаются для ручного отката.
  • Автоматизация: systemd-юниты bitblocker-ipset, bitblocker-listener, bitblocker-ndpid (Restart=always) и таймер bitblocker-dht-block, переживают перезагрузку. Конфиг — /etc/bitblocker/bitblocker.conf, лог — /var/log/bitblocker.log с ротацией (ежедневно, 7 дней).
  • Удаление: пункт «Удалить» в меню скрипта убирает службы, цепочку, наборы, конфиг и записи в rules.v4/rules.v6, чтобы после ребута не осталось ссылок на несуществующие наборы.

About

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

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages