nftables paket filtre sürümü 1.0.6

IPv1.0.6, IPv4, ARP ve ağ köprüleri için paket filtreleme arayüzlerini birleştiren nftables 6 paket filtre sürümü yayınlandı (iptables, ip6table, arptables ve ebtables'ın yerini almayı hedefliyor). Nftables paketi, kullanıcı alanında çalışan paket filtre bileşenlerini içerirken çekirdek düzeyi, 3.13 sürümünden bu yana Linux çekirdeğinin bir parçası olan nf_tables alt sistemi tarafından sağlanır. Çekirdek düzeyinde, paketlerden veri çıkarmak, veriler üzerinde işlemler gerçekleştirmek ve akışı kontrol etmek için temel işlevleri sağlayan yalnızca genel protokolden bağımsız bir arayüz sağlanır.

Filtreleme kurallarının kendileri ve protokole özgü işleyiciler, kullanıcı alanı bayt kodu halinde derlenir, ardından bu bayt kodu Netlink arayüzü kullanılarak çekirdeğe yüklenir ve çekirdekte BPF'ye (Berkeley Paket Filtreleri) benzeyen özel bir sanal makinede yürütülür. Bu yaklaşım, çekirdek düzeyinde çalışan filtreleme kodunun boyutunu önemli ölçüde azaltmayı ve kuralların ayrıştırılmasının tüm işlevlerini ve protokollerle çalışma mantığını kullanıcı alanına taşımayı mümkün kılar.

Ana değişiklikler:

  • "-o/--optimize" seçeneğini belirtirken çağrılan kural iyileştiricisinde, kuralların birleştirilip harita ve set listelerine dönüştürülmesiyle otomatik olarak paketlenmesi ayarlandı. Örneğin, kurallar şunlardır: # cat ruleset.nft table ip x { zincir y { type filter hook giriş önceliği filtresi; politika düşüşü; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 meta iifname eth1 ip saddr 1.1.1.2'yi kabul et ip daddr 2.2.2.4 meta iifname eth1 ip saddr 1.1.1.2'yi kabul et iifname eth2.2.3.0 ip saddr 24'i kabul et .1 ip daddr 1.1.1.2-2.2.4.0 kabul meta iifname eth2.2.4.10 ip saddr 2 ip daddr 1.1.1.3 kabul } } "nft -o -c -f ruleset.nft" sonrasında şuna dönüştürülecektir: kural seti. nft:2.2.2.5:4-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.1 kabul kural seti.nft:2.2.2.3:5-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.2 kabul kural seti.nft: 2.2.2.4:6-17: meta iifname eth77 ip saddr 1 ip daddr 1.1.1.2/2.2.3.0 kabul kural seti.nft:24:7-17: meta iifname eth83 ip saddr 1 ip daddr 1.1.1.2-2.2.4.0 kabul et ruleset.nft:2.2.4.10:8-17: meta iifname eth74 ip saddr 2 ip daddr 1.1.1.3 şunu kabul et: iifname . ip saddr. ip daddr { eth2.2.2.5 . 1. 1.1.1.1, et2.2.2.3 . 1. 1.1.1.2, et2.2.2.4 . 1. 1.1.1.2/2.2.3.0, et24 . 1. 1.1.1.2-2.2.4.0, et2.2.4.10 . 2. 1.1.1.3 } kabul et
  • Optimize edici ayrıca halihazırda basit ayar listelerini kullanan kuralları daha derli toplu bir biçimde yoğunlaştırabilir, örneğin: # cat ruleset.nft table ip filter { zincir girişi { type filter hook giriş önceliği filtresi; politika düşüşü; iifname "lo" kabul et ct durumu kuruldu, ilgili kabul et "Bizim yarattığımız trafikte güveniyoruz" 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 kabul et 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 kabul } } "nft -o -c -f ruleset.nft" komutunu çalıştırdıktan sonra bu şekilde paketlenecek : ruleset.nft:6:22-149: iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp spor 123 udp dport 32768-65535 kabul ruleset.nft:7:22-143 0 : iifname "enp31s6f64.59.144.17" ip saddr { 64.59.150.133, 10.0.0.149 } ip daddr 53 udp spor 32768 udp dport 65535-0 kabul et: iifname . ip saddr. ip daddr. udp sporu udp dport'u { enp31s6f209.115.181.102 . 10.0.0.149 . 123 . 32768. 65535-0, enp31s6f216.197.228.230 . 10.0.0.149 . 123 . 32768. 65535-0, enp31s6f64.59.144.17 . 10.0.0.149. 53 . 32768. 65535-0, enp31s6f64.59.150.133 . 10.0.0.149. 53 . 32768. 65535-XNUMX } kabul et
  • IPv4 (ağ endian'ı) ve meta işareti (sistem endian'ı) gibi farklı endianness'a sahip türleri kullanan aralıkları birleştirmek için bayt kodu oluşturmayla ilgili sorun çözüldü. tablo ip x { harita w { typeof ip saddr. meta işareti : karar bayrakları aralık sayacı öğeleri = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : kabul et, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : kabul et, } } zincir k { type filtre kancası giriş önceliği filtresi; politika düşüşü; ip saddr. meta işareti vmap @w } }
  • Ham ifadeler kullanılırken geliştirilmiş nadir protokol eşlemeleri, örneğin: meta l4proto 91 @th,400,16 0x0 kabul etme
  • Kuralların aralıklarla etkinleştirilmesiyle ilgili sorunlar düzeltildi: kural ekle xy tcp spor { 3478-3497, 16384-16387 } sayaç kabul et
  • JSON API, küme ve harita listelerindeki ifadeleri destekleyecek şekilde geliştirildi.
  • Nftables python kütüphanesinin uzantılarında, kural setlerinin kontrol modunda ("-c") işlenmek üzere yüklenmesine izin verilir ve harici değişken tanımı desteği eklenmiştir.
  • Set listelerinin öğelerinde yorum eklenmesine izin verilir.
  • Bayt oranı limitinde sıfır değeri belirtilmesine izin verilir.

Kaynak: opennet.ru

Yorum ekle