publication du filtre de paquets , se développant comme un remplacement d'iptables, ip6table, arptables et ebtables grùce à l'unification des interfaces de filtrage de paquets pour IPv4, IPv6, ARP et les ponts réseau. Le paquet nftables comprend des composants de filtre de paquets fonctionnant en espace utilisateur, tandis qu'au niveau du noyau, le systÚme nf_tables, qui fait partie du noyau Linux depuis la version 3.13, assure la fonctionnalité. Les modifications nécessaires au fonctionnement de la version nftables 0.9.3 sont incluses dans la future branche du noyau Linux 5.5.
Au niveau du noyau, seule une interface générale, indépendante du protocole spécifique, est fournie, offrant des fonctions de base pour l'extraction de données à partir de paquets, l'exécution d'opérations sur les données et la gestion du flux. La logique de filtrage et les gestionnaires spécifiques aux protocoles sont compilés en bytecode en espace utilisateur, aprÚs quoi ce bytecode est chargé dans le noyau via l'interface Netlink et exécuté dans une machine virtuelle spéciale, similaire à BPF (Berkeley Packet Filters). Cette approche permet de réduire considérablement la taille du code de filtrage qui fonctionne au niveau du noyau et d'externaliser toutes les fonctions d'analyse des rÚgles et de logique de travail avec les protocoles en espace utilisateur.
Les principales nouveautés :
- Prise en charge de la correspondance des paquets par plage horaire. Il est possible de définir à la fois des plages de temps et des dates pendant lesquelles la rÚgle sera déclenchée, ainsi que de configurer le déclenchement pour certains jours de la semaine. Une nouvelle option « -T » a également été ajoutée pour afficher le temps en secondes depuis l'époque.
meta time "2019-12-24 16:00" â "2020-01-02 7:00"
meta hour "17:00" â "19:00"
meta day "Fri" - Prise en charge de la récupération et de la sauvegarde des marques SELinux (secmark).
ct secmark set meta secmark
meta secmark set ct secmark - Prise en charge des listes de mappage synproxy, permettant de définir plus d'une rÚgle sur le backend.
table ip foo {
synproxy https-synproxy {
mss 1460
wscale 7
timestamp sack-perm
}synproxy other-synproxy {
mss 1460
wscale 5
}chain pre {
type filter hook prerouting priority raw; policy accept;
tcp dport 8888 tcp flags syn notrack
}chain bar {
type filter hook forward priority filter; policy accept;
ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : «https-synproxy», 192.168.2.0/24 : «other-synproxy» }
}
} - Capacité à supprimer dynamiquement des éléments des ensembles set des rÚgles de traitement des paquets.
nft add rule ⊠delete @set5 { ip6 saddr . ip6 daddr }
- Prise en charge de la correspondance VLAN par identifiant et protocole, définis dans les métadonnées de l'interface de pont réseau;
meta ibrpvid 100
meta ibrvproto vlan - L'option «-t» («âterse») pour exclure les Ă©lĂ©ments des ensembles lors de l'affichage des rĂšgles. En exĂ©cutant «nft -t list ruleset», vous obtiendrez :
table ip x {
set y {
type ipv4_addr
}
}Et lors de «nft list ruleset»
table ip x {
set y {
type ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Possibilité de spécifier plusieurs dispositifs dans les chaßnes netdev (fonctionne uniquement avec le noyau 5.5) pour combiner des rÚgles de filtrage standard.
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - Possibilité d'ajouter des descriptions de types de données.
# nft describe ipv4_addr
datatype ipv4_addr (adresse IPv4) (type de base integer), 32 bits - Possibilité de construire une interface CLI avec la bibliothÚque linenoise au lieu de libreadline.
./configure âwith-cli=linenoise
Source : opennet.ru
