Releases: WekaJosh/SBR-Config
Releases · WekaJosh/SBR-Config
Release list
v1.2.0
Bug-fix release from a full-project review.
Fixes
- Multi-IP interfaces no longer break
--configure. An interface with several IPv4 addresses previously planned duplicateip route addcommands; 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.
--rollbackrestores 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/iproute2is 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-filepaths no longer crash logging setup. netplan apply/networkctl reloadget 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
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
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
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
yesat human pace, see both the countdown and your input update together.
SBR sysctl coverage
- Added
arp_ignore = 1to 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 forarp_filter,arp_announce, andarp_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.*anddefault.*):rp_filter = 2(loose mode)arp_filter = 1arp_announce = 2arp_ignore = 1
Compatibility
- All changes are additive. Existing configurations applied with 1.0.0 will be upgraded in place by re-running
--configure. --rollbackcorrectly 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 --configureRequires Python 3.6+ and root.