nftables packet filter 1.0.3 nga pagpagawas

Ang nftables 1.0.3 packet filter release gimantala, naghiusa sa packet filtering interfaces para 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.3 aron magtrabaho gilakip sa Linux 5.18 kernel.

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:

  • Gisuportahan na karon sa mga set-list ang pagpares sa mga ngalan sa interface sa network pinaagi sa usa ka maskara, pananglitan, gipiho gamit ang karakter nga "*": mga testimonya sa table inet {set simple_wild {type ifname flags interval elements = {"abcdef*", "othername", "ppp0" }} chain v4icmp {type filter hook input priority 0; pagdawat sa palisiya; iifname @simple_wild counter packets 0 bytes 0 iifname {"abcdef*", "eth0" } counter packets 0 bytes 0 } }
  • Gipatuman ang awtomatik nga paghiusa sa mga intersecting set-list nga mga elemento sa panahon sa operasyon. Kaniadto, kung gitakda ang kapilian nga "auto-merge", ang paghiusa gihimo sa yugto sa pagdeklarar sa mga lagda, apan karon kini molihok usab kung gidugangan ang mga bag-ong elemento sa proseso. Pananglitan, sa lakang sa deklarasyon, ang listahan gitakda y {flags interval auto-merge nga mga elemento = {1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8. 3.3.3.4, 3.3.3.5 , 1.2.3.0 } } mahimong mga elemento = { 24/3.3.3.3, 3.3.3.5-4.4.4.4, 4.4.4.8-1.2.3.0 } ug unya kung magdugang ka ug bag-ong mga elemento # nft add element ip xy { 1.2.4.255 -3.3.3.6, 1.2.3.0 } nahimong mga elemento = { 1.2.4.255-3.3.3.3, 3.3.3.6-4.4.4.4, 4.4.4.8-XNUMX }

    Kung imong tangtangon ang tagsa-tagsa nga mga butang gikan sa lista nga naa sa sulod sa naglungtad nga mga butang, ang range maminusan o mabahin.

  • Gidugang nga suporta alang sa paghiusa sa daghang mga lagda sa paghubad sa adres (NAT) sa usa ka lista sa mapa sa pag-optimize sa lagda nga gitawag nga kapilian nga "-o/--optimize". Pananglitan, para sa set # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; pagkunhod sa palisiya; ip saddr 1.1.1.1 tcp dport 8000 snat sa 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat sa 5.5.5.5:90 }}

    Ang pagpatuman sa "nft -o -c -f ruleset.nft" mag-convert sa bulag nga "ip saddr" nga mga lagda ngadto sa listahan sa mapa: snat to ip saddr . tcp dport nga mapa {1.1.1.1. 8000 : 4.4.4.4 . 80, 2.2.2.2. 8001:5.5.5.5. 90}

    Sa susama, ang hilaw nga mga ekspresyon mahimong makombertir sa mapa-listahan: # cat ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 ,62 78x160,128e0e goto nat_dns_this_0 udp length 31393032383939353831343037320-5301 @th,62 78x160,128e0e goto nat_dns_saturn_0 udp length 31363436323733373931323934300-5301 @th62 78e goto nat_dns_saturn_160,128 udp length 0-0 @th,32393535373539353636383732310 5302x62e78e goto drop nat_dns_160,128} }0

    pagkahuman sa pag-optimize, nakakuha kami usa ka lista sa mapa: udp gitas-on. @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • Gitugotan ang paggamit sa hilaw nga mga ekspresyon sa mga operasyon sa concatenation. Pananglitan: # nft add rule xy ip saddr . @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } o lamesa x {set y {typeof ip saddr. @ih,32,32 elemento = { 1.1.1.1 . 0x14 } } }
  • Gidugang nga suporta alang sa pagtino sa integer nga mga natad sa header sa mga operasyon sa concatenation: table inet t {map m1 {typeof udp length. @ih,32,32 : hukom nagbandera sa mga elemento sa agwat = {20-80. 0x14 : dawaton, 1-10 . 0xa : drop } } chain c { type filter hook input priority 0; pagkunhod sa palisiya; gitas-on sa udp. @ih,32,32 vmap @m1 } }
  • Gidugang nga suporta alang sa pag-reset sa mga opsyon sa TCP (nagtrabaho lamang sa Linux kernel 5.18+): tcp flags syn reset tcp option sack-perm
  • Mas paspas nga pagpatuman sa chain output commands ("nft list chain xy").

Source: opennet.ru

Idugang sa usa ka comment