RTBH automation for network operators

Controlled RTBH
route automation.

blackhole-threats turns local and remote threat feeds into IPv4 and IPv6 blackhole announcements, with deterministic route deltas, per-community policy boundaries, and last-known-good protection when a source fails.

  • Signed APT
  • GHCR image
  • Per-community policy
  • IPv4 / IPv6
blackhole-threats — refresh.log live
blackhole-threats v1.2.3 · AS64520
INFO  feeds loaded          count=5  community=64520:666
INFO  prefixes parsed       ipv4=98,421  ipv6=30,321
INFO  routes summarised     total=128,742  overlaps=-421
INFO  route delta           announced=1,245  withdrawn=312
WARN  feed retry deferred   failed_feeds=1  carry_forward=true
INFO  refresh complete      duration=412ms  next_refresh=5m

Illustrative refresh output — values shown for orientation.

Current release

Signed releases with visible provenance.

Version ---
Commit ---
Build date ---
APT signing key ---
Release highlights
  • Loading release highlights...

How it runs

A small, auditable refresh loop with conservative failure handling.

Normalise feed input

Read local files, HTTP, and HTTPS sources in plain text, JSON arrays, JSONL, or NDJSON.

Publish only route deltas

Build the desired table, compare to active state, then withdraw stale routes and announce changes only.

Keep policy boundaries explicit

Group feeds by BGP community so policy boundaries stay explicit and auditable on the wire.

Preserve last-known-good routes

When a community refresh fails, preserve its last known-good routes and retry on the next cycle.

Install

Choose the delivery path for your environment.

Signed APT is the recommended path for long-running Debian-family hosts. Use GHCR for container runtimes with configuration mounted under /config.

bash
Loading signed APT commands...
Recommended

Installs the binary, systemd unit, default environment file, man page, sample config, and packaged documentation.

bash
docker pull ghcr.io/netspeedy/blackhole-threats:latest

Use the GHCR image for container-native runtimes with configuration mounted under /config.

Channel Best fit Platforms What you get Verification
Signed APT Recommended Long-running Debian-family hosts amd64, arm64, armhf; deb and deb-src Binary, systemd unit, defaults file, man page, sample config, and packaged docs Signed metadata, archive key, and published fingerprint
Container Container-native runtimes linux/amd64, linux/arm64 GHCR image with runtime configuration mounted under /config Published from trusted release tags and recovery dispatches
Release Archives Manual or offline installs Tarballs: linux/amd64, linux/arm64, linux/arm; Debian: amd64, arm64, armhf Linux tarballs, Debian packages, Debian source package artifacts, and sha256sums.txt Match downloaded artifacts against sha256sums.txt
Source Build Local validation, labs, and development Go source baseline: go 1.25.0 Repo Makefile build path for validating changes and configs before rollout Run make build and config checking locally
Operations guide Configuration reference Feed behavior Architecture