Utgivning av paketfiltreringssystemet nftables 1.0.3

Utgivningen av paketfiltreringssystemet nftables 1.0.3 Àr offentliggjord, som standardiserar paketfiltreringsgrÀnssnitt för IPv4, IPv6, ARP och nÀtverksbroar (inriktad pÄ att ersÀtta iptables, ip6table, arptables och ebtables). NödvÀndiga Àndringar för att anvÀnda nftables 1.0.3 ingÄr i Linux-kÀrnan 5.18.

Paketet nftables innehÄller komponenter för paketfilter som arbetar i anvÀndarrummet, medan nf_tables-systemet pÄ kÀrnnivÄ tillhandahÄller funktionen, vilket har varit en del av Linux-kÀrnan sedan version 3.13. PÄ kÀrnnivÄ tillhandahÄlls endast ett allmÀnt grÀnssnitt, oberoende av protokoll, som ger grundlÀggande funktioner för att extrahera data frÄn paket, utföra operationer med data och styra flödet.

SjÀlva filtreringsreglerna och protokollspecifika hanterare kompileras till bytekod i anvÀndarrummet, som sedan laddas in i kÀrnan via Netlink-grÀnssnittet och utförs i kÀrnan i en speciell en virtuell maskin, liknande BPF (Berkeley Packet Filters). Denna metod gör det möjligt att avsevÀrt minska storleken pÄ den filterkod som körs pÄ kÀrnnivÄ och flytta alla funktioner för tolkning av regler och logik som rör protokoll till anvÀndarrummet.

Huvudsakliga nyheter:

  • Det har lagts till stöd för att matcha namn pĂ„ nĂ€tverksgrĂ€nssnitt baserat pĂ„ mask i set-listor, till exempel angivet med symbolen '*': table inet testifsets { set simple_wild { type ifname flags interval elements = { "abcdef*", "othername", "ppp0" } } chain v4icmp { type filter hook input priority 0; policy accept; iifname @simple_wild counter packets 0 bytes 0 iifname { "abcdef*", "eth0" } counter packets 0 bytes 0 } }
  • Automatisk sammanslagning av överlappande element i set-listor har realiserats under drift. Tidigare gjordes sammanslagningen nĂ€r alternativet "auto-merge" angavs under regelframtagningen, men nu aktiveras den Ă€ven vid inkrementell tillĂ€gg av nya element under drift. Till exempel, vid deklaration görs listan set 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 } } om till elements = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } och om nya element sedan lĂ€ggs till # nft add element ip x y { 1.2.3.0-1.2.4.255, 3.3.3.6 } ser den ut som elements = { 1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    Vid borttagning av individuella element frÄn listan, som hamnar inom befintliga element med intervall, kommer intervallet att förkortas eller delas upp.

  • I regelförbĂ€ttraren, som aktiveras med alternativet "-o/--optimize", har stöd lagts till för att slĂ„ samman flera regler för adressöversĂ€ttning (NAT) i map-listor. Till exempel, för uppsĂ€ttningen # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } }

    att utföra "nft -o -c -f ruleset.nft" kommer att omvandla separata regler för "ip saddr" till en map-lista: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }

    PÄ liknande sÀtt kan raw-uttryck konverteras till map-listor: # cat ruleset.nft table ip x { [
] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 goto nat_dns_dnstc udp length 62-78 @th,160,128 0x0e31393032383939353831343037320e goto nat_dns_this_5301 udp length 62-78 @th,160,128 0x0e31363436323733373931323934300e goto nat_dns_saturn_5301 udp length 62-78 @th,160,128 0x0e32393535373539353636383732310e goto nat_dns_saturn_5302 udp length 62-78 @th,160,128 0x0e38353439353637323038363633390e goto nat_dns_saturn_5303 drop } }

    Efter optimeringen fÄr vi map-lista: udp length . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • AnvĂ€ndning av raw-uttryck i konkateneringsoperationer Ă€r tillĂ„ten. Till exempel: # nft add rule x y ip saddr . @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } eller table x { set y { typeof ip saddr . @ih,32,32 elements = { 1.1.1.1 . 0x14 } } }
  • Stöd har lagts till för att ange heltalsfĂ€lt i huvudena i konkateneringsoperationer: table inet t { map m1 { typeof udp length . @ih,32,32 : verdict flags interval elements = { 20-80 . 0x14 : accept, 1-10 . 0xa : drop } } chain c { type filter hook input priority 0; policy drop; udp length . @ih,32,32 vmap @m1 } }
  • Stöd för att Ă„terstĂ€lla TCP-alternativ (fungerar endast med Linux-kĂ€rna 5.18+) har lagts till: tcp flags syn reset tcp option sack-perm
  • Utförandet av kommandon för att lista kedjor («nft list chain x y») har snabbats upp.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster