ĂshtĂ« publikuar lĂ«shimi i filtrit tĂ« paketave nftables 1.0.6, qĂ« unifikon ndĂ«rfaqet e filtrimit tĂ« paketave pĂ«r IPv4, IPv6, ARP dhe urat rrjetĂ«s (nĂ« synimin pĂ«r tĂ« zĂ«vendĂ«suar iptables, ip6tables, arptables dhe ebtables). Paketa nftables pĂ«rfshin komponentĂ« tĂ« filtrit tĂ« paketave qĂ« punojnĂ« nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit, ndĂ«rsa nĂ« nivelin e bĂ«rthamĂ«s funksionin e siguron nĂ«n-sistemi nf_tables, i pranishĂ«m nĂ« bĂ«rthamĂ«n Linux qĂ« prej lĂ«shimit 3.13. NĂ« nivelin e bĂ«rthamĂ«s ofrohet vetĂ«m njĂ« ndĂ«rfaqe e pĂ«rgjithshme, e pavarur nga protokolli konkret dhe qĂ« siguron funksione thelbĂ«sore pĂ«r nxjerrjen e tĂ« dhĂ«nave nga paketat, realizimin e operacioneve me tĂ« dhĂ«nat dhe menaxhimin e rrjedhave.
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:
- Në optimizatorin e rregullave, i cili thirret kur specifikohet opsioni "-o/--optimize", është vendosur paketa automatike e rregullave përmes bashkimit dhe transformimit në lista të map-ave dhe set-ave. Për shembull, rregullat # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; policy drop; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept } } pas ekzekutimit "nft -o -c -f ruleset.nft" do të shndërrohen si më poshtë: ruleset.nft:4:17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept ruleset.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept ruleset.nft:6:17-77: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept ruleset.nft:7:17-83: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept në: iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 1.1.1.2 . 2.2.2.4, eth1 . 1.1.1.2 . 2.2.3.0/24, eth1 . 1.1.1.2 . 2.2.4.0-2.2.4.10, eth2 . 1.1.1.3 . 2.2.2.5 } accept
- Optimizatori gjithashtu mund të transformojë në një formë më kompakte rregullat, në të cilat janë përdorur tashmë lista të thjeshta set-esh, për shembuj rregullat: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; policy drop; iifname "lo" accept ct state established,related accept comment "Në trafikun që ne origjinojmë, ne besojmë" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept } } pas ekzekutimit "nft -o -c -f ruleset.nft" do të paketohen si më poshtë: ruleset.nft:6:22-149: iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept ruleset.nft:7:22-143: iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept në: iifname . ip saddr . ip daddr . udp sport . udp dport { enp0s31f6 . 209.115.181.102 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 216.197.228.230 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 64.59.144.17 . 10.0.0.149 . 53 . 32768-65535, enp0s31f6 . 64.59.150.133 . 10.0.0.149 . 53 . 32768-65535 } accept
- ĂshtĂ« zgjidhur problemi me gjenerimin e kodit tĂ« bajtĂ«ve pĂ«r bashkimin e intervaleve, ku aplikohen tipe me renditje tĂ« ndryshme bajtĂ«sh, pĂ«r shembull IPv4 (renditje nĂ« rrjet tĂ« bajtĂ«ve) dhe meta mark (renditje sistemike e bajtĂ«ve). table ip x { map w { typeof ip saddr . meta mark : verdict flags interval counter elements = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : accept, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : accept, } } chain k { type filter hook input priority filter; policy drop; ip saddr . meta mark vmap @w } }
- ĂshtĂ« realizuar mapimi i protokolleve tĂ« rralla kur pĂ«rdoren shprehjet raw, pĂ«r shembull: meta l4proto 91 @th,400,16 0x0 accept
- Janë zgjidhur problemet me futjen e rregullave me intervuale: insert rule x y tcp sport { 3478-3497, 16384-16387 } counter accept
- API JSON është përmirësuar, duke përfshirë mbështetje për shprehjet në set- dhe map-lista.
- Në shtesa për bibliotekën python nftables, është lejuar ngarkimi i grupeve të rregullave për përpunim në modalitetin e verifikimit ("-c") dhe është shtuar mbështetje për definimin e jashtëm të variablave.
- Në elementët e listave set është lejuar shtimi i komenteve.
- Në byte ratelimit është lejuar specifikimi i vlerës zero.
Burimi: opennet.ru
