nftables pakiti chujio 1.0.3 kutolewa

Kutolewa kwa vichujio vya pakiti 1.0.3 kumechapishwa, kuunganisha violesura vya vichujio vya pakiti kwa IPv4, IPv6, ARP na madaraja ya mtandao (inayolenga kuchukua nafasi ya iptables, ip6table, arptables na ebtables). Mabadiliko yanayohitajika kwa toleo la nftables 1.0.3 kufanya kazi yanajumuishwa kwenye kernel ya Linux 5.18.

Kifurushi cha nftables ni pamoja na vipengee vya kichujio cha pakiti ambacho hutumika katika nafasi ya mtumiaji, wakati kazi ya kiwango cha kernel inatolewa na mfumo mdogo wa nf_tables, ambao umekuwa sehemu ya kernel ya Linux tangu kutolewa kwa 3.13. Kiwango cha kernel hutoa kiolesura cha kawaida kinachojitegemea cha itifaki ambacho hutoa kazi za kimsingi za kutoa data kutoka kwa pakiti, kutekeleza shughuli za data na udhibiti wa mtiririko.

Sheria za kuchuja na vidhibiti mahususi vya itifaki hukusanywa kuwa bytecode katika nafasi ya mtumiaji, baada ya hapo bytecode hii hupakiwa kwenye kerneli kwa kutumia kiolesura cha Netlink na kutekelezwa kwenye kernel katika mashine maalum ya pepe inayowakumbusha BPF (Berkeley Packet Filters). Njia hii hukuruhusu kupunguza kwa kiasi kikubwa saizi ya msimbo wa kuchuja unaoendesha kwenye kiwango cha kernel na kusonga kazi zote za kanuni na mantiki ya kufanya kazi na itifaki kwenye nafasi ya mtumiaji.

Ubunifu kuu:

  • Orodha zilizowekwa sasa zinaauni majina ya kiolesura cha mtandao yanayolingana kwa kutumia kinyago, kwa mfano, iliyobainishwa kwa kutumia alama ya "*": testifsets za jedwali { set simple_wild { type ifname flags interval elements = { "abcdef*", "othername", "ppp0" } } mnyororo v4icmp {kipaumbele cha kuingiza ndoano cha chujio 0; kukubali sera; iifname @simple_wild vifurushi vya kaunta 0 byte 0 iifname { β€œabcdef*”, β€œeth0” } vifurushi vya kaunta 0 byte 0 } }
  • Imetekelezwa uunganisho wa kiotomatiki wa vipengee vya orodha iliyowekwa wakati wa operesheni. Hapo awali, wakati chaguo la "auto-merge" lilipowekwa, kuunganisha kulifanyika katika hatua ya kutangaza sheria, lakini sasa pia inafanya kazi wakati vipengele vipya vinaongezwa wakati wa operesheni. Kwa mfano, katika hatua ya kutangaza, orodha imewekwa y {vipengee vya kuunganisha kiotomatiki kwa vipindi vya bendera = {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 } } itageuzwa kuwa vipengele = {1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } na kisha ukiongeza vipengele vipya # nft ongeza kipengele ip xy { 1.2.3.0 -1.2.4.255, 3.3.3.6 } itaonekana kama vipengele = { 1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    Unapoondoa vipengee vya kibinafsi kutoka kwa orodha ambayo iko ndani ya vipengee vilivyopo, masafa hufupishwa au kugawanywa.

  • Usaidizi wa kuchanganya sheria za utafsiri wa anwani nyingi (NAT) katika orodha ya ramani umeongezwa kwenye kiboreshaji sheria, kinachoitwa wakati chaguo la "-o/β€”optimize" limebainishwa. Kwa mfano, kwa seti # cat ruleet.nft jedwali ip x {chain y { type nat hook postrouting priority srcnat; kushuka kwa sera; ip saddr 1.1.1.1 tcp dport 8000 snat hadi 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat hadi 5.5.5.5:90 } }

    kutekeleza "nft -o -c -f ruleset.nft" kutabadilisha sheria tofauti za "ip saddr" kuwa orodha ya ramani: snat hadi ip saddr . tcp dport ramani { 1.1.1.1 . 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    Vile vile, misemo ghafi inaweza kubadilishwa kuwa orodha za ramani: # cat ruleset.nft jedwali ip x { […] chain nat_dns_acme { udp urefu 47-63 @th,160,128 0x0e373135363130333131303735353203 udp62 udp78 urefu ,160,128 0x0e31393032383939353831343037320e goto nat_dns_this_5301 urefu wa udp 62-78 @th,160,128 0x0e31363436323733373931323934300e goto nat_dns_saturn_5301 urefu wa udp 62-78 @th,160,128 0x0 32393535373539353636383732310x5302 62e goto nat_dns_saturn_78 urefu wa udp 160,128-0 @th,0 38353439353637323038363633390x5303eXNUMXe goto nat_dns_saturn_XNUMX tone } }

    baada ya uboreshaji tunapata orodha ya ramani: 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 }

  • Matumizi ya misemo ghafi katika shughuli za uunganishaji inaruhusiwa. Kwa mfano: #nft ongeza kanuni xy ip saddr. @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } au jedwali x { set y { typeof ip saddr . @ih,32,32 vipengele = { 1.1.1.1 . 0x14 } }
  • Usaidizi ulioongezwa wa kubainisha sehemu za kichwa kamili katika utendakazi wa kuunganisha: jedwali inet t {map m1 { typeof udp length . @ih,32,32 : hukumu inaashiria vipengele vya muda = { 20-80 . 0x14 : ukubali, 1-10 . 0xa : tone } } mnyororo c {aina chujio pembejeo pembejeo kipaumbele 0; kushuka kwa sera; urefu wa udp. @ih,32,32 vmap @m1 }}
  • Usaidizi ulioongezwa wa kuweka upya chaguo za TCP (inafanya kazi tu na Linux kernel 5.18+): bendera za tcp synset tcp chaguo sack-perm
  • Utekelezaji wa amri za matokeo ya mnyororo ("nft list chain xy") umeharakishwa.

Chanzo: opennet.ru

Kuongeza maoni