← retour aux snippets

nft: gérer un set d'IPs (liste noire)

Créer un set ip/ip6 et l'utiliser pour bloquer/autoriser des adresses efficacement.

bash security #nft#set#firewall

objectif

Bloquer rapidement des IPs via des sets manipulables sans réécrire toute la chaîne.

code minimal

# créer un set et l'utiliser dans input
sudo nft add table inet filter 2>/dev/null || true
sudo nft 'add set inet filter blacklist { type ipv4_addr; flags interval; }'
sudo nft 'add chain inet filter input { type filter hook input priority 0; policy accept; }' 2>/dev/null || true
sudo nft 'add rule inet filter input ip saddr @blacklist drop'

utilisation

# ajouter/retirer des IPs
sudo nft add element inet filter blacklist { 198.51.100.0/24, 203.0.113.7 }
sudo nft delete element inet filter blacklist { 203.0.113.7 }

# vérifier
sudo nft list set inet filter blacklist

variante(s) utile(s)

# set IPv6
sudo nft 'add set inet filter blacklist6 { type ipv6_addr; flags interval; }'
sudo nft 'add rule inet filter input ip6 saddr @blacklist6 drop'

notes

  • flags interval permet d’ajouter des plages (CIDR).
  • gardez une politique par défaut explicite (accept/drop) selon votre modèle.