ĂshtĂ« publikuar versioni i filtrit tĂ« paketave nftables 1.1.0, i cili unifikon ndĂ«rfaqet e filtrimit tĂ« paketave pĂ«r IPv4, IPv6, ARP dhe ura rrjetesh (synon tĂ« zĂ«vendĂ«sojĂ« iptables, ip6tables, arptables dhe ebtables). Ndryshimi i dukshĂ«m i numrit tĂ« versionit nuk Ă«shtĂ« i lidhur me ndonjĂ« ndryshim thelbĂ«sor, por Ă«shtĂ« thjesht njĂ« pasojĂ« e vazhdimit tĂ« numĂ«rimit nĂ« sistemin dekadĂ« (publikimi i kaluar ishte 1.0.9). NĂ« tĂ« njĂ«jtĂ«n kohĂ« Ă«shtĂ« publikuar versioni i bibliotekĂ«s pĂ«rkrahĂ«se libnftnl 1.2.7, e cila ofron njĂ« API tĂ« nivelit tĂ« ulĂ«t pĂ«r ndĂ«rveprimin me nĂ«n-sistemin nf_tables.
Paketa nftables përmban komponente të filtrit të paketave që funksionojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamor punon nën-sistemi nf_tables, i cili është pjesë e bërthamës Linux që nga versione 3.13. Në nivelin e bërthamës ofrohet vetëm një ndërfaqe e përgjithshme, e pavaruar nga protokolli i veçantë dhe që ofron funksione bazë për nxjerrjen e të dhënave nga paketat, për kryerjen e operacioneve me të dhënat dhe menaxhimin e fluksit.
Rregullat për filtrimin dhe trajtuesit specifikë për protokollet kompilohet në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod bytes ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një mënyrë të veçantë, që i ngjan BPF (Filtrat e Paketa Berkeley). Ky qasje lejon të reduktohet ndjeshëm madhësia e kodit të filtrimit që operon në nivelin e bërthamës dhe të transferohet të gjitha funksionet e përpunimit të rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit. makinën virtuale, që ngjan me BPF (Berkeley Packet Filters). Ky qasje lejon reduktimin e ndjeshëm të madhësisë së kodit të filtrimit që operon në nivelin e bërthamës dhe nxjerrjen e të gjitha funksioneve për të analizuar rregullat dhe logjikën e punës me protokollet në hapësirën e përdoruesit.
Ndryshimet kryesore:
- Në shprehjet map është shtuar mbështetje për variablat: define dst_map = { ::1234 : 5678 } table ip6 nat { map dst_map { typeof ip6 daddr : tcp dport; elements = $dst_map } chain prerouting { ip6 nexthdr tcp redirect to ip6 daddr map @dst_map } }
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r VLAN: ip saddr 10.1.1.1 icmp type echo-request vlan id set 321 # payload ether type 8021ad vlan id 10 vlan type 8021q vlan id 100 vlan type ip accept
- Për shprehjet «log» është angazhuar një preprocessues të ri string me mbështetje për variablat: define message=»test» log prefix «my $message»
- Në llogaritjen e vlerës së shprehjes «meta hour» është realizuar përpunimi i offset negativ në zonën e kohës, e cila është e përcaktuar përmes variablit të mjedisit TZ: TZ=UTC-4 nft add rule x y meta hour «22:00»
- ĂshtĂ« siguruar konvertimi i rendit tĂ« bajtĂ«ve gjatĂ« pĂ«rdorimit tĂ« shprehjeve ct dhe meta, si dhe gjatĂ« pĂ«rdorimit tĂ« operacioneve tĂ« bashkimit dhe pĂ«rcaktimit tĂ« intervaleve nĂ« set-ekzistenca. map mapv6 { typeof ip6 dscp : meta mark; } meta mark set ip6 dscp map @map1 do tĂ« shihet kodi bajt: [ payload load 2b @ network header + 0 => reg 1 ] [ bitwise reg 1 = ( reg 1 & 0x0000c00f ) ^ 0x00000000 ] [ byteorder reg 1 = ntoh(reg 1, 2, 2) ] [ bitwise reg 1 = ( reg 1 > 0x00000006 ) ] [ lookup reg 1 set mapv6 dreg 1 ] [ meta set mark with reg 1 ]
- ĂshtĂ« rinisur mbĂ«shtetja pĂ«r komandĂ«n «replace rule». replace rule ip t1 c1 handle 3 âjhash ip protocol . ip saddr mod 170 vmap { 0-94 : goto wan1, 95-169 : goto wan2, 170-269 }â
- ĂshtĂ« rinisur mundĂ«sia pĂ«r tĂ« shtuar pajisje rrjeti nĂ« ekzistencat e flowtable: create flowtable inet filter f1 { hook ingress priority 0; counter } add flowtable inet filter f1 { devices = { dummy1 } ; }
- Janë zgjidhur problemet gjatë përdorimit të komandës «create set»: define ip-block-4 = { 1.1.1.1 } create set netdev filter ip-block-4-test { type ipv4_addr flags interval auto-merge elements = $ip-block-4 }
- Janë zgjidhur problemet gjatë përdorimit të përfaqësimit digjital të opsioneve tcp: tcp option 254
- Janë zgjidhur problemet gjatë përdorimit të shprehjeve meta dhe ct me set-map: meta mark set vlan id map { 1 : 0x00000001, 4095 : 0x00004095 }
- Në shprehjet payload dhe concat është e ndaluar specifikimi i të dhënave më të mëdha se 512 bajt.
- Kur ekzekutohet urdhëri «nft describe», janë implementuar vlerat nga skedaret group, rt_mark dhe rt_realms, të vendosura në katalgët /etc/iproute2/ dhe /use/share/iproute2/. # nft describe meta rtclassid meta expression, datatype realm (sfera e routing) (basetype integer), 32 bits konstanta simbolike të paracaktuara nga /etc/iproute2/rt_realms (në decimal): cosmos 0 Refuzoni deklaratën me gamë meta mark set 0-100
- Operacioni i shfaqjes sĂ« listĂ«s sĂ« tabelave Ă«shtĂ« pĂ«rshpejtuar. ĂshtĂ« implementuar mbĂ«shtetje pĂ«r opsionin -t/âterse pĂ«r pĂ«rshpejtimin e komandave «list table» dhe «list set».
- ĂshtĂ« siguruar transformimi i shprehjeve meter nĂ« grupe dinamike set: add rule t c tcp dport 80 meter m size 128 { ip saddr timeout 2s limit rate 10/second } do tĂ« transformohet nĂ« set m { type ipv4_addr size 128 flags dynamic,timeout } tcp dport 80 update @m { ip saddr timeout 2s limit rate 10/second burst 5 packets }
- Në paraqitjen në formatin JSON është shtuar mbështetje për objekte synproxy dhe grupe map me të dhëna të bashkuara.
- Në grupet set, të specifikuara në formatin JSON, është realizuar mbështetje për flamurin auto-merge.
- Kur përdorim paraqitjen në formatin JSON, lejohet specifikimi i disa pajisjeve në blokun «chain».
- Me pĂ«rdorimin e opsioneve -f/âfilename, pĂ«rpunimi i rrugĂ«ve tani bĂ«het nĂ« lidhje me katalgun e skedarit aktual.
- Me pĂ«rdorimin e opsioneve -I/âinclude, ekzekutimi i rrugĂ«ve me tĂ« dhĂ«na tani bĂ«het nga fundi i listĂ«s.
- Optimizimi i opsioneve -o/âoptimize Ă«shtĂ« rregulluar me shprehje qĂ« pĂ«rmbajnĂ« numĂ«rues vlerash: # nft -c -o -f ruleset.nft Bashkimi: ruleset.nft:5:17-45: ct state invalid counter drop ruleset.nft :6:17-59: ct state established,related counter accept nĂ«: ct state vmap { invalid counter : drop, established counter : accept, related counter : accept } Bashkimi: ruleset.nft:7:17-43: tcp dport 80 counter accept ruleset.nft:8:17-44: tcp dport 123 counter accept nĂ«: tcp dport { 80, 123 } counter accept Bashkimi: ruleset.nft:9:17-64: ip saddr 1.1.1.1 ip daddr 2.2.2.2 counter accept ruleset.nft:10:17-62: ip saddr 1.1.1.2 ip daddr 3.3.3.3 counter drop nĂ«: ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 counter : accept, 1.1.1.2 . 3.3.3.3 counter : drop }
- ĂshtĂ« rikthyer kompatibiliteti me dump-t e elementit set, tĂ« krijuara nĂ« nftables pĂ«rpara versionit 0.9.8.
Burimi: opennet.ru
