nftables packet filter 1.0.1 release

Ang paglabas ng packet filter nftables 1.0.1 ay nai-publish, na pinag-iisa ang packet filtering interface para sa IPv4, IPv6, ARP at network bridges (na naglalayong palitan ang mga iptable, ip6table, arptables at ebtables). Ang mga pagbabagong kinakailangan para gumana ang nftables 1.0.1 release ay kasama sa Linux kernel 5.16-rc1.

Kasama sa package ng nftables ang mga bahagi ng packet filter na tumatakbo sa espasyo ng gumagamit, habang ang gawain sa antas ng kernel ay ibinibigay ng subsystem ng nf_tables, na naging bahagi ng Linux kernel mula noong inilabas ang 3.13. Ang antas ng kernel ay nagbibigay lamang ng isang generic na protocol-independent na interface na nagbibigay ng mga pangunahing function para sa pagkuha ng data mula sa mga packet, pagsasagawa ng mga operasyon ng data, at kontrol sa daloy.

Ang mga panuntunan sa pag-filter at mga humahawak na partikular sa protocol ay pinagsama-sama sa bytecode sa espasyo ng gumagamit, pagkatapos nito ay na-load ang bytecode na ito sa kernel gamit ang interface ng Netlink at isinagawa sa kernel sa isang espesyal na virtual machine na nakapagpapaalaala sa BPF (Berkeley Packet Filters). Ang diskarte na ito ay nagbibigay-daan sa iyo upang makabuluhang bawasan ang laki ng filtering code na tumatakbo sa antas ng kernel at ilipat ang lahat ng mga function ng mga panuntunan sa pag-parse at lohika para sa pagtatrabaho sa mga protocol sa espasyo ng gumagamit.

Mga pangunahing inobasyon:

  • Nabawasan ang pagkonsumo ng memory kapag naglo-load ng malalaking hanay at mga listahan ng mapa.
  • Ang pag-reload ng mga listahan ng hanay at mapa ay pinabilis.
  • Ang output ng mga napiling talahanayan at chain sa malalaking hanay ng panuntunan ay pinabilis. Halimbawa, ang oras ng pagpapatupad ng command na "nft list ruleset" upang magpakita ng isang set ng mga panuntunan na may 100 libong mga hilera ay 3.049 segundo, at kapag nag-output lamang ng nat at mga filter na talahanayan ("nft list table nat", "nft list table filter ”) ay nabawasan sa 1.969 at 0.697 segundo.
  • Ang pagsasagawa ng mga query na may opsyong "--terse" ay pinabilis kapag nagpoproseso ng mga panuntunan na may malalaking set- at mga listahan ng mapa.
  • Posibleng i-filter ang trapiko mula sa "egress" chain, na pinoproseso sa parehong antas ng egress handler sa netdev chain (egress hook), i.e. sa yugto kapag ang driver ay tumatanggap ng isang packet mula sa kernel network stack. table netdev filter { chain egress { type filter hook egress device = { eth0, eth1 } priority 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Nagbibigay-daan sa pagtutugma at pagbabago ng mga byte sa header at mga nilalaman ng isang packet sa isang ibinigay na offset. # nft add rule xy @ih,32,32 0x14000000 counter # nft add rule xy @ih,32,32 set 0x14000000 counter

Pinagmulan: opennet.ru

Magdagdag ng komento