nftables paketų filtro išleidimas 0.9.4

paskelbta paketų filtro išleidimas nftables 0.9.4, kuriamas kaip iptables, ip6table, arptables ir ebtables pakaitalas, suvienodinant IPv4, IPv6, ARP ir tinklo tiltų paketų filtravimo sąsajas. Į paketą nftables yra paketų filtrų komponentai, kurie veikia vartotojo erdvėje, o branduolio lygio darbą užtikrina nf_tables posistemis, kuris yra Linux branduolio dalis nuo 3.13 leidimo. Pakeitimai, būtini, kad nftables 0.9.4 leidimas veiktų, yra įtraukti į būsimą branduolio šaką Linux 5.6.

Branduolio lygis suteikia tik bendrąją nuo protokolo nepriklausomą sąsają, kuri suteikia pagrindines funkcijas duomenims iš paketų išgauti, duomenų operacijoms atlikti ir srauto valdymui. Filtravimo taisyklės ir specifiniams protokolams skirtos tvarkyklės sukompiliuojamos į baitinį kodą vartotojo erdvėje, po to šis baitinis kodas įkeliamas į branduolį naudojant Netlink sąsają ir vykdomas branduolyje specialioje virtualioje mašinoje, primenančioje BPF (Berkeley Packet Filters). Šis metodas leidžia žymiai sumažinti branduolio lygiu veikiančio filtravimo kodo dydį ir perkelti visas analizavimo taisyklių ir logikos funkcijas, skirtas darbui su protokolais į vartotojo erdvę.

Pagrindinės naujovės:

  • Ryšių diapazonų palaikymas (sujungimas, tam tikri adresų ir prievadų paketai, kurie supaprastina palyginimą). Pavyzdžiui, rinkiniui „baltasis sąrašas“, kurio elementai yra priedas, nurodant žymą „intervalas“, bus nurodyta, kad rinkinyje priede gali būti diapazonų (priedui „ipv4_addr . ipv4_addr . inet_service“ anksčiau buvo galima nurodyti tikslius atitikmenis formos "192.168.10.35. 192.68.11.123", o dabar galite nurodyti adresų grupes "80-192.168.10.35-192.168.10.40"):192.68.11.123.

    lentelė ip foo {
    nustatyti baltąjį sąrašą {
    įveskite ipv4_addr . ipv4_addr. inet_service
    vėliavėlių intervalas
    elementai = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    grandinės juosta {
    tipo filtras kabliukas prerouting prioritetinis filtras; politikos kritimas;
    ip saddr. ip tėtis. tcp dport @whitelist priimti
    }
    }

  • Aibėse ir žemėlapių sąrašuose galima naudoti direktyvą „typeof“, kuri nustato elemento formatą derinant.
    Pavyzdžiui:

    lentelė ip foo {
    nustatyti baltąjį sąrašą {
    ip tipas saddr
    elementai = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    grandinės juosta {
    tipo filtras kabliukas prerouting prioritetinis filtras; politikos kritimas;
    ip daddr @whitelist priimti
    }
    }

    lentelė ip foo {
    map addr2mark {
    IP saddr tipas: meta ženklas
    elementai = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Pridėta galimybė NAT susiejuose naudoti sujungimus, kurie leidžia nurodyti adresą ir prievadą, kai apibrėžiate NAT transformacijas pagal žemėlapių sąrašus arba pavadintus rinkinius:

    nft pridėti taisyklė ip nat pre dnat ip addr . prievadas į IP saddr žemėlapis { 1.1.1.1 : 2.2.2.2 . trisdešimt }

    nft pridėti žemėlapį ip nat paskirties vietos { tipo ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
    nft pridėti taisyklė ip nat pre dnat ip addr . prievadas į ip saddr. tcp dport žemėlapis @destinations

  • Aparatinės įrangos spartinimo palaikymas su kai kuriomis filtravimo operacijomis, kurias atlieka tinklo plokštė. Pagreitis įgalinamas naudojant ethtool paslaugų programą ("ethtool -K eth0 hw-tc-offload on"), po to jis aktyvuojamas pagrindinės grandinės nftables naudojant "offload" vėliavėlę. Naudojant „Linux“ branduolį 5.6, palaikomas aparatinės įrangos pagreitis, skirtas antraštės laukų atitikimui ir gaunamos sąsajos tikrinimui kartu su paketų priėmimu, išmetimu, dubliavimu (dup) ir persiuntimu (fwd). Toliau pateiktame pavyzdyje paketų, gaunamų iš adreso 192.168.30.20, išmetimo operacijos atliekamos tinklo plokštės lygiu, neperduodant paketų branduoliui:

    # katės failas.nft
    lentelė netdev x {
    grandinė y {
    tipo filtro kablio įėjimo įtaisas eth0 prioritetas 10; vėliavų iškrovimas;
    ip saddr 192.168.30.20 lašas
    }
    }
    # nft -f failas.nft

  • Patobulinta informacija apie klaidos vietą taisyklėse.

    # nft trynimo taisyklė ip yz rankena 7
    Klaida: nepavyko apdoroti taisyklės: nėra tokio failo ar katalogo
    ištrinti taisyklę ip yz rankena 7
    ^

    # nft trynimo taisyklė ip xx rankena 7
    Klaida: nepavyko apdoroti taisyklės: nėra tokio failo ar katalogo
    ištrinti taisyklę ip xx rankena 7
    ^

    # nft ištrinti lentelę twst
    Klaida: nėra tokio failo ar katalogo; ar turėjote omenyje lentelę „testas“ šeimos IP?
    ištrinti lentelę twst
    ^^^^

    Pirmas pavyzdys rodo, kad lentelės „y“ sistemoje nėra, antrasis – trūksta „7“ tvarkyklės, o trečiasis – įvedant lentelės pavadinimą rodomas rašybos klaidos raginimas.

  • Pridėtas palaikymas tikrinant pagalbinę sąsają, nurodant „meta sdif“ arba „meta sdifname“:

    ... meta sdifname vrf1 ...

  • Pridėtas palaikymas pamainoms į dešinę arba į kairę. Pavyzdžiui, norėdami perkelti esamą paketo etiketę į kairę 1 bitu ir nustatyti mažąjį bitą į 1:

    … meta žymų rinkinys meta ženklas lshift 1 arba 0x1 …

  • Įdiegta parinktis „-V“, kad būtų rodoma išplėstinės versijos informacija.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli:readline
    json: taip
    minigmp: ne
    libxtables: taip

  • Komandinės eilutės parinktys dabar turi būti nurodytos prieš komandas. Pvz., turite nurodyti „nft -a list ruleset“, o paleidus „nft list ruleset -a“ atsiras klaida.

    Šaltinis: opennet.ru

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