nftables paket filtre sürümü 0.9.4

yayınlanan paket filtre sürümü NFTables 0.9.4IPv6, IPv4, ARP ve ağ köprüleri için paket filtreleme arayüzlerini birleştirerek iptables, ip6table, arptables ve ebtables'ın yerine geçecek şekilde geliştiriliyor. 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. Nftables 0.9.4 sürümünün çalışması için gerekli değişiklikler gelecekteki çekirdek dalına dahil edildi Linux 5.6.

Ç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ı 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 çekirdekte 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:

  • Bağlantılardaki aralıklar için destek (birleştirme, belirli adres paketleri ve karşılaştırmayı kolaylaştıran bağlantı noktaları). Örneğin, öğeleri bir ek olan bir "beyaz liste" kümesi için "aralık" bayrağının belirtilmesi, kümenin ekteki aralıkları içerebileceğini gösterecektir ("ipv4_addr . ipv4_addr . inet_service" eki için daha önce tam olarak listelemek mümkündü) "192.168.10.35" biçimindeki eşleşmeler ve artık "192.68.11.123-80-192.168.10.35" adres gruplarını belirtebilirsiniz:

    tablo ip foo {
    beyaz listeyi ayarla {
    ipv4_addr yazın. ipv4_addr. inet_service
    bayrak aralığı
    öğeler = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    zincir çubuğu {
    tip filtre kancası ön yönlendirme öncelikli filtre; politika düşüşü;
    ip saddr. ip daddr. tcp dport @beyaz liste kabul et
    }
    }

  • Kümelerde ve harita listelerinde, eşleştirme yaparken elemanın formatını belirleyen “typeof” direktifini kullanmak mümkündür.
    Örneğin:

    tablo ip foo {
    beyaz listeyi ayarla {
    ip saddr türü
    öğeler = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    zincir çubuğu {
    tip filtre kancası ön yönlendirme öncelikli filtre; politika düşüşü;
    ip daddr @whitelist kabul et
    }
    }

    tablo ip foo {
    harita addr2mark {
    typeof ip saddr : meta işareti
    öğeler = { 192.168.10.35: 0x00000001, 192.168.10.135: 0x00000002 }
    }
    }

  • Harita listelerine veya adlandırılmış kümelere dayalı olarak NAT dönüşümlerini tanımlarken bir adres ve bağlantı noktası belirtmenize olanak tanıyan, NAT bağlamalarında birleştirmeleri kullanma yeteneği eklendi:

    nft kural ekle ip nat ön dnat ip adresi . ip saddr haritasına bağlantı noktası { 1.1.1.1 : 2.2.2.2 . otuz }

    nft harita ip nat hedeflerini ekleyin { ipv4_addr yazın. inet_service: ipv4_addr. inet_service \\; }
    nft kural ekle ip nat ön dnat ip adresi . ip saddr'a bağlantı noktası. tcp dport haritası @destinations

  • Ağ kartı tarafından gerçekleştirilen bazı filtreleme işlemleriyle donanım hızlandırma desteği. Hızlandırma, ethtool yardımcı programı ("ethtool -K eth0 hw-tc-offload on") aracılığıyla etkinleştirilir ve ardından "offload" bayrağı kullanılarak ana zincir için nftables'da etkinleştirilir. Linux çekirdeği 5.6 kullanıldığında, paketlerin alınması, atılması, çoğaltılması (dup) ve iletilmesi (fwd) ile birlikte başlık alanı eşleştirme ve gelen arayüz denetimi için donanım hızlandırma desteklenir. Aşağıdaki örnekte 192.168.30.20 adresinden gelen paketlerin bırakılma işlemleri, paketleri çekirdeğe geçirmeden ağ kartı seviyesinde gerçekleştirilmektedir:

    # kedi dosyası.nft
    tablo netdev x {
    zincir y {
    tip filtre kancası giriş cihazı eth0 öncelik 10; bayrakların indirilmesi;
    ip saddr 192.168.30.20 düşüşü
    }
    }
    # nft -f dosya.nft

  • Kurallardaki bir hatanın konumu hakkında iyileştirilmiş bilgiler.

    # nft silme kuralı ip yz tanıtıcısı 7
    Hata: Kural işlenemedi: Böyle bir dosya veya dizin yok
    kural ip yz tanıtıcısını sil 7
    ^

    # nft silme kuralı ip xx tanıtıcı 7
    Hata: Kural işlenemedi: Böyle bir dosya veya dizin yok
    kural ip xx tanıtıcısını sil 7
    ^

    # nft tablo bükümünü sil
    Hata: Böyle bir dosya veya dizin yok; aile IP'sindeki 'test' tablosunu mu kastettiniz?
    tablo bükümünü sil
    ^^^^

    İlk örnek, "y" tablosunun sistemde olmadığını, ikincisi "7" işleyicisinin eksik olduğunu ve üçüncüsü, tablo adı yazılırken bir yazım hatası isteminin görüntülendiğini gösterir.

  • "Meta sdif" veya "meta sdifname" belirtilerek ikincil arabirimin kontrol edilmesi için destek eklendi:

    ... meta sdifadı vrf1 ...

  • Sağa veya sola kaydırma işlemleri için destek eklendi. Örneğin, mevcut bir paket etiketini 1 bit sola kaydırmak ve küçük biti 1'e ayarlamak için:

    … meta işareti meta işaretini lshift 1 veya 0x1 olarak ayarla …

  • Genişletilmiş sürüm bilgilerini görüntülemek için "-V" seçeneği uygulandı.

    # nft -V
    nftables v0.9.4 (Beşte Jive)
    uç:okuma satırı
    json: evet
    minigmp: hayır
    libxtables: evet

  • Komut satırı seçenekleri artık komutlardan önce belirtilmelidir. Örneğin, “nft -a list ruleset” belirtmeniz gerekir ve “nft list ruleset -a”yı çalıştırmak hatayla sonuçlanacaktır.

    Kaynak: opennet.ru

Yorum ekle