nftables pakkie filter 1.0.0 vrystelling

Die vrystelling van pakkiefilter nftables 1.0.0 is gepubliseer, wat pakkiefiltreringskoppelvlakke vir IPv4, IPv6, ARP en netwerkbrûe verenig (wat daarop gemik is om iptables, ip6table, arptables en ebtables te vervang). Die veranderinge wat nodig is vir die nftables 1.0.0-vrystelling om te werk, is ingesluit in die Linux 5.13-kern. 'n Beduidende verandering in die weergawenommer word nie met enige fundamentele veranderinge geassosieer nie, maar is slegs 'n gevolg van die konsekwente voortsetting van nommering in desimale notasie (die vorige weergawe was 0.9.9).

Die nftables-pakket bevat pakkiefilterkomponente wat in gebruikersruimte loop, terwyl die kernvlak verskaf word deur die nf_tables-substelsel, wat sedert vrystelling 3.13 deel van die Linux-kern is. Op die kernvlak word slegs 'n generiese protokol-onafhanklike koppelvlak verskaf wat basiese funksies verskaf om data uit pakkies te onttrek, bewerkings op data uit te voer en vloei te beheer.

Die filterreëls self en protokol-spesifieke hanteerders word saamgestel in gebruikersspasie-greepkode, waarna hierdie greepkode in die kern gelaai word met behulp van die Netlink-koppelvlak en in die kern uitgevoer word in 'n spesiale virtuele masjien wat soos BPF (Berkeley Packet Filters) lyk. Hierdie benadering maak dit moontlik om die grootte van die filterkode wat op kernvlak loop aansienlik te verminder en al die funksies van ontledingsreëls en die logika van werk met protokolle na gebruikersruimte te skuif.

Belangrikste innovasies:

  • Ondersteuning vir die "*"-maskerelement is by stellyste gevoeg, wat geaktiveer word vir enige pakkette wat nie onder ander elemente val wat in die stel gedefinieer is nie. tabel x { kaart bloklys { tipe ipv4_addr : uitspraak vlae interval elemente = { 192.168.0.0/16 : aanvaar, 10.0.0.0/8 : aanvaar, * : drop } } ketting y { tipe filter haak prerouting prioriteit 0; beleid aanvaar; ip saddr vmap @bloklys } }
  • Dit is moontlik om veranderlikes vanaf die opdragreël te definieer deur die "--definieer" opsie te gebruik. # kat toets.nft tabel netdev x { ketting y { tipe filter haak intrede toestelle = $ dev prioriteit 0; polisdaling; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • In kaartlyste word die gebruik van konstante (staatvolle) uitdrukkings toegelaat: tabel inet filter { kaart portmap { tipe inet_service : uitspraak teller elemente = { 22 teller pakkies 0 grepe 0 : spring ssh_input, * teller pakkies 0 grepe 0 : drop } } ketting ssh_input { } ketting wan_input { tcp dport vmap @ portmap } ketting prerouting { tipe filter haak prerouting prioriteit rou; beleid aanvaar; iif vmap { "lo": spring wan_input } }
  • Bygevoeg "lys hake" opdrag om 'n lys hanteerders vir 'n gegewe pakkie familie te vertoon: # nft lys hake ip toestel eth0 familie ip { haak ingang { +0000000010 ketting netdev xy [nf_tables] +0000000300 ketting inet mw [nf_hooktabelle] } { -0000000100 ketting ip ab [nf_tables] +0000000300 ketting inet mz [nf_tables] } haak vorentoe { -0000000225 selinux_ipv4_forward 0000000000 ketting inet mz [nf_tables] } haak vorentoe { -0000000225 selinux_ipv4_forward 0000000225 ketting inet mz [nf_tables] } haak vorentoe { -4 selinux_ipvXNUMX_forward XNUMX ketting inet mz [nf_tables] } XNUMX ipvXNUMX_output } haak postrouting { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
  • Toublokke laat jhash-, symhash- en numgen-uitdrukkings toe om gekombineer te word om pakkies na toue in gebruikersruimte te versprei. … tou na symhash mod 65536 … tou vlae omseil na numgen inc mod 65536 … tou na jhash oif . meta mark mod 32 "queue" kan ook gekombineer word met kaartlyste om 'n tou in gebruikersruimte te kies gebaseer op arbitrêre sleutels. ... tou-vlae omseil na oifnaamkaart { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Dit is moontlik om veranderlikes wat 'n stellys insluit na verskeie kaarte uit te brei. definieer koppelvlakke = { eth0, eth1 } tabel ip x { ketting y { tipe filter haak invoer prioriteit 0; beleid aanvaar; iifname vmap { lo : aanvaar, $interfaces : drop } } } # nft -f x.nft # nft lys reëlstel tabel ip x { ketting y { tipe filter haak invoer prioriteit 0; beleid aanvaar; iifname vmap { "lo": aanvaar, "eth0": drop, "eth1": drop } }
  • Die kombinasie van vmaps (uitspraakkaart) met tussenposes word toegelaat: # nft voeg reël xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2 : aanvaar }
  • Vereenvoudigde sintaksis vir NAT-kartering. Toegelaat om adresreekse te spesifiseer: ... snat na ip saddr-kaart { 10.141.11.4 : 192.168.2.2-192.168.2.4 } of eksplisiete IP-adresse en poorte: ... dnat na ip saddr-kaart { 10.141.11.4: 192.168.2.3. . 80 } of kombinasies van IP-reekse en poorte: ... dnat na ip saddr . tcp dport kaart {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Bron: opennet.ru

Voeg 'n opmerking