Skip to content

Releases: WekaJosh/SBR-Config

v1.2.0

Choose a tag to compare

@WekaJosh WekaJosh released this 13 Aug 21:01

Bug-fix release from a full-project review.

Fixes

  • Multi-IP interfaces no longer break --configure. An interface with several IPv4 addresses previously planned duplicate ip route add commands; the second failed with EEXIST and rolled back the entire apply. The planner now dedupes per (table, destination) and re-verifies each change against detected state per address. All four persistence backends also now emit one config per interface covering every address (networkd overwrote per-IP files, netplan emitted invalid duplicate YAML keys, the NM dispatcher generated unreachable case branches).
  • Rollback is a true snapshot restore. Backups capture every managed persistence file alongside rt_tables. --rollback restores the configuration that was running when the backup was taken: SBR rules, routes, rt_tables entries, sysctl values, and persistence files all return to their backed-up state, and anything added since is removed. Backups from older versions fall back to the previous remove-all behavior.
  • Sysctl persistence writes the complete required set, not just the run's delta, so settings that already happened to be correct at runtime survive reboot.
  • ifupdown persistence is idempotent -- repeat runs replace the managed post-up/pre-down block instead of stacking duplicates and stale IPs.
  • Rule priority allocation fixed -- rules get 100, 110, 120... instead of all landing on priority 100; the networkd/netplan priority formula is clamped against negative values for low-numbered pre-existing tables.
  • Missing /etc/iproute2 is created automatically instead of failing (directory mode pinned to 0755 under strict umasks).
  • Backups are never overwritten (counter suffix on same-second collisions) and the 10 most recent are kept.
  • Relative --log-file paths no longer crash logging setup.
  • netplan apply / networkctl reload get realistic timeouts (60s/30s) instead of 10s.
  • Lock file is no longer unlinked on exit, closing a race where two later instances could both acquire the lock.
  • Wrapper's Python version check accepts future major versions.

Release on top of v1.1.2.

v1.1.2

Choose a tag to compare

@WekaJosh WekaJosh released this 07 May 14:48

Fix

  • `--force` now skips the dead man's switch. Previously `--force` only skipped the pre-apply "are you sure?" prompt; the post-apply connectivity confirmation still demanded the user type 'yes' within 30 seconds, which made remote / non-interactive runs impossible. `--force` now means non-interactive end to end. Users who want the safety net should run without `--force` from an interactive shell on the host being configured.

Patch release on top of v1.1.1.

v1.1.1

Choose a tag to compare

@WekaJosh WekaJosh released this 06 May 19:39

Fix

  • `--dry-run` works on its own. Previously `./sbr-config.sh --dry-run` errored with "one of the arguments -V/-c/-r/-p is required", since dry-run is a modifier and not its own action. It now implies `--configure` when no other mode is given, which is what users naturally expect from "preview what would happen". Combinations like `--validate --dry-run` and `--configure --dry-run` still parse the same as before.

Patch release on top of v1.1.0.

v1.1.0

Choose a tag to compare

@WekaJosh WekaJosh released this 27 Apr 22:26

First tagged release of SBR-Config as a standalone tool.

Changes since 1.0.0

UX

  • Dead man's switch confirmation prompt now runs in cbreak mode so the live countdown updates without stomping on what you've typed. Type yes at human pace, see both the countdown and your input update together.

SBR sysctl coverage

  • Added arp_ignore = 1 to the required settings. Critical for the common WEKA frontend deployment pattern where multiple NICs sit on the same subnet/broadcast domain — without it, any NIC can answer ARP for any local IP and produce ARP flux.
  • Added default.* entries for arp_filter, arp_announce, and arp_ignore. Now any NIC brought up after sbr-config has run inherits the same SBR-safe ARP behavior automatically.
  • Final sysctl set (all paired across all.* and default.*):
    • rp_filter = 2 (loose mode)
    • arp_filter = 1
    • arp_announce = 2
    • arp_ignore = 1

Compatibility

  • All changes are additive. Existing configurations applied with 1.0.0 will be upgraded in place by re-running --configure.
  • --rollback correctly reverts the new settings to their original kernel values.

Install

git clone https://github.com/WekaJosh/SBR-Config.git
cd SBR-Config
sudo ./sbr-config.sh --validate
sudo ./sbr-config.sh --configure

Requires Python 3.6+ and root.