nftables packet filter 1.0.7 release

Ang paglabas ng packet filter nftables 1.0.7 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). 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 kernel ng Linux 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.

Pangunahing pagbabago:

  • Para sa mga system na nagpapatakbo ng Linux kernel 6.2+, ang suporta para sa vxlan, geneve, gre, at gretap protocol mappings ay idinagdag, na nagpapahintulot sa mga simpleng expression na suriin ang mga header sa mga naka-encapsulated na packet. Halimbawa, upang suriin ang IP address sa header ng isang nested packet mula sa VxLAN, maaari mo na ngayong gamitin ang mga panuntunan (nang hindi na kailangang i-de-encapsulate muna ang VxLAN header at itali ang filter sa vxlan0 interface): ... udp dport 4789 vxlan ip protocol udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1 . XNUMX }
  • Suporta para sa awtomatikong pagsasama-sama ng mga natitira pagkatapos maipatupad ang bahagyang pagtanggal ng elemento ng set-list, na nagbibigay-daan sa iyong tanggalin ang isang elemento o bahagi ng isang hanay mula sa isang umiiral na hanay (dati, ang isang saklaw ay maaari lamang tanggalin nang buo). Halimbawa, pagkatapos alisin ang elemento 25 mula sa isang hanay na listahan na may mga saklaw na 24-30 at 40-50, ang listahan ay mananatiling 24, 26-30 at 40-50. Ang mga pag-aayos na kinakailangan para gumana ang automerging ay iaalok sa mga release ng pagpapanatili ng mga matatag na sangay ng 5.10+ kernel. # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
  • Nagbibigay-daan sa paggamit ng mga contact at range kapag nagma-map ng address translation (NAT). table ip nat { chain prerouting { type nat hook prerouting priority dstnat; pagtanggap ng patakaran; dnat to ip daddr. tcp dport map { 10.1.1.136 . 80: 1.1.2.69. 1024, 10.1.1.10-10.1.1.20. 8888-8889: 1.1.2.69. 2048-2049 } paulit-ulit } }
  • Nagdagdag ng suporta para sa "huling" expression, na nagbibigay-daan sa iyong malaman ang oras ng huling paggamit ng elemento ng panuntunan o listahan ng hanay. Ang tampok ay suportado simula sa Linux kernel 5.14. talahanayan ip x { set y { uri ng ip daddr . tcp dport size 65535 flags dynamic,timeout huling timeout 1h } chain z { type filter hook output priority filter; pagtanggap ng patakaran; update @y { ip daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . Ang laki ng tcp dport 65535 ay dynamic na mga flag, timeout huling timeout 1h elemento = { 172.217.17.14 . 443 huling ginamit 1s591ms timeout 1h mag-e-expire 59m58s409ms, 172.67.69.19 . 443 huling ginamit 4s636ms timeout 1h mag-e-expire 59m55s364ms, 142.250.201.72 . 443 huling ginamit 4s748ms timeout 1h mag-e-expire 59m55s252ms, 172.67.70.134 . 443 huling ginamit 4s688ms timeout 1h mag-e-expire 59m55s312ms, 35.241.9.150 . 443 huling ginamit 5s204ms timeout 1h mag-e-expire 59m54s796ms, 138.201.122.174 . 443 huling ginamit 4s537ms timeout 1h mag-e-expire 59m55s463ms, 34.160.144.191 . 443 huling ginamit 5s205ms timeout 1h mag-e-expire 59m54s795ms, 130.211.23.194 . 443 huling ginamit 4s436ms timeout 1h mag-e-expire 59m55s564ms } } }
  • Nagdagdag ng kakayahang tumukoy ng mga quota sa mga listahan ng hanay. Halimbawa, upang matukoy ang quota ng trapiko para sa bawat target na IP address, maaari mong tukuyin ang: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; pagtanggap ng patakaran; ip daddr @y drop } } # nft add element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list ruleset table netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbytes elements = { 8.8.8.8 10000 quota na higit sa 196 mbytes ang ginamit na 0 bytes } } chain y { type filter hook egress device "ethXNUMX" priority filter; pagtanggap ng patakaran; ip daddr @y drop } }
  • Ang paggamit ng mga constants sa mga set list ay pinapayagan. Halimbawa, kapag ginagamit ang patutunguhang address at VLAN ID bilang list key, maaari mong direktang tukuyin ang VLAN number (daddr . 123): table netdev t { set s { typeof ether saddr . laki ng vlan id 2048 pabago-bago ang mga flag, timeout timeout 1m } chain c { type filter hook ingress device eth0 priority 0; pagtanggap ng patakaran; uri ng ether != 8021q update @s { ether daddr . 123 } counter } }
  • Nagdagdag ng bagong utos na "sirain" upang walang kondisyon na magtanggal ng mga bagay (hindi tulad ng utos na tanggalin, hindi ito bumubuo ng ENOENT kapag sinusubukang tanggalin ang isang nawawalang bagay). Nangangailangan ng hindi bababa sa Linux kernel 6.3-rc upang gumana. sirain ang table ip filter

Pinagmulan: opennet.ru

Magdagdag ng komento