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 {
chain ENT_100 { type filter hook input priority -100 ;
counter;
}
set DISPAT { type ipv4_addr; flags interval; }; # bien noter les deux ";"
chain BIDON { type filter hook input priority 0;
counter;
}
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 auto-magiquement 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.