Le niveau noyau fournit uniquement une interface générique indépendante du protocole qui fournit des fonctions de base pour extraire les données des paquets, effectuer des opérations sur les données et contrôler le flux. La logique de filtrage elle-même et les gestionnaires spécifiques au protocole sont compilés en bytecode dans l'espace utilisateur, après quoi ce bytecode est chargé dans le noyau à l'aide de l'interface Netlink et exécuté dans une machine virtuelle spéciale rappelant BPF (Berkeley Packet Filters). Cette approche vous permet de réduire considérablement la taille du code de filtrage exécuté au niveau du noyau et de déplacer toutes les fonctions de règles d'analyse et de logique pour travailler avec des protocoles dans l'espace utilisateur.
Principales nouveautés :
- Prise en charge de la correspondance des paquets par heure. Vous pouvez définir des plages d'heures et de dates dans lesquelles la règle sera déclenchée, et configurer le déclenchement pour des jours individuels de la semaine. Ajout également d'une nouvelle option "-T" pour afficher l'heure d'époque en secondes.
heure méta \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
méta-heure \"17:00\" - \"19:00\"
méta-jour "Vendredi" - Prise en charge de la récupération et de la sauvegarde des marques SELinux (secmark).
ct secmark définir méta secmark
méta secmark défini ct secmark - Prise en charge des listes de cartes synproxy, vous permettant de définir plusieurs règles par backend.
table ip foo {
synproxy https-synproxy {
message 1460
wéchelle 7
horodatage sac-perm
}synproxy autre-synproxy {
message 1460
wéchelle 5
}chaîne pré {
type filtre crochet préroutage priorité brute ; politique acceptée ;
tcp dport 8888 drapeaux tcp syn notrack
}barre de chaîne {
tapez le filtre de priorité avant à crochet de filtre ; politique acceptée ;
état ct invalide, nom du proxy synproxy non suivi carte ip saddr { 192.168.1.0/24 : « https-synproxy », 192.168.2.0/24 : « other-synproxy » }
}
} - La possibilité de supprimer dynamiquement des éléments définis des règles de traitement des paquets.
nft ajouter une règle ... supprimer @set5 { ip6 saddr . papa ip6}
- Prise en charge du mappage VLAN par ID et protocole définis dans les métadonnées de l'interface du pont réseau ;
méta ibrpvid 100
méta ibrvproto vlan - Option "-t" ("--terse") pour exclure les éléments des ensembles lors de l'affichage des règles. L’exécution de « nft -t list Ruleset » affichera :
table ip x {
définir y {
tapez ipv4_addr
}
}Et avec « ensemble de règles de liste nft »
table ip x {
définir y {
tapez ipv4_addr
éléments = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Possibilité de spécifier plusieurs périphériques dans les chaînes netdev (fonctionne uniquement avec le noyau 5.5) pour combiner des règles de filtrage communes.
ajouter une table netdev x
ajouter une chaîne netdev xy { \
tapez les périphériques d'entrée du crochet de filtre = { eth0, eth1 } priorité 0 ;
} - Possibilité d'ajouter des descriptions de types de données.
#nft décrit ipv4_addr
type de données ipv4_addr (adresse IPv4) (type de base entier), 32 bits - Possibilité de construire une interface CLI avec la bibliothèque Linenoise au lieu de libreadline.
./configure --with-cli=linenoise
Source: opennet.ru