Izdaja paketnega filtra nftables 0.9.9

Objavljena je bila izdaja paketnega filtra nftables 0.9.9, ki poenoti vmesnike za filtriranje paketov za IPv4, IPv6, ARP in omrežne mostove (ki so namenjeni zamenjavi iptables, ip6table, arptables in ebtables). Istočasno je bila objavljena izdaja spremljevalne knjižnice libnftnl 1.2.0, ki zagotavlja API nizke ravni za interakcijo s podsistemom nf_tables. Spremembe, ki so potrebne za delovanje izdaje nftables 0.9.9, so vključene v jedro Linuxa 5.13-rc1.

Paket nftables vključuje komponente paketnega filtra, ki se izvajajo v uporabniškem prostoru, medtem ko delo na ravni jedra zagotavlja podsistem nf_tables, ki je del jedra Linuxa od izdaje 3.13. Raven jedra zagotavlja le generični vmesnik, neodvisen od protokola, ki zagotavlja osnovne funkcije za pridobivanje podatkov iz paketov, izvajanje podatkovnih operacij in nadzor pretoka.

Sama pravila filtriranja in obdelovalci, specifični za protokol, so prevedeni v bajtno kodo uporabniškega prostora, nakar se ta bajtna koda naloži v jedro z uporabo vmesnika Netlink in izvede v jedru v posebnem virtualnem stroju, ki spominja na BPF (Berkeley Packet Filters). Ta pristop omogoča znatno zmanjšanje velikosti filtrirne kode, ki se izvaja na ravni jedra, in premikanje vseh funkcij pravil razčlenjevanja in logike dela s protokoli v uporabniški prostor.

Glavne novosti:

  • Implementirana je bila zmožnost premikanja obdelave tabele poteka na stran omrežnega vmesnika, omogočena z uporabo zastavice 'offload'. Flowtable je mehanizem za optimizacijo poti preusmeritve paketov, pri katerem se celoten prehod vseh verig obdelave pravil uporabi le za prvi paket, vsi ostali paketi v toku pa se posredujejo neposredno naprej. tabela ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward prednostni filter; politika sprejeti; ip protokol { tcp, udp } tok add @f } verižna objava { tip nat hook postrouting prednostni filter; politika sprejeti; oifname "wan" maškarada } }
  • Dodana podpora za pripenjanje lastniške zastavice na tabelo, da se zagotovi izključna uporaba tabele s strani procesa. Ko se proces zaključi, se z njim povezana tabela samodejno izbriše. Informacije o procesu so prikazane v izpisu pravil v obliki komentarja: tabela ip x { # progname nft flags owner chain y { type filter hook input priority filter; politika sprejeti; števec paketov 1 bajt 309 } }
  • Dodana podpora za specifikacijo IEEE 802.1ad (zlaganje VLAN ali QinQ), ki definira način za zamenjavo več oznak VLAN v en okvir Ethernet. Če želite na primer preveriti vrsto zunanjega okvirja Ethernet 8021ad in vlan id=342, lahko uporabite konstrukcijo ... ether type 802.1ad vlan id 342 za preverjanje zunanje vrste okvirja Ethernet 8021ad/vlan id=1, ugnezdeni 802.1 q/vlan id=2 in nadaljnja inkapsulacija paketa IP: ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • Dodana podpora za upravljanje virov z uporabo enotne hierarhije cgroups v2. Ključna razlika med cgroups v2 in v1 je uporaba skupne hierarhije cgroups za vse vrste virov, namesto ločenih hierarhij za dodeljevanje virov CPE, za uravnavanje porabe pomnilnika in za I/O. Če želite na primer preveriti, ali se prednik vtičnice na prvi ravni cgroupv2 ujema z masko »system.slice«, lahko uporabite konstrukcijo: ... socket cgroupv2 ravni 1 »system.slice«
  • Dodana možnost preverjanja komponent paketov SCTP (potrebna funkcionalnost za to bo prikazana v jedru Linuxa 5.14). Na primer, če želite preveriti, ali paket vsebuje kos z vrsto 'data' in poljem 'type': ... podatki o kosu sctp obstajajo ... vrsta podatkov o kosu sctp 0
  • Izvajanje operacije nalaganja pravila je bilo pospešeno za približno dvakrat z uporabo zastavice »-f«. Pospešen je bil tudi izpis seznama pravil.
  • Na voljo je kompakten obrazec za preverjanje, ali so zastavice nastavljene. Če želite na primer preveriti, ali statusna bita snat in dnat nista nastavljena, lahko podate: ... ct status ! snat,dnat za preverjanje, ali je bit syn nastavljen v bitni maski syn,ack: ... zastavice tcp syn / syn,ack za preverjanje, ali bit fin in prvi nista nastavljena v bitni maski syn,ack,fin,rst: ... zastavice tcp ! = fin,rst / syn,ack,fin,rst
  • Dovoli ključno besedo "razsodba" v definicijah tipa set/map: add map xm { typeof iifname. protokol ip th dport : razsodba ;}

Vir: opennet.ru

Dodaj komentar