nftables pakkie filter 1.0.3 vrystelling

Die nftables 1.0.3 pakkiefiltervrystelling is gepubliseer, wat pakkiefiltreringskoppelvlakke verenig vir IPv4, IPv6, ARP en netwerkbrûe (gemik op die vervanging van iptables, ip6table, arptables en ebtables). Veranderinge wat nodig is vir die nftables 1.0.3-vrystelling om te werk, is ingesluit in die Linux 5.18-kern.

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:

  • Stellyste ondersteun nou ooreenstemmende netwerkkoppelvlakname deur 'n masker, byvoorbeeld gespesifiseer deur die "*"-karakter te gebruik: tabel inet testifsets { set simple_wild { tipe ifname flags interval elements = { "abcdef*", "andernaam", "ppp0" } } ketting v4icmp { tipe filter haak invoer prioriteit 0; beleid aanvaar; iifname @simple_wild tellerpakkies 0 grepe 0 iifname { "abcdef*", "eth0" } tellerpakkies 0 grepe 0 } }
  • Geïmplementeer outomatiese vereniging van kruisende stellys-elemente tydens werking. Voorheen, wanneer die opsie "outosamevoeging" gestel is, is die samevoeging uitgevoer op die stadium van die verklaring van die reëls, maar nou werk dit ook wanneer nuwe elemente inkrementeel bygevoeg word in die proses. Byvoorbeeld, in die verklaringstap, word die lys gestel y { flags interval auto-merge elements = { 1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8. 3.3.3.4, 3.3.3.5 , 1.2.3.0 } } sal elemente word = { 24/3.3.3.3, 3.3.3.5-4.4.4.4, 4.4.4.8-1.2.3.0 } en dan as ons nuwe elemente byvoeg # nft voeg element ip by xy { 1.2.4.255 -3.3.3.6, 1.2.3.0 } word elemente = { 1.2.4.255-3.3.3.3, 3.3.3.6-4.4.4.4, 4.4.4.8-XNUMX }

    Wanneer jy individuele items uit die lys verwyder wat binne bestaande reeksitems val, word die reeks verminder of verdeel.

  • Bygevoeg ondersteuning vir die kombinasie van meervoudige adres vertaling (NAT) reëls in 'n kaart lys in die reël optimizer genoem met die "-o/--optimiseer" opsie. Byvoorbeeld, vir die stel # kat reëlset.nft tabel ip x { ketting y { tipe nat haak postrouting prioriteit srcnat; polisdaling; ip saddr 1.1.1.1 tcp dport 8000 snat na 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snt na 5.5.5.5:90 } }

    die uitvoering van "nft -o -c -f reëlset.nft" sal die afsonderlike "ip saddr" reëls omskep in 'n kaartlys: snat na ip saddr . tcp dport kaart {1.1.1.1. 8000: 4.4.4.4. 80, 2.2.2.2. 8001:5.5.5.5. 90}

    Net so kan rou uitdrukkings ook na kaartlyste omgeskakel word: # cat ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 gototh 62 78 160,128 0x0e31393032383939353831343037320e gaan nat_dns_this_5301 udp lengte 62-78 @th,160,128 0x0e31363436323733373931323934300e goto nat_dns_saturn_5301 udp lengte 62-78 @th,160,128 0e 0e 32393535373539353636383732310 5302x 62e 78 160,128 0 0 38353439353637323038363633390 5303 XNUMX XNUMX XNUMX XNUMX XNUMXe goto nat_dns_saturn_XNUMX udp lengte XNUMX-XNUMX @th,XNUMX XNUMXxXNUMXeXNUMXe goto nat_dns_saturn_XNUMX}

    na optimalisering kry ons 'n kaartlys: udp length . @th,160,128 vmap {47-63. 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e: gaan na nat_dns_this_5301, 62-78. 0x0e31363436323733373931323934300e : gaan na nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e: gaan na nat_dns_saturn_5302, 62-78. 0x0e38353439353637323038363633390e: gaan na nat_dns_saturn_5303 }

  • Die gebruik van rou uitdrukkings in samevoegingsbewerkings word toegelaat. Byvoorbeeld: # nft voeg reël xy ip saddr . @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } of tabel x { stel y { tipe ip saddr . @ih,32,32 elemente = { 1.1.1.1 . 0x14 } } }
  • Bygevoeg ondersteuning vir die spesifiseer van heelgetal kop velde in aaneenskakeling bewerkings: tabel inet t { kaart m1 { tipe van udp lengte . @ih,32,32: uitspraak vlae interval elemente = {20-80. 0x14 : aanvaar, 1-10 . 0xa : drop } } ketting c { tipe filter haak invoer prioriteit 0; polisdaling; udp lengte. @ih,32,32 vmap @m1 } }
  • Bygevoeg ondersteuning vir die terugstel van TCP-opsies (werk net met Linux-kern 5.18+): tcp-vlae syn reset tcp-opsie sack-perm
  • Vinniger uitvoering van kettinguitsetopdragte ("nft lysketting xy").

Bron: opennet.ru

Voeg 'n opmerking