Juin 2016 : depuis la version 0.5 de Nftables, la dernière que j'ai chargée et testée, on peut créer des sets nommés en utilisant les intervalles et/ou une notation CIDR. Il faut, en plus de cette version récente, disposer d'un kernel >= 4.7-rc2 avec toutes les options "NFT_...." activées en modules.
Exemple de création d'une table avec deux sets nommés, un en IPV4, l'autre en IPV6 :
table ip TEST { set DISPAT { type ipv4_addr; flags interval; }; # bien noter les deux ";" chain BIDON { type filter hook input priority 0; set EXAMPLE { type ipv6_addr; }; |
On peut ensuite ajouter des éléments aux sets, par exemple :
add element TEST DISPAT { 192.168.2.2,192.168.2.4 }; add element TEST DISPAT { 192.168.3.0/24 }; add element TEST DISPAT { 192.168.0.0/24, 192.168.1.0/24 }; add element TEST DISPAT { 192.168.4.10 - 192.168.4.127 }; La commande de liste du set donne le résultat suivant : nft list set TEST DISPAT table ip TEST { set DISPAT { type ipv4_addr flags interval elements = { 192.168.0.0/23, 192.168.2.1, 192.168.2.2, 192.168.2.4, 192.168.3.0/24, 192.168.4.10-192.168.4.127} } } |
On peut remarquer la "fusion" réalisée automagiquement de "192.168.0.0/24, 192.168.1.0/24".
IPV6 n'étant pas activé chez moi (ni chez mon FAI) je n'ai pas fait de tests sur les sets IPV6.