nftables packet filter 1.0.0 nga pagpagawas

Ang pagpagawas sa packet filter nftables 1.0.0 gimantala, naghiusa sa packet filtering interface alang sa IPv4, IPv6, ARP ug network bridges (nga gitumong sa pag-ilis sa mga iptables, ip6table, arptables ug ebtables). Ang mga pagbag-o nga gikinahanglan alang sa pagpagawas sa nftables 1.0.0 aron magtrabaho gilakip sa Linux 5.13 kernel. Ang usa ka mahinungdanon nga pagbag-o sa numero sa bersyon wala nalangkit sa bisan unsang sukaranan nga mga pagbag-o, apan usa lamang ka sangputanan sa makanunayon nga pagpadayon sa pag-numero sa decimal nga notasyon (ang miaging pagpagawas mao ang 0.9.9).

Ang nftables package naglakip sa packet filter components nga nagdagan sa user space, samtang ang kernel level gihatag sa nf_tables subsystem, nga nahimong bahin sa Linux kernel sukad sa pagpagawas sa 3.13. Sa lebel sa kernel, usa lamang ka generic nga protocol-independent nga interface ang gihatag nga naghatag ug sukaranan nga mga gimbuhaton alang sa pagkuha sa datos gikan sa mga pakete, pagpahigayon sa mga operasyon sa datos, ug pagkontrol sa dagan.

Ang mga lagda sa pagsala sa ilang kaugalingon ug mga tigdumala nga espesipiko sa protocol gihugpong ngadto sa user-space bytecode, pagkahuman niini nga bytecode gikarga sa kernel gamit ang Netlink interface ug gipatuman sa kernel sa usa ka espesyal nga virtual machine nga susama sa BPF (Berkeley Packet Filters). Kini nga pamaagi nagpaposible nga makunhuran ang gidak-on sa code sa pagsala nga nagdagan sa lebel sa kernel ug ibalhin ang tanan nga mga gimbuhaton sa mga lagda sa pag-parse ug ang lohika sa pagtrabaho kauban ang mga protocol sa wanang sa gumagamit.

Panguna nga mga inobasyon:

  • Ang suporta alang sa "*" nga elemento sa maskara gidugang sa mga lista sa set, nga gi-trigger alang sa bisan unsang mga pakete nga dili mahulog sa ilawom sa ubang mga elemento nga gihubit sa set. table x {map blocklist {type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : drop } } chain y {type filter hook prerouting priority 0; pagdawat sa palisiya; ip saddr vmap @blocklist } }
  • Posible nga ipasabut ang mga variable gikan sa command line gamit ang "--define" nga kapilian. # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev priority 0; pagkunhod sa palisiya; } } # nft β€”define dev="{ eth0, eth1 }" -f test.nft
  • Sa mga listahan sa mapa, ang paggamit sa kanunay (stateful) nga mga ekspresyon gitugotan: table inet filter {map portmap {type inet_service: verdict counter elements = {22 counter packets 0 bytes 0: jump ssh_input, * counter packets 0 bytes 0: drop}} chain ssh_input {} chain wan_input {tcp dport vmap @portmap } chain prerouting {type filter hook prerouting priority raw; pagdawat sa palisiya; iif vmap {"lo": ambak wan_input}}}}
  • Gidugang ang "listahan nga mga kaw-it" nga mando aron ipakita ang usa ka lista sa mga tigdumala alang sa usa ka gihatag nga pamilya sa pakete: # nft list hooks ip device eth0 family ip { hook ingress {+0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables] } hook input {-0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } hook forward {-0000000225 selinux_ipv4_forward 0000000000 chain ip ac [nf_tables] 0000000225 hook out } hook postrouting { +4 0000000225 selinux_ipv4_postroute } }
  • Gitugotan sa mga bloke sa pila ang jhash, symhash, ug numgen nga mga ekspresyon nga mahiusa aron maapod-apod ang mga pakete sa mga pila sa wanang sa tiggamit. … pila sa symhash mod 65536 … pila nga mga bandera laktawan sa numgen inc mod 65536 … pila sa jhash oif . meta mark mod 32 "pila" mahimo usab nga ikombinar sa mga listahan sa mapa aron makapili ug pila sa luna sa user base sa arbitraryong mga yawe. ... queue flags bypass to oifname map { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Posible nga mapalapad ang mga variable nga naglakip sa usa ka set nga lista sa daghang mga mapa. define interfaces = { eth0, eth1 } table ip x { chain y { type filter hook input priority 0; pagdawat sa palisiya; iifname vmap {lo: accept, $interfaces: drop} } } # nft -f x.nft # nft list ruleset table ip x { chain y {type filter hook input priority 0; pagdawat sa palisiya; iifname vmap {"lo": dawaton, "eth0": drop, "eth1": drop }}}
  • Gitugotan ang paghiusa sa mga vmaps (mapa sa hukom) sa mga interval: # nft add rule xy tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : dawaton }
  • Gipasimple nga syntax alang sa NAT mappings. Gitugotan nga ipiho ang mga han-ay sa adres: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } o tin-aw nga mga IP address ug port: ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 : . 80 } o mga kombinasyon sa IP range ug ports: ... dnat to ip saddr . tcp dport nga mapa {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Source: opennet.ru

Idugang sa usa ka comment