nftables filtre de paquets version 0.9.9

Le filtre de paquets nftables 0.9.9 est disponible. Il unifie les interfaces de filtrage de paquets pour IPv4, IPv6, ARP et les ponts réseau (conçu pour remplacer iptables, ip6table, arptables et ebtables). La bibliothèque libnftnl 1.2.0, qui fournit une API de bas niveau pour interagir avec le sous-système nf_tables, est également disponible. Les modifications nécessaires à nftables 0.9.9 ont été intégrées au noyau. Linux 5.13-rc1.

Le paquet nftables contient les composants de filtrage des paquets qui fonctionnent dans l'espace utilisateur, tandis que le travail au niveau du noyau est assuré par le sous-système nf_tables, qui fait partie du noyau. Linux Depuis la version 3.13, seule une interface générique indépendante du protocole est fournie au niveau du noyau, offrant des fonctionnalités de base pour extraire des données des paquets, effectuer des opérations sur les données et contrôler le flux.

Les règles de filtrage et les gestionnaires spécifiques au protocole sont compilés en bytecode dans l'espace utilisateur, puis ce bytecode est chargé dans le noyau via l'interface Netlink et exécuté dans le noyau dans un environnement dédié. machine virtuelleCette approche, qui rappelle BPF (Berkeley Packet Filters), permet de réduire considérablement la taille du code de filtrage exécuté au niveau du noyau et de déplacer toute la logique d'analyse des règles et du protocole vers l'espace utilisateur.

Principales nouveautés :

  • Implémentation de la possibilité de déplacer le traitement Flowtable vers la carte réseau, activée par l'indicateur « offload ». Flowtable est un mécanisme d'optimisation du chemin de transfert des paquets, dans lequel une traversée complète de toutes les chaînes de traitement des règles est appliquée uniquement au premier paquet, tandis que tous les autres paquets du flux sont transférés directement. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; policy accept; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; policy accept; oifname "wan" masquerade } }
  • Ajout de la prise en charge de l'ajout d'un indicateur de propriétaire à une table, garantissant ainsi son utilisation exclusive par un processus. Lorsqu'un processus se termine, la table associée est automatiquement supprimée. Les informations sur le processus sont affichées dans le fichier de règles sous forme de commentaire : table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
  • Prise en charge de la spécification IEEE 802.1ad (empilement VLAN ou QinQ), qui définit les moyens de substituer plusieurs balises VLAN dans une seule trame Ethernet. Par exemple, pour vérifier le type de trame Ethernet externe 8021ad et l'ID VLAN = 342, vous pouvez utiliser la construction ... ether type 802.1ad vlan id 342 pour vérifier le type de trame Ethernet externe 8021ad/vlan id=1, imbriqué 802.1q/vlan id=2, et encapsuler davantage le paquet IP : ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • La prise en charge de la gestion des ressources via la hiérarchie unifiée cgroups v2 a été ajoutée. La principale différence entre cgroups v2 et v1 réside dans l'utilisation d'une hiérarchie cgroups commune pour tous les types de ressources, au lieu de hiérarchies distinctes pour l'allocation des ressources CPU, la gestion de la mémoire et les E/S. Par exemple, pour vérifier si l'ancêtre d'un socket au premier niveau de cgroupv2 correspond au masque « system.slice », vous pouvez utiliser la construction suivante : ... socket cgroupv2 niveau 1 « system.slice »
  • Ajout de la possibilité de vérifier les composants des paquets SCTP (la fonctionnalité requise pour son fonctionnement apparaîtra dans le noyau). Linux 5.14). Par exemple, pour vérifier si un paquet contient un segment de type « data » et dont le champ « type » est renseigné : … sctp chunk data exists … sctp chunk data type 0
  • La vitesse de chargement des règles utilisant l'option « -f » a été quasiment doublée. L'affichage des listes de règles a également été accéléré.
  • Une méthode compacte de vérification de la position des bits dans les indicateurs est fournie. Par exemple, pour vérifier que les bits d'état snat et dnat ne sont pas positionnés, vous pouvez spécifier : ... ct status ! snat,dnat pour vérifier que le bit syn est positionné dans le masque binaire syn,ack : ... tcp flags syn / syn,ack pour vérifier que les bits fin et rst ne sont pas positionnés dans le masque binaire syn,ack,fin,rst : ... tcp flags != fin,rst / syn,ack,fin,rst
  • Le mot-clé « verdict » est désormais autorisé dans les définitions de typeof pour set/map : add map xm { typeof iifname . ip protocol . th dport : verdict ;}

Source: opennet.ru

Achetez un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Achetez un hébergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster