Ăshte publikuar versioni 1.0.7 i filtrit tĂ« paketave nftables, i cili unifikon ndĂ«rfaqet e filtrimit tĂ« paketave pĂ«r IPv4, IPv6, ARP dhe urat e rrjetit (synon tĂ« zĂ«vendĂ«sojĂ« iptables, ip6tables, arptables dhe ebtables). Paketa nftables pĂ«rmban komponente tĂ« filtrit tĂ« paketave qĂ« funksionojnĂ« nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit, ndĂ«rsa nĂ« nivelin e bĂ«rthamĂ«s, funksionon nĂ«n sistemin nf_tables, i cili Ă«shtĂ« i pranishĂ«m nĂ« bĂ«rthamĂ«n Linux qĂ« nga versioni 3.13. NĂ« nivelin e bĂ«rthamĂ«s, ofrohet vetĂ«m njĂ« ndĂ«rfaqe e pĂ«rgjithshme, e pavarur nga protokolli specifik, qĂ« ofron funksione bazĂ« pĂ«r nxjerrjen e tĂ« dhĂ«nave nga paketat, kryerjen e operacioneve me tĂ« dhĂ«na dhe menaxhimin e fluksit.
Rregullat e filtrimit 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ë mjedis të veçantë. makinën virtuale, i ngjan Berkley Packet Filters (BPF). Qashtu, kjo qasje lejon të reduktohet ndjeshëm madhësia e kodit të filtrimit që funksionon në nivelin e bërthamës dhe të nxirren të gjitha funksionet e analizës së rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.
Ndryshimet kryesore:
- Sistemet me bërthamë Linux 6.2+ tani mbështesin përputhjen e protokolleve vxlan, geneve, gre dhe gretap, çka lejon përdorimin e shprehjeve të thjeshta për të verifikuar headers në paketat e inkapsuluara. Për shembull, për të verifikuar adresat IP në titullin e paketës së ngjitur nga VxLAN, tani mund të përdoren rregulla (pa nevojën për dekapitulimin paraprak të titullit VxLAN dhe lidhjen e filtrit me ndërfaqen vxlan0): ⊠udp dport 4789 vxlan ip protokolli udp ⊠udp dport 4789 vxlan ip saddr 1.2.3.0/24 ⊠udp dport 4789 vxlan ip saddr . vxlan ip daddr { 1.2.3.4 . 4.3.2.1 }
- ĂshtĂ« implementuar mbĂ«shtetje pĂ«r automatikisht bashkimin e mbetjeve pas njĂ« fshirjeje tĂ« pjesshme tĂ« njĂ« elementi tĂ« listĂ«s set, duke lejuar fshirjen e njĂ« elementi ose tĂ« njĂ« pjese tĂ« njĂ« gamĂ« tĂ« njĂ« diapazoni ekzistues (mĂ« parĂ«, diapazoni mund tĂ« fshihej vetĂ«m nĂ« tĂ«rĂ«si). PĂ«r shembull, pas fshirjes sĂ« elementit 25 nga lista set me gamat 24-30 dhe 40-50, lista do tĂ« mbajĂ« 24, 26-30 dhe 40-50. Korrigjimet e nevojshme pĂ«r funksionimin e bashkimit automatik do tĂ« ofrohen nĂ« versionet korrigjuese tĂ« degĂ«ve stabile tĂ« bĂ«rthamĂ«s 5.10+. # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip x y { 25 } # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
- ĂshtĂ« lejuar pĂ«rdorimi i kontaktimit dhe gamave nĂ« hartimin e pĂ«rkthimit tĂ« adresave (NAT). table ip nat { chain prerouting { type nat hook prerouting priority dstnat; policy accept; 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 } persistent } }
- Shtuar mbështetje për shprehjen «last», që lejon të dihet koha e përdorimit të fundit të një elementi rregulli ose listës set. Kjo mundësi mbështetet që nga bërthama Linux 5.14. table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h } chain z { type filter hook output priority filter; policy accept; update @y { ip daddr . tcp dport } } } # nft list set ip x y table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 last used 1s591ms timeout 1h expires 59m58s409ms, 172.67.69.19 . 443 last used 4s636ms timeout 1h expires 59m55s364ms, 142.250.201.72 . 443 last used 4s748ms timeout 1h expires 59m55s252ms, 172.67.70.134 . 443 last used 4s688ms timeout 1h expires 59m55s312ms, 35.241.9.150 . 443 last used 5s204ms timeout 1h expires 59m54s796ms, 138.201.122.174 . 443 last used 4s537ms timeout 1h expires 59m55s463ms, 34.160.144.191 . 443 last used 5s205ms timeout 1h expires 59m54s795ms, 130.211.23.194 . 443 last used 4s436ms timeout 1h expires 59m55s564ms } } }
- Shtuar mundësia për përcaktimin e kuotave në listat set. Për shembull, për të përcaktuar një kuotë për trafikun për çdo adresë IP target, mund të specifikohet: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } } # nft add element inet x y { 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 quota over 10000 mbytes used 196 bytes } } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } }
- ĂshtĂ« lejuar pĂ«rdorimi i konstantave nĂ« listat set. PĂ«r shembull, kur pĂ«rdoret si çelĂ«s i listĂ«s adresĂ«n e destinacionit dhe identifikuesin VLAN, mund tĂ« specifikohet direkt numri i VLAN (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id size 2048 flags dynamic,timeout timeout 1m } chain c { type filter hook ingress device eth0 priority 0; policy accept; ether type != 8021q update @s { ether daddr . 123 } counter } }
- Shtuar urdhri i ri «destroy» për fshirjen pa kushte të objekteve (në dallim nga urdhri i fshirjes, nuk gjeneron ENOENT kur përpiqet të fshijë një objekt të munguar). Për funksionimin kërkohet të paktën bërthama Linux 6.3-rc. destroy table ip filter
Burimi: opennet.ru
