From 54c4ae575c29925656c1ed1e1b21498e50bc0e14 Mon Sep 17 00:00:00 2001 From: pixup1 Date: Mon, 25 Nov 2024 10:00:10 +0100 Subject: [PATCH] Fix nftables subtraction --- docs/manuel/src/00-netcontrol/nftables.md | 4 ++-- netcontrol/nft.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/manuel/src/00-netcontrol/nftables.md b/docs/manuel/src/00-netcontrol/nftables.md index 4d5a578..c0a2d23 100644 --- a/docs/manuel/src/00-netcontrol/nftables.md +++ b/docs/manuel/src/00-netcontrol/nftables.md @@ -76,14 +76,14 @@ Et elle : ```bash nft add chain insalan netcontrol-debypass { type filter hook prerouting priority 0; } -nft add rule insalan netcontrol-debypass meta mark > 1024 meta mark set meta mark ^ 1024 +nft add rule insalan netcontrol-debypass meta mark > 1024 meta mark set meta mark & 0xFFFFFBFF ``` Cette règle s'applique aux paquets qui: - `meta mark > 1024` : Ont le bypass activé. Et elle : -- `meta mark set meta mark ^ 1024` : Leur enlève le bypass, tout simplement (l'opérateur bitwise ^ va simplement toggle le bit de 1024, c'est pour ça qu'on n'applique la règle qu'aux marks supérieures à 1024) (on suppose ne jamais avoir de mark supérieure à 2048, ça n'aurait pas de sens de toute façon). +- `meta mark set meta mark & ~1024` : Leur enlève le bypass, tout simplement (on suppose ne jamais avoir de mark supérieure à 2048, ça n'aurait pas de sens de toute façon). > Alors oui mais ça sert à quoi le bypass du coup, si on l'enlève dans tous les cas ? diff --git a/netcontrol/nft.py b/netcontrol/nft.py index ec30b56..1c19ed3 100644 --- a/netcontrol/nft.py +++ b/netcontrol/nft.py @@ -59,7 +59,7 @@ def setup_portail(self): # Let traffic with "bypass" pass through if no external rules have been added self._execute_nft_cmd("add chain insalan netcontrol-debypass { type filter hook prerouting priority 0; }") - self._execute_nft_cmd("add rule insalan netcontrol-debypass meta mark > 1024 meta mark set meta mark ^ 1024") + self._execute_nft_cmd("add rule insalan netcontrol-debypass meta mark > 1024 meta mark set meta mark & 0xFFFFFBFF") # Block external requests to the netcontrol module ips = subprocess.run('ip addr | grep -o "[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*/[0-9]*" | grep -o "[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*"', shell=True, capture_output=True).stdout.decode("utf-8").split("\n")[:-1]