Nftables 1.1.0 paket filtrinin yayımı gerçekleşti; bu versiyon, IPv4, IPv6, ARP ve ağ köprüleri için paket filtreleme arayüzlerini birleştiriyor (iptables, ip6tables, arptables ve ebtables'ın yerini almayı hedefliyor). Önemli bir sürüm numarası değişikliği, radikal değişikliklere dayanmaz, yalnızca ondalık sayı sistemindeki ardışık numaralandırmanın devam etmesinin bir sonucudur (önceki sürüm 1.0.9'dur). Aynı anda, nf_tables alt sistemi ile etkileşim için düşük seviyeli bir API sağlayan libnftnl 1.2.7 kütüphanesinin yayımı da gerçekleşti.
Nftables paketinə, istifadəçi mühitində işləyən paket filtrinin komponentləri daxildir, kernel səviyyəsində isə Linux 3.13 versiyasından başlayaraq nf_tables alt sistemi bununla məşğuldur. Kernel səviyyəsində yalnız spesifik protokoldan asılı olmayan ümumi bir interfeys təqdim olunur, bu da paketlərdən məlumat çıxarma, məlumatlarla əməliyyatlar aparma və axının idarə edilməsi üçün əsas funksiyaları təmin edir.
Filtrasiya qaydaları və protokollara xas emalçılar, istifadəçi mühitində bytecode-a tərtib edilir və daha sonra bu bytecode Netlink interfeysi vasitəsilə kernelə yüklənir və kernel daxilində xüsusi bir mühitdə icra olunur. virtual maşinədə, BPF-yə (Berkeley Packet Filters) bənzəyir. Bu yanaşma, kernel səviyyəsində işləyən filtrasiya kodunun ölçüsünü əhəmiyyətli dərəcədə azaltmağa imkan verir və bütün qayda analizi və protokollara dair məntiqi istifadəçi mühitinə köçürür.
Əsas dəyişikliklər:
- Map ifadelerine değişken desteği eklendi: 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 } }
- VLAN desteği eklendi: ip saddr 10.1.1.1 icmp type echo-request vlan id set 321 # yük ether type 8021ad vlan id 10 vlan type 8021q vlan id 100 vlan type ip accept
- Log ifadeleri için değişken desteği sunan yeni bir dize ön işleyici devreye alındı: define message=»test» log prefix «my $message»
- «Meta hour» ifadesinin değerini hesaplarken, TZ ortam değişkeni ile belirlenen saat diliminde negatif bir kaymanın işlenmesi sağlandı: TZ=UTC-4 nft add rule x y meta hour «22:00»
- Ct ve meta ifadeleri kullanıldığında, birleştirme operatörleri ve set setleri içindeki aralıkların belirlenmesinde bayt sırasının dönüştürülmesi sağlandı. map mapv6 { typeof ip6 dscp : meta mark; } meta mark set ip6 dscp map @map1 üretilecek bayt kodu: [ 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 ]
- «Replace rule» komutunun desteği yeniden sağlandı. 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 }’
- Mevcut flowtable'lara ağ cihazlarının eklenmesi yeniden sağlandı: create flowtable inet filter f1 { hook ingress priority 0; counter } add flowtable inet filter f1 { devices = { dummy1 } ; }
- «Create set» komutunu kullanırken yaşanan sorunlar çözüldü: 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 }
- Tcp seçeneklerinin sayısal temsili kullanılırken yaşanan sorunlar çözüldü: tcp option 254
- Map setleri ile meta ve ct ifadelerini kullanırken yaşanan sorunlar çözüldü: meta mark set vlan id map { 1 : 0x00000001, 4095 : 0x00004095 }
- payload və concat ifadələrində 512 baytdan böyük verilənlərin göstərilməsi qadağandır.
- «nft describe» əmri icra edilərkən group, rt_mark və rt_realms fayllarından alınan dəyərlərin hesablanması təmin edilmişdir, bunlar /etc/iproute2/ və /use/share/iproute2/ qovluqlarında yerləşdirilib. # nft describe meta rtclassid meta ifadə, məlumat tipi realm (routinq realm) (əsas tip tam ədəd), 32 bit /etc/iproute2/rt_realms-dan əvvəldən müəyyən edilmiş simvolik sabitlər (onluq): cosmos 0 Aralıqlı ilə bəyan etmək qadağandır meta mark set 0-100
- Cədvəllərin siyahısını göstərmə prosesi sürətləndirilib. «list table» və «list set» əmrləri üçün -t/—terse seçiminin dəstəyi təmin edilmişdir.
- meter ifadələrinin dinamik set-daxilinə çevrilməsi təmin olunub: add rule t c tcp dport 80 meter m size 128 { ip saddr timeout 2s limit rate 10/second } aşağıdakı şəkildə çevriləcək: 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 }
- JSON formatında təqdimatda synproxy obyektləri və birləşdirilmiş verilənlərdən ibarət map-daxiləri üçün dəstək əlavə edilmişdir.
- JSON formatında müəyyən edilmiş set-daxilərdə auto-merge flag-ının dəstəyi təmin olunub.
- JSON formatında təqdimatda «chain» blokunda bir neçə cihazın göstərilməsinə icazə verilir.
- f/—filename seçimi ilə hazırda olan faylın qovluğundan asılı olan yolların emalı təmin edilmişdir.
- I/—include seçimi ilə, default olaraq yolların siyahısı indi sona doğru keçilir.
- -o/—optimize seçimi ilə ifadələrdə dəyər sayğacları olan ifadələrin işləmə prosesi təqdim olunub: # nft -c -o -f ruleset.nft Birleştirme: ruleset.nft:5:17-45: ct state invalid counter drop ruleset.nft :6:17-59: ct state established,related counter accept birləşdirilərək: ct state vmap { invalid counter : drop, established counter : accept, related counter : accept } Birleştirme: ruleset.nft:7:17-43: tcp dport 80 counter accept ruleset.nft:8:17-44: tcp dport 123 counter accept birləşdirilərək: tcp dport { 80, 123 } counter accept Birleştirme: 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 birləşdirilərək: 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 }
- nftables 0.9.8-dən əvvəlki set elementinin dump-ları ilə uyğunsuzluğu bərpa edilmişdir.
Mənbə: opennet.ru
