nftables paket filtri 0.9.4 buraxılışı

nəşr edilmişdir paket filtrinin buraxılması nftables 0.9.4, IPv6, IPv4, ARP və şəbəkə körpüləri üçün paket filtrləmə interfeyslərini birləşdirərək iptables, ip6table, arptables və ebtables üçün əvəz kimi inkişaf edir. Nftables paketinə istifadəçi məkanında işləyən paket filtri komponentləri daxildir, nüvə səviyyəsində iş isə 3.13 buraxılışından bəri Linux nüvəsinin bir hissəsi olan nf_tables alt sistemi tərəfindən təmin edilir. Nftables 0.9.4 buraxılışının işləməsi üçün lazım olan dəyişikliklər gələcək kernel filialına daxil edilmişdir. Linux 5.6.

Nüvə səviyyəsi yalnız paketlərdən məlumatların çıxarılması, məlumat əməliyyatlarının yerinə yetirilməsi və axına nəzarət üçün əsas funksiyaları təmin edən ümumi protokoldan müstəqil interfeys təmin edir. Filtrləmə qaydaları və protokola xas işləyicilər istifadəçi məkanında baytkoda tərtib edilir, bundan sonra bu bayt kodu Netlink interfeysindən istifadə etməklə nüvəyə yüklənir və BPF-ni xatırladan xüsusi virtual maşında (Berkeley Packet Filters) nüvədə icra olunur. Bu yanaşma nüvə səviyyəsində işləyən filtrləmə kodunun ölçüsünü əhəmiyyətli dərəcədə azaltmağa və protokollarla işləmək üçün təhlil qaydaları və məntiqinin bütün funksiyalarını istifadəçi sahəsinə köçürməyə imkan verir.

Əsas yeniliklər:

  • Əlaqələrdə diapazonlar üçün dəstək (birləşdirmə, müəyyən ünvan paketləri və müqayisəni asanlaşdıran portlar). Məsələn, elementləri qoşma olan "ağ siyahı" çoxluğu üçün "interval" bayrağının göstərilməsi dəstin əlavəyə diapazonları daxil edə biləcəyini göstərəcək ("ipv4_addr . ipv4_addr . inet_service" qoşması üçün əvvəllər dəqiq siyahıya almaq mümkün idi) "192.168.10.35. 192.68.11.123" forma uyğunluqları və indi "80-192.168.10.35-192.168.10.40." ünvan qruplarını göstərə bilərsiniz.

    table ip foo {
    ağ siyahı təyin et {
    ipv4_addr yazın. ipv4_addr. inet_service
    bayraqlar intervalı
    elementlər = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    zəncir çubuğu {
    tipli filtr çəngəl marşrutu təyin edən prioritet filtr; siyasətin azalması;
    ip saddr. ip daddr. tcp dport @whitellist qəbul edin
    }
    }

  • Dəstlər və xəritə siyahılarında uyğunlaşarkən elementin formatını təyin edən “typeof” direktivindən istifadə etmək mümkündür.
    Misal üçün:

    table ip foo {
    ağ siyahı təyin et {
    typeof ip saddr
    elementlər = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    zəncir çubuğu {
    tipli filtr çəngəl marşrutu təyin edən prioritet filtr; siyasətin azalması;
    ip daddr @whitellist qəbul edin
    }
    }

    table ip foo {
    xəritə adr2mark {
    typeof ip saddr: meta işarəsi
    elementlər = {192.168.10.35: 0x00000001, 192.168.10.135: 0x00000002}
    }
    }

  • Xəritə siyahıları və ya adlandırılmış dəstlər əsasında NAT çevrilmələrini təyin edərkən ünvan və port təyin etməyə imkan verən NAT bağlamalarında birləşmələrdən istifadə etmək imkanı əlavə edildi:

    nft əlavə qaydası ip nat pre dnat ip addr . portdan ip saddr xəritəsi {1.1.1.1: 2.2.2.2. otuz}

    nft xəritə əlavə edin ip nat təyinatları { yazın ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
    nft əlavə qaydası ip nat pre dnat ip addr . ip saddr üçün port. tcp dport xəritəsi @destinations

  • Şəbəkə kartı tərəfindən həyata keçirilən bəzi filtrləmə əməliyyatları ilə aparatın sürətləndirilməsinə dəstək. Sürətləndirmə ettool yardım proqramı vasitəsilə aktivləşdirilir (“ethtool -K eth0 hw-tc-offload on”), bundan sonra “boşaltma” bayrağından istifadə edərək əsas zəncir üçün nftables-də aktivləşdirilir. Linux kernel 5.6-dan istifadə edərkən, paketlərin qəbulu, atılması, təkrarlanması (duplanması) və yönləndirilməsi (fwd) ilə birlikdə başlıq sahəsinin uyğunlaşdırılması və daxil olan interfeysin yoxlanılması üçün aparat sürətləndirilməsi dəstəklənir. Aşağıdakı misalda 192.168.30.20 ünvanından gələn paketlərin atılması əməliyyatları paketləri nüvəyə ötürmədən şəbəkə kartı səviyyəsində həyata keçirilir:

    # pişik faylı.nft
    cədvəl netdev x {
    zəncir y {
    tip filtr çəngəl giriş cihazı eth0 prioritet 10; bayraqlar boşaldılır;
    ip saddr 192.168.30.20 düşür
    }
    }
    # nft -f faylı.nft

  • Qaydalarda səhvin yeri haqqında təkmilləşdirilmiş məlumat.

    # nft silmə qaydası ip yz sapı 7
    Xəta: Qayda emal edilə bilmədi: Belə fayl və ya kataloq yoxdur
    Silinmə qaydası ip yz sapı 7
    ^

    # nft silmə qaydası ip xx sapı 7
    Xəta: Qayda emal edilə bilmədi: Belə fayl və ya kataloq yoxdur
    ip xx qaydanı silin 7
    ^

    # nft cədvəl twst silin
    Xəta: Belə fayl və ya kataloq yoxdur; ailə ipində "test" cədvəlini nəzərdə tutursunuz?
    cədvəl twst silin
    ^^^^

    Birinci misal göstərir ki, “y” cədvəli sistemdə yoxdur, ikincisi “7” işləyicisi yoxdur, üçüncüsü isə cədvəlin adını yazarkən yazı xətası tələbinin göstərildiyini göstərir.

  • “meta sdif” və ya “meta sdifname” qeyd etməklə qul interfeysini yoxlamaq üçün əlavə dəstək:

    ... meta sdifname vrf1 ...

  • Sağa və ya sola sürüşmə əməliyyatları üçün əlavə dəstək. Məsələn, mövcud paket etiketini 1 bit sola sürüşdürmək və kiçik biti 1-ə təyin etmək üçün:

    … meta işarəsi dəsti meta işarəsi lshift 1 və ya 0x1 …

  • Genişləndirilmiş versiya məlumatlarını göstərmək üçün "-V" seçimi tətbiq edildi.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli: oxunuş xətti
    json: bəli
    minigmp: yox
    libxtables: bəli

  • Komanda xətti seçimləri indi əmrlərdən əvvəl göstərilməlidir. Məsələn, siz “nft -a list ruleset”i təyin etməlisiniz və “nft list ruleset -a” işləməsi xəta ilə nəticələnəcək.

    Mənbə: opennet.ru

Добавить комментарий