Pakkefilteret nftables 0.9.9 er utgitt. Det forener pakkefiltreringsgrensesnitt for IPv4, IPv6, ARP og nettverksbroer (rettet mot å erstatte iptables, ip6table, arptables og ebtables). Det tilhørende libnftnl 1.2.0-biblioteket, som tilbyr et lavnivå-API for samhandling med nf_tables-undersystemet, er utgitt samtidig. Endringene som kreves for nftables 0.9.9 er innlemmet i kjernen. Linux 5.13-rc1.
Pakken nftables inneholder pakkefilterkomponentene som opererer i brukerområdet, mens arbeid på kjernenivå leveres av nf_tables-undersystemet, som er en del av kjernen. Linux Siden versjon 3.13 er det kun et generisk protokolluavhengig grensesnitt på kjernenivå, som gir grunnleggende funksjonalitet for å trekke ut data fra pakker, utføre dataoperasjoner og flytkontroll.
Selve filtreringsreglene og protokollspesifikke behandlere kompileres til bytekode i brukerområdet, hvoretter denne bytekoden lastes inn i kjernen ved hjelp av Netlink-grensesnittet og kjøres i kjernen i en spesiell modus. virtuell maskin, som minner om BPF (Berkeley Packet Filters). Denne tilnærmingen muliggjør en betydelig reduksjon i størrelsen på filtreringskoden som kjører på kjernenivå, og flytter all regelparsing og protokolllogikk til brukerområdet.
Hovedinnovasjoner:
- Muligheten til å flytte flyttabellbehandling til nettverksadaptersiden er implementert, aktivert ved å bruke "offload"-flagget. Flowtable er en mekanisme for å optimalisere banen for pakkeomdirigering, der den fullstendige passasjen av alle regelbehandlingskjeder bare brukes på den første pakken, og alle andre pakker i flyten videresendes direkte. tabell ip global { flyttabell f { krokinngang prioritet filter + 1 enheter = { lan3, lan0, wan } flagg avlast } kjede fremover { type filter krok fremover prioritet filter; politikk akseptere; ip-protokoll { tcp, udp } flyt legg til @f } kjedepost { type nat krok postrouting prioritetsfilter; politikk akseptere; oifname "wan" maskerade } }
- Lagt til støtte for å feste et eierflagg til en tabell for å sikre eksklusiv bruk av tabellen ved en prosess. Når en prosess avsluttes, blir tabellen tilknyttet den automatisk slettet. Informasjon om prosessen vises i regeldumpen i form av en kommentar: tabell ip x { # prognavn nft flagg eierkjede y { type filter krok input priority filter; politikk akseptere; tellerpakker 1 byte 309 } }
- Lagt til støtte for IEEE 802.1ad-spesifikasjonen (VLAN-stabling eller QinQ), som definerer et middel for å erstatte flere VLAN-tagger i en enkelt Ethernet-ramme. For eksempel, for å sjekke typen ekstern Ethernet-ramme 8021ad og vlan id=342, kan du bruke konstruksjonen ... ether type 802.1ad vlan id 342 for å sjekke den eksterne typen Ethernet-ramme 8021ad/vlan id=1, nestet 802.1 q/vlan id=2 og ytterligere IP-pakkeinnkapsling: ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip teller
- Lagt til støtte for administrasjon av ressurser ved å bruke det enhetlige hierarki-cgroups v2. Hovedforskjellen mellom cgroups v2 og v1 er bruken av et felles cgroups-hierarki for alle typer ressurser, i stedet for separate hierarkier for tildeling av CPU-ressurser, for regulering av minneforbruk og for I/O. For eksempel, for å sjekke om stamfaren til en socket på første nivå cgroupv2 samsvarer med "system.slice"-masken, kan du bruke konstruksjonen: ... socket cgroupv2 level 1 "system.slice"
- La til muligheten til å sjekke komponentene i SCTP-pakker (funksjonaliteten som kreves for drift vil vises i kjernen). Linux 5.14). For eksempel, for å sjekke om en pakke inneholder en chunk med typen 'data' og feltet 'type': … sctp chunk data finnes … sctp chunk data type 0
- Utførelsen av regelinnlastingsoperasjonen har blitt akselerert med omtrent to ganger ved å bruke "-f"-flagget. Utdataene fra listen over regler har også blitt fremskyndet.
- Et kompakt skjema for å sjekke om flaggbiter er satt er gitt. For å kontrollere at snat- og dnat-statusbitene ikke er satt, kan du for eksempel spesifisere: ... ct status ! snat,dnat for å sjekke at syn-biten er satt i bitmasken syn,ack: ... tcp flagger syn / syn,ack for å sjekke at fin- og førstebiten ikke er satt i bitmasken syn,ack,fin,rst: ... tcp-flagg ! = fin, første / syn, ack, fin, første
- Tillat nøkkelordet "dom" i sett/karttypedefinisjoner: legg til kart xm { typeof iifname . ip-protokoll th dport : dom ;}
Kilde: opennet.ru
