nftables paket filtri 0.9.4 versiyasi

nashr etilgan paketli filtrni chiqarish nftables 0.9.4IPv6, IPv4, ARP va tarmoq ko'priklari uchun paketli filtrlash interfeyslarini birlashtirib, iptables, ip6table, arptables va ebtables o'rnini bosuvchi sifatida rivojlanmoqda. nftables to'plami foydalanuvchi maydonida ishlaydigan paket filtri komponentlarini o'z ichiga oladi, yadro darajasi esa 3.13 versiyasidan beri Linux yadrosining bir qismi bo'lgan nf_tables quyi tizimi tomonidan ta'minlanadi. nftables 0.9.4 ni ishga tushirish uchun zarur bo'lgan o'zgarishlar kelajakdagi yadro filialiga kiritilgan. Linux 5.6.

Yadro darajasida paketlardan ma'lumotlarni olish, ma'lumotlar ustida operatsiyalarni bajarish va oqimni boshqarish uchun asosiy funktsiyalarni ta'minlaydigan faqat umumiy protokoldan mustaqil interfeys taqdim etiladi. Filtrlash qoidalarining o'zi va protokolga xos ishlov beruvchilar foydalanuvchi bo'shliq baytekodiga kompilyatsiya qilinadi, shundan so'ng bu bayt kod Netlink interfeysi yordamida yadroga yuklanadi va yadroda BPF (Berkeley Packet Filters) ga o'xshash maxsus virtual mashinada bajariladi. Ushbu yondashuv yadro darajasida ishlaydigan filtrlash kodining hajmini sezilarli darajada kamaytirish va tahlil qilish qoidalarining barcha funktsiyalarini va protokollar bilan ishlash mantiqini foydalanuvchi maydoniga ko'chirish imkonini beradi.

Asosiy innovatsiyalar:

  • Birlashmalardagi diapazonlarni qo'llab-quvvatlash (birlashtirish, moslikni soddalashtiradigan manzillar va portlarning ma'lum ulanishlari). Masalan, elementlari biriktirma bo'lgan "oq ro'yxat" to'plami uchun "interval" belgisini ko'rsatish to'plam qo'shimchadagi diapazonlarni o'z ichiga olishi mumkinligini ko'rsatadi ("ipv4_addr . ipv4_addr . inet_service" ilovasi uchun ilgari aniq ro'yxatga olish mumkin edi. "192.168.10.35. 192.68.11.123" shaklidagi mosliklar va endi siz "80-192.168.10.35-192.168.10.40." manzillar guruhlarini belgilashingiz mumkin.

    jadval ip foo {
    oq ro'yxatni belgilash {
    ipv4_addr yozing. ipv4_addr. inet_service
    bayroqlar oralig'i
    elementlar = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    zanjir bar {
    turi filtri kancasi marshrutdan oldingi ustuvor filtr; siyosatning pasayishi;
    ip saddr. ip daddr. tcp dport@whitellist qabul qilinadi
    }
    }

  • To'plamlar va xaritalar ro'yxatida xaritalashda elementning formatini aniqlaydigan "typeof" direktivasidan foydalanish mumkin.
    Masalan:

    jadval ip foo {
    oq ro'yxatni belgilash {
    IP saddr turi
    elementlar = {192.168.10.35, 192.168.10.101, 192.168.10.135}
    }

    zanjir bar {
    turi filtri kancasi marshrutdan oldingi ustuvor filtr; siyosatning pasayishi;
    ip daddr @whitellist qabul qilinadi
    }
    }

    jadval ip foo {
    map addr2mark {
    typeof ip saddr : meta belgisi
    elementlar = {192.168.10.35: 0x00000001, 192.168.10.135: 0x00000002}
    }
    }

  • Xarita roʻyxatlari yoki nomlangan toʻplamlar asosida NAT tarjimalarini belgilashda manzil va portni koʻrsatish imkonini beruvchi NAT bogʻlashlarida qoʻshimchalardan foydalanish imkoniyati qoʻshildi:

    nft qo'shish qoidasi ip nat pre dnat ip addr. port IP saddr xaritasi {1.1.1.1: 2.2.2.2. o'ttiz}

    nft qo'shish xaritasi ip nat manzillari { yozing ipv4_addr . inet_service: ipv4_addr. inet_service\\; }
    nft qo'shish qoidasi ip nat pre dnat ip addr. IP saddr uchun port. tcp dport xaritasi @destinations

  • Tarmoq kartasining elkasida ba'zi filtrlash operatsiyalarini olib tashlash bilan apparat tezlashuvini qo'llab-quvvatlash. Tezlashtirish ethtool yordam dasturi ("ethtool -K eth0 hw-tc-offload on") orqali yoqiladi, shundan so'ng u "offload" bayrog'i yordamida asosiy zanjir uchun nftablelarda faollashtiriladi. Linux 5.6 yadrosidan foydalanilganda, paketlarni qabul qilish, tushirish, ko'paytirish (takrorlash) va yo'naltirish (fwd) bilan birgalikda sarlavha maydonini moslashtirish va kiruvchi interfeysni tekshirish uchun apparat tezlashuvi qo'llab-quvvatlanadi. Quyidagi misolda 192.168.30.20 manzilidan kelgan paketlarni tushirish operatsiyalari paketlarni yadroga o'tkazmasdan tarmoq kartasi darajasida amalga oshiriladi:

    # mushuk fayli.nft
    jadval netdev x {
    zanjir y {
    turi filtri kanca kirish qurilma eth0 ustuvor 10; bayroqlarni tushirish;
    ip saddr 192.168.30.20 tomchi
    }
    }
    # nft -f fayl.nft

  • Qoidalardagi xato o'rni haqida yaxshilangan ma'lumot.

    # nft o'chirish qoidasi ip yz tutqichi 7
    Xato: Qoidani qayta ishlab boʻlmadi: Bunday fayl yoki katalog yoʻq
    qoida ip yz tutqichini o'chirish 7
    ^

    # nft o'chirish qoidasi ip xx tutqichi 7
    Xato: Qoidani qayta ishlab boʻlmadi: Bunday fayl yoki katalog yoʻq
    qoida ip xx tutqichini o'chirish 7
    ^

    # nft twst jadvalini o'chirish
    Xato: Bunday fayl yoki katalog yo'q; Oilaviy ip da "test" jadvalini nazarda tutdingizmi?
    jadvalning burilishini o'chirish
    ^^^^

    Birinchi misol tizimda 'y' jadvali mavjud emasligini, ikkinchisi '7' ishlov beruvchisi yo'qligini, uchinchisi esa jadval nomini kiritishda matn terish xatosiga ishorani ko'rsatadi.

  • "meta sdif" yoki "meta sdifname" ni ko'rsatish orqali qul interfeysini tekshirish uchun qo'shimcha yordam:

    ... meta sdifname vrf1 ...

  • O'ngga yoki chapga siljish uchun qo'shimcha yordam. Masalan, mavjud paket yorlig'ini 1 bitga chapga siljitish va pastki bitni 1 ga o'rnatish uchun:

    … meta belgisi to‘plami meta belgisi lshift 1 yoki 0x1 …

  • Kengaytirilgan versiya ma'lumotlarini ko'rsatish uchun "-V" opsiyasi kiritildi.

    #nft -V
    nftables v0.9.4 (Jive at Five)
    cli: o'qish liniyasi
    json: ha
    minigmp: yo'q
    libxtables: ha

  • Buyruqlar qatori parametrlari endi buyruqlardan oldin majburiydir. Misol uchun, siz "nft -a ro'yxat qoidalari" ni belgilashingiz kerak va "nft list rules -a" ni ishga tushirish xatolikka olib keladi.

    Manba: opennet.ru

a Izoh qo'shish