nftables pakiti chujio 1.0.0 kutolewa

Kutolewa kwa kichujio cha pakiti nftables 1.0.0 kumechapishwa, kuunganisha violesura vya kuchuja 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.0 kufanya kazi yanajumuishwa kwenye kernel ya Linux 5.13. Mabadiliko makubwa katika nambari ya toleo hayahusiani na mabadiliko yoyote ya kimsingi, lakini ni matokeo tu ya mwendelezo thabiti wa nambari katika nukuu za desimali (toleo la awali lilikuwa 0.9.9).

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:

  • Usaidizi wa kipengele cha mask "*" umeongezwa kwenye orodha zilizowekwa, ambazo huanzishwa kwa vifurushi vyovyote ambavyo haviko chini ya vipengele vingine vilivyoainishwa katika seti. jedwali x {orodha ya kuzuia ramani {aina ipv4_addr : vipengele vya muda vya bendera za hukumu = {192.168.0.0/16 : kubali, 10.0.0.0/8 : kubali, * : drop } } mlolongo y {aina chujio ndoano prerouting kipaumbele 0; kukubali sera; ip saddr vmap @blocklist }}
  • Inawezekana kufafanua vigezo kutoka kwa mstari wa amri kwa kutumia chaguo "--define". # cat test.nft table netdev x {mnyororo y { vifaa vya kuingiza ndoano vya aina ya chujio = $dev kipaumbele 0; kushuka kwa sera; } } # nft β€”fafanua dev="{ eth0, eth1 }" -f test.nft
  • Katika orodha za ramani, matumizi ya misemo ya mara kwa mara (ya hali) inaruhusiwa: kichujio cha inet ya jedwali { portmap ya ramani { aina inet_service : vipengele vya kukabiliana na uamuzi = { 22 pakiti za kukabiliana 0 byte 0 : jump ssh_input, * pakiti za kukabiliana 0 byte 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } prerouting ya mnyororo { aina ya ndoano ya chujio prerouting kipaumbele mbichi; kukubali sera; iif vmap { "lo" : jump wan_input } }}
  • Amri ya "orodha ya kulabu" iliongezwa ili kuonyesha orodha ya vidhibiti kwa familia fulani ya pakiti: # nft orodha kunabu ip kifaa eth0 familia ip { ndoano ingress { +0000000010 mnyororo netdev xy [nf_tables] +0000000300 mnyororo inet input mw [nf_tables] } ndoano { -0000000100 mnyororo ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } ndoano mbele { -0000000225 selinux_ipv4_mbele 0000000000 mnyororo ip ok 0000000225_4 mkufu ipv0000000225_output } kuchapisha ndoano { +4 XNUMX selinux_ipvXNUMX_postroute }}
  • Vizuizi vya foleni huruhusu jhash, symhash, na usemi wa numgen kuunganishwa ili kusambaza pakiti kwenye foleni katika nafasi ya mtumiaji. … foleni ya symhash mod 65536 … foleni bendera bypass kwa numgen inc mod 65536 … foleni kwa jhash oif . meta mark mod 32 "foleni" pia inaweza kuunganishwa na orodha za ramani ili kuchagua foleni katika nafasi ya mtumiaji kulingana na vitufe vya kiholela. ... foleni bendera bypass kwa oifname ramani {"eth0" : 0, "ppp0" : 2, "eth1" : 2}
  • Inawezekana kupanua vigezo vinavyojumuisha orodha iliyowekwa kwenye ramani kadhaa. fafanua violesura = { eth0, eth1 } jedwali ip x {mnyororo y {aina ya pembejeo ya ndoano ya chujio kipaumbele 0; kukubali sera; iifname vmap { lo : kubali, $interfaces : drop } } } # nft -f x.nft # nft orodha kanuni ya meza ip x { mlolongo y { aina chujio pembejeo pembejeo kipaumbele 0; kukubali sera; iifname vmap { "lo" : kubali, "eth0" : drop, "eth1" : drop } }}
  • Kuchanganya vmaps (ramani ya uamuzi) kwa vipindi inaruhusiwa: # nft add rule xy tcp dport . ip saddr vmap {1025-65535 . 192.168.10.2 : ukubali }
  • Sintaksia iliyorahisishwa ya michoro ya NAT. Inaruhusiwa kubainisha masafa ya anwani: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } au anwani za IP na bandari dhahiri: ... dnat to ip saddr ramani { 10.141.11.4 : 192.168.2.3-80 } . 192.168.1.2 } au michanganyiko ya safu za IP na milango: ... dnat to ip saddr . tcp dport ramani { 80 . 10.141.10.2: 10.141.10.5-8888. 8999-XNUMX }

Chanzo: opennet.ru

Kuongeza maoni