nftables paka filtrilo 1.0.7 eldono

La nftables 1.0.7 paka filtrila eldono estis publikigita, unuigante pakaĵetfiltrilinterfacojn por IPv4, IPv6, ARP kaj retaj pontoj (celitaj por anstataŭigi iptables, ip6table, arptables kaj ebtables). La pako nftables inkluzivas pakatajn filtrilkomponentojn, kiuj funkcias en uzantspaco, dum la kernnivelo estas provizita de la subsistemo nf_tables, kiu estas parto de la Linukso-kerno ekde eldono 3.13. Sur la kernnivelo, nur senmarka protokol-sendependa interfaco estas disponigita kiu disponigas bazajn funkciojn por eltiri datenojn de pakaĵetoj, elfarante operaciojn sur datenoj, kaj kontrolante fluon.

La filtraj reguloj mem kaj protokol-specifaj pritraktiloj estas kompilitaj en uzantspacan bajtkodon, post kiu tiu bajtokodo estas ŝarĝita en la kernon uzante la Netlink-interfacon kaj efektivigita en la kerno en speciala virtuala maŝino simila al BPF (Berkeley Packet Filters). Ĉi tiu aliro ebligas signife redukti la grandecon de la filtra kodo funkcianta ĉe la kernnivelo kaj movi ĉiujn funkciojn de analizaj reguloj kaj la logikon labori kun protokoloj en uzantspacon.

Ĉefaj ŝanĝoj:

  • Por sistemoj uzantaj Linuksan kernon 6.2+, subteno por vxlan, geneve, gre, kaj gretap protokolaj mapadoj estis aldonita, permesante al simplaj esprimoj kontroli kapliniojn en enkapsuligitaj pakaĵoj. Ekzemple, por kontroli la IP-adreson en la kaplinio de nestita pako de VxLAN, vi nun povas uzi la regulojn (sen neceso unue malenkapsuligi la VxLAN-kapon kaj ligi la filtrilon al la vxlan0-interfaco): ... 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 }
  • Subteno por aŭtomata kunfandado de restaĵoj post parta forigo de aro-lerta elemento estis efektivigita, kio ebligas al vi forigi elementon aŭ parton de gamo el ekzistanta gamo (antaŭe, gamo nur povus esti tute forigita). Ekzemple, post forigo de elemento 25 el arolisto kun gamoj 24-30 kaj 40-50, la listo restos 24, 26-30 kaj 40-50. La korektoj necesaj por aŭtomate funkcii estos ofertitaj en prizorgaj eldonoj de la stabilaj branĉoj de la 5.10+ kerno. # nft list-regulartabelo ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft list-reglstablo ip x { aro y { typeof tcp dport flags interval aŭtomate kunfandaj elementoj = { 24, 26-30, 40-50 } } }
  • Permesas la uzon de kontaktoj kaj intervaloj dum mapado de adrestraduko (NAT). table ip nat { chain prerouting { type nat hook prerouting prioritato dstnat; politiko akcepti; dnat al ip daddr. tcp dport mapo { 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 } persista } }
  • Aldonita subteno por la "lasta" esprimo, kiu ebligas al vi ekscii la tempon de la lasta uzo de regulelemento aŭ arolisto. La funkcio estas subtenata ekde Linukso-kerno 5.14. table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h } ĉeno z { type filter hook eligo prioritata filtrilo; politiko akcepti; ĝisdatigi @y { ip daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . tcp dport grandeco 65535 flagoj dinamika,timeout lasta timeout 1h elementoj = { 172.217.17.14 . 443 laste uzata 1s591ms-temptempo 1h eksvalidiĝas 59m58s409ms, 172.67.69.19 . 443 laste uzata 4s636ms tempodaŭro 1h eksvalidiĝas 59m55s364ms, 142.250.201.72 . 443 laste uzata 4s748ms timeout 1h eksvalidiĝas 59m55s252ms, 172.67.70.134 . 443 laste uzata 4s688ms timeout 1h eksvalidiĝas 59m55s312ms, 35.241.9.150 . 443 laste uzata 5s204ms timeout 1h eksvalidiĝas 59m54s796ms, 138.201.122.174 . 443 laste uzata 4s537ms tempodaŭro 1h eksvalidiĝas 59m55s463ms, 34.160.144.191 . 443 laste uzata 5s205ms tempodaŭro 1h eksvalidiĝas 59m54s795ms, 130.211.23.194 . 443 laste uzata 4s436ms tempo 1h eksvalidiĝas 59m55s564ms } } }
  • Aldonis la kapablon difini kvotojn en arolistoj. Ekzemple, por determini la trafikan kvoton por ĉiu cela IP-adreso, vi povas specifi: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" prioritatfiltrilo; politiko akcepti; ip daddr @y drop } } # nft aldonu elementon 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 kvoto super 10000 mbajtoj elementoj = { 8.8.8.8. 10000 kvoto pli ol 196 bajtoj uzata 0 bajtoj } } ĉeno y { tipo filtrilo hoko eliro aparato “ethXNUMX” prioritata filtrilo; politiko akcepti; ip daddr @y drop } }
  • La uzo de konstantoj en arolistoj estas permesita. Ekzemple, kiam vi uzas la cel-adreson kaj VLAN-ID kiel la listŝlosilon, vi povas rekte specifi la VLAN-numeron (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id-grandeco 2048 flagoj dinamika,timeout timeout 1m } ĉeno c { tipo filtrila hoko eniro aparato eth0 prioritato 0; politiko akcepti; etera tipo != 8021q ĝisdatigi @s { ether daddr . 123 } nombrilo } }
  • Aldonis novan "detrui" komandon por senkondiĉe forigi objektojn (male al la forigo komando, ĝi ne generas ENOENT kiam oni provas forigi mankantan objekton). Postulas almenaŭ Linuksan kernon 6.3-rc por funkcii. detrui tabel ip filtrilon

fonto: opennet.ru

Aldoni komenton