geoblock: purge scannt zusaetzlich INPUT/FORWARD/OUTPUT (Chain-Wechsel raeumt Reste auf)

purge_geoblock_rules() scannt jetzt die konfigurierten Chains PLUS die Standard-
Filter-Chains INPUT/FORWARD/OUTPUT. Damit werden verwaiste geoblock-Regeln auch
dann entfernt, wenn 'chain' zwischen zwei Laeufen geaendert wurde (z.B. INPUT ->
FORWARD) -- vorher blieben die alten Regeln der nicht mehr konfigurierten Chain
stehen. Es werden nur Regeln geloescht, die auf das eigene ipset verweisen.

README: Abschnitt "Manuelle Nutzung" um die Aufraeum-Semantik ergaenzt (jeder
--apply/Service-Restart entfernt alle geoblock-Regeln und setzt sie frisch,
inkl. Reste aus geaenderter ports/protocol/chain-Config).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-23 12:05:15 +02:00
co-authored by Claude Opus 4.8
parent da83f351d7
commit af2a75c443
2 changed files with 35 additions and 9 deletions
+12
View File
@@ -158,6 +158,18 @@ unten.
das ipset atomar per `swap`, damit waehrend der Aktualisierung kein Loch
im Blocking entsteht.
**Aufraeumen bei jedem Lauf:** `--apply` (und damit auch jeder Neustart von
`geoblock.service`) entfernt zuerst **alle** bestehenden geoblock-Regeln und
setzt sie danach frisch. Gescannt werden dabei die konfigurierten Chains **plus**
die Standard-Filter-Chains INPUT/FORWARD/OUTPUT — es werden ausschliesslich
Regeln geloescht, die auf das eigene `ipset` verweisen (fremde Regeln bleiben
unberuehrt). Dadurch verschwinden automatisch auch Reste aus frueheren Laeufen
mit **anderer Config**: geaenderte `ports`/`protocol` ebenso wie eine geaenderte
`chain`. Konkret heisst das: Stellst du z.B. von `chain = INPUT` auf
`chain = FORWARD` um und startest den Dienst neu, werden die alten INPUT-Regeln
automatisch entfernt — du musst nicht von Hand aufraeumen. (Gleiches gilt fuer
`--remove`, das ebenfalls diesen Purge nutzt.)
**Achtung:** iptables-Regeln sind nicht reboot-persistent. Wer das
zusaetzlich braucht: `iptables-persistent` / `netfilter-persistent save`
nutzen — der systemd-Timer sorgt aber ohnehin bei jedem Boot fuer einen