Çekirdek düzeyi 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 mantığının kendisi ve protokole özgü işleyiciler, kullanıcı alanında bayt kodu halinde derlenir, ardından bu bayt kodu Netlink arayüzü kullanılarak çekirdeğe yüklenir ve BPF'yi (Berkeley Paket Filtreleri) anımsatan özel bir sanal makinede yürütülür. Bu yaklaşım, çekirdek düzeyinde çalışan filtreleme kodunun boyutunu önemli ölçüde azaltmanıza ve protokollerle çalışmaya yönelik tüm ayrıştırma kuralları ve mantık işlevlerini kullanıcı alanına taşımanıza olanak tanır.
Ana yenilikler:
- Paketleri zamana göre eşleştirme desteği. Kuralın tetikleneceği saat ve tarih aralıklarını tanımlayabilir ve tetiklemeyi haftanın ayrı günlerinde yapılandırabilirsiniz. Ayrıca çağ zamanını saniye cinsinden görüntülemek için yeni bir "-T" seçeneği eklendi.
meta zamanı \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
meta saati \"17:00\" - \"19:00\"
meta gün \"Cum\" - SELinux işaretlerini (secmark) kurtarma ve kaydetme desteği.
ct secmark meta secmark'ı ayarla
meta secmark seti ct secmark - Arka uç başına birden fazla kural tanımlamanıza olanak tanıyan synproxy harita listeleri desteği.
tablo ip foo {
synproxy https-synproxy {
msn 1460
wölçek 7
zaman damgası çuval perma
}eş anlamlı diğer eş anlamlı {
msn 1460
wölçek 5
}zincir ön {
tip filtre kancası ön yönlendirme önceliği ham; politika kabul;
tcp dport 8888 tcp bayrakları syn nottrack
}zincir çubuğu {
tip filtre kancası ileri öncelik filtresi; politika kabul;
ct durumu geçersiz, izlenmeyen synproxy adı ip saddr haritası { 192.168.1.0/24: “https-synproxy”, 192.168.2.0/24: “other-synproxy” }
}
} - Ayarlanan öğeleri paket işleme kurallarından dinamik olarak kaldırma yeteneği.
nft kural ekle ... delete @set5 { ip6 saddr . ip6 daddr}
- Ağ köprüsü arayüzü meta verilerinde tanımlanan kimlik ve protokole göre VLAN eşleme desteği;
meta ibrpvid 100
meta ibrvproto vlan - Kuralları görüntülerken küme kümelerinin öğelerini hariç tutmak için "-t" ("--terse") seçeneği. "nft -t list ruleset" komutunu çalıştırmak şu çıktıyı verecektir:
tablo ip x {
y'yi ayarla {
ipv4_addr yazın
}
}Ve “nft list ruleset” ile
tablo ip x {
y'yi ayarla {
ipv4_addr yazın
elemanlar = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Ortak filtreleme kurallarını birleştirmek için netdev zincirlerinde birden fazla cihazı belirtme yeteneği (yalnızca çekirdek 5.5 ile çalışır).
netdev x tablosunu ekle
zincir ekle netdev xy { \
filtre kancası giriş aygıtlarını yazın = { eth0, eth1 } öncelik 0;
} - Veri türlerinin açıklamalarını ekleyebilme.
# nft ipv4_addr'yi tanımlıyor
veri türü ipv4_addr (IPv4 adresi) (temel tür tamsayı), 32 bit - Libreadline yerine linenoise kütüphanesiyle bir CLI arayüzü oluşturma yeteneği.
./configure --with-cli=linenoise
Kaynak: opennet.ru