Skip to content

Commit

Permalink
Fix nftables subtraction
Browse files Browse the repository at this point in the history
  • Loading branch information
pixup1 committed Nov 25, 2024
1 parent f854183 commit 54c4ae5
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions docs/manuel/src/00-netcontrol/nftables.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 ?

Expand Down
2 changes: 1 addition & 1 deletion netcontrol/nft.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down

0 comments on commit 54c4ae5

Please sign in to comment.