Udgivelsen af paketfilteret nftables 0.9.9

Udgivet version 0.9.9 af pakke-filteret nftables, der standardiserer filtreringsgrænseflader for IPv4, IPv6, ARP og netværksbroer (målrettet erstatning af iptables, ip6tables, arptables og ebtables). Samtidig er version 1.2.0 af det tilknyttede bibliotek libnftnl blevet udgivet, som giver et lav-niveau API til interaktion med nf_tables under-systemet. De nødvendige ændringer til nftables 0.9.9 er inkluderet i kernen Linux 5.13-rc1.

Nftables-pakken inkluderer komponenter af pakke filtreringssystemet, der kører i brugerområdet, mens nf_tables subsystemet i kernen håndterer operationer i Linux kernen fra version 3.13. I kernen tilbydes kun et generelt interface, der ikke er afhængigt af en specifik protokol og giver grundlæggende funktioner til at hente data fra pakker, udføre dataoperationer og styre strømmen.

Reglerne for filtrering og protokolspecifikke behandlere kompileres til bytekode i brugerområdet, hvorefter denne bytekode indlæses i kernen ved hjælp af Netlink-interfacet og udføres i kernen i en særlig virtuelle maskiner, der minder om BPF (Berkeley Packet Filters). Denne tilgang muliggør en betydelig reduktion i størrelsen af den filtrering, der kører i kernen, og flytter alle funktioner til parsing af regler og logik til håndtering af protokoller til brugerområdet.

Hovednyhederne:

  • Muligheden for at flytte bearbejdningen af flowtable til netværksadapterens side er implementeret og kan aktiveres ved hjælp af flaget 'offload'. Flowtable er en mekanisme til optimering af pakke-omdirigering, hvor hele behandlingen af regler kun anvendes på den første pakke, og alle efterfølgende pakker i strømmen sendes direkte videre. 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 } }
  • Støtte til at tilføje en ejer-flag til tabellen, der sikrer eksklusiv brug af tabellen af processen, er blevet tilføjet. Når processen afsluttes, slettes den tilknyttede tabel automatisk. Oplysninger om processen vises i dumpen af reglerne i form af en kommentar: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
  • Støtte til specifikationen IEEE 802.1ad (VLAN stacking eller QinQ), som definerer midler til at indsætte flere VLAN-tags i en enkelt Ethernet-ramme, er blevet tilføjet. For eksempel kan følgende konstruktion bruges til at kontrollere typen af den eksterne Ethernet-ramme 8021ad og vlan id=342: … ether type 802.1ad vlan id 342 for at kontrollere den eksterne type Ethernet-ramme 8021ad/vlan id=1, indlejret 802.1q/vlan id=2 og videre indkapsling af IP-pakken: … ether type 802.1ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • Støtte til styring af ressourcer ved hjælp af en ensartet cgroups v2-hierarchy er blevet tilføjet. Den vigtigste forskel mellem cgroups v2 og v1 er brugen af en fælles cgroups-hierarki for alle typer ressourcer, i stedet for separate hierarkier til fordeling af CPU-ressourcer, regulering af hukommelsesforbrug og ind-/udgang. For eksempel kan man for at kontrollere, om en socket-forælder på første niveau cgroupv2 svarer til masken «system.slice», bruge konstruktionen: … socket cgroupv2 niveau 1 «system.slice»
  • Muligheden for at kontrollere komponenterne i SCTP-pakker (nødvendig for funktionaliteten vil komme i Linux-kernen 5.14) er blevet tilføjet. For eksempel kan man for at kontrollere eksistensen af en chunk i pakken med typen 'data' og feltet 'type': … sctp chunk data exists … sctp chunk data type 0
  • Udførelsen af operationen til indlæsning af regler er blevet cirka dobbelt så hurtig ved hjælp af flaget «-f». Også udskrivningen af regellisten er blevet hurtigere.
  • En kompakt form for kontrol af indstillingen af bits i flagene er blevet leveret. For eksempel, for at kontrollere, at tilstanden snat og dnat ikke er indstillet, kan man angive: … ct status ! snat,dnat for at kontrollere, at bit syn er indstillet i bitmasken syn,ack: … tcp flags syn / syn,ack for at kontrollere, at bits fin og rst ikke er indstillet i bitmasken syn,ack,fin,rst: … tcp flags != fin,rst / syn,ack,fin,rst
  • Brugen af nøgleordet «verdict» i definitionerne af typeof for set/map er blevet tilladt: add map x m { typeof iifname . ip protocol . th dport : verdict; }

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster