nftables paket filtre sürümü 0.9.9

IPv0.9.9, IPv4, ARP ve ağ köprüleri için paket filtreleme arayüzlerini birleştiren (iptables, ip6table, arptables ve ebtables'ın yerini almayı amaçlayan) paket filtresi nftables 6 sürümü yayınlandı. Aynı zamanda, nf_tables alt sistemiyle etkileşim için düşük seviyeli bir API sağlayan yardımcı kitaplık libnftnl 1.2.0'ın sürümü yayınlandı. Nftables 0.9.9 sürümünün çalışması için gereken değişiklikler Linux çekirdeği 5.13-rc1'de bulunmaktadır.

Nftables paketi, kullanıcı alanında çalışan paket filtre bileşenlerini içerirken çekirdek düzeyindeki çalışma, 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 seviyesi yalnızca paketlerden veri çıkarmak, veri işlemlerini gerçekleştirmek ve akış kontrolü için temel işlevleri sağlayan genel protokolden bağımsız bir arayüz sağlar.

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 yenilikler:

  • Akışkan işlemeyi ağ bağdaştırıcısı tarafına taşıma yeteneği uygulandı ve 'boşaltma' bayrağı kullanılarak etkinleştirildi. Flowtable, tüm kural işleme zincirlerinin tam geçişinin yalnızca ilk pakete uygulandığı ve akıştaki diğer tüm paketlerin doğrudan iletildiği, paket yeniden yönlendirme yolunu optimize etmeye yönelik bir mekanizmadır. tablo ip global { flowtable f { kanca giriş önceliği filtresi + 1 cihazlar = { lan3, lan0, wan } bayrak boşaltma } ileri zincirleme { type filtre kanca ileri öncelik filtresi; politika kabul; ip protokolü { tcp, udp } akış ekle @f } zincir posta { type nat hook postrouting öncelik filtresi; politika kabul; oifname "wan" maskeli balo } }
  • Tablonun bir süreç tarafından özel olarak kullanılmasını sağlamak için tabloya sahip bayrağının eklenmesine yönelik destek eklendi. Bir süreç sona erdiğinde onunla ilişkili tablo otomatik olarak silinir. İşlemle ilgili bilgiler kural dökümünde yorum biçiminde görüntülenir: tablo ip x { # program adı nft bayrakları sahip zinciri y { type filter hook giriş önceliği filtresi; politika kabul; sayaç paketleri 1 bayt 309 } }
  • Birden fazla VLAN etiketini tek bir Ethernet çerçevesine yerleştirmenin bir yolunu tanımlayan IEEE 802.1ad spesifikasyonu (VLAN yığınlama veya QinQ) için destek eklendi. Örneğin, harici Ethernet çerçevesi 8021ad ve vlan id=342'nin türünü kontrol etmek için, ... ether type 802.1ad vlan id 342 yapısını kullanarak 8021ad/vlan id=1, iç içe 802.1 harici Ethernet çerçevesi türünü kontrol edebilirsiniz. q/vlan id=2 ve daha fazla IP paketi kapsülleme: ... eter türü 8021ad vlan kimliği 1 vlan türü 8021q vlan kimliği 2 vlan türü ip sayacı
  • Birleşik hiyerarşi grupları v2'yi kullanarak kaynakları yönetmeye yönelik destek eklendi. Cgroups v2 ve v1 arasındaki temel fark, CPU kaynaklarını tahsis etmek, bellek tüketimini düzenlemek ve G/Ç için ayrı hiyerarşiler yerine tüm kaynak türleri için ortak bir cgroups hiyerarşisinin kullanılmasıdır. Örneğin, cgroupv2 birinci düzeyindeki bir soketin atasının "system.slice" maskesiyle eşleşip eşleşmediğini kontrol etmek için şu yapıyı kullanabilirsiniz: ... soket cgroupv2 seviye 1 "system.slice"
  • SCTP paketlerinin bileşenlerini kontrol etme yeteneği eklendi (bunun için gereken işlevsellik Linux çekirdeği 5.14'te görünecektir). Örneğin, bir paketin 'data' türünde ve 'type' alanında bir öbek içerip içermediğini kontrol etmek için: ... sctp öbek verisi mevcut ... sctp öbek veri türü 0
  • Kural yükleme işleminin yürütülmesi “-f” bayrağı kullanılarak yaklaşık iki kat hızlandırılmıştır. Kural listesinin çıktısı da hızlandırıldı.
  • Bayrak bitlerinin ayarlanıp ayarlanmadığını kontrol etmek için kompakt bir form sağlanmıştır. Örneğin, snat ve dnat durum bitlerinin ayarlanmadığını kontrol etmek için şunları belirtebilirsiniz: ... ct status ! snat,dnat, syn bitinin bit maskesinde ayarlandığını kontrol etmek için syn,ack: ... tcp, fin ve rst bitlerinin bit maskesinde ayarlanmadığını kontrol etmek için syn / syn,ack'i işaretler syn,ack,fin,rst: ... tcp bayrakları = fin,rst / syn,ack,fin,rst
  • set/map typeof tanımlarında "verdict" anahtar sözcüğüne izin verin: add map xm { typeof iifname . ip protokolü th port : karar ;}

Kaynak: opennet.ru

Yorum ekle