nftables pakkie filter 0.9.4 vrystelling

gepubliseer pakkie filter vrystelling nftables 0.9.4, ontwikkel as 'n plaasvervanger vir iptables, ip6table, arptables en ebtables deur pakketfiltrering-koppelvlakke vir IPv4, IPv6, ARP en netwerkbrûe te verenig. Die nftables-pakket bevat gebruikersspasie-pakkiefilterkomponente, terwyl die kernvlakwerk verskaf word deur die nf_tables-substelsel, wat sedert vrystelling 3.13 deel van die Linux-kern is. Die veranderinge wat nodig is vir die nftables 0.9.4-vrystelling om te werk, is ingesluit in die toekomstige kerntak Linux 5.6.

Die kernvlak bied slegs 'n generiese protokol-onafhanklike koppelvlak wat basiese funksies verskaf vir die onttrekking van data uit pakkies, die uitvoering van data-bewerkings en vloeibeheer. Die filterreëls en protokolspesifieke hanteerders word in greepkode in gebruikersruimte saamgestel, waarna hierdie greepkode met behulp van die Netlink-koppelvlak in die kern gelaai word en in die kern uitgevoer word in 'n spesiale virtuele masjien wat aan BPF (Berkeley Packet Filters) herinner. Hierdie benadering laat jou toe om die grootte van die filterkode wat op kernvlak loop, aansienlik te verminder en al die funksies van ontledingsreëls en logika vir die werk met protokolle na gebruikersruimte te skuif.

Belangrikste innovasies:

  • Ondersteuning vir reekse in verbindings (aaneenskakeling, sekere bondels adresse en poorte wat vergelyking vereenvoudig). Byvoorbeeld, vir 'n stel "witlys" waarvan die elemente 'n aanhegsel is, sal die spesifikasie van die "interval"-vlag aandui dat die stel reekse in die aanhangsel kan insluit (vir die aanhangsel "ipv4_addr . ipv4_addr . inet_service" was dit voorheen moontlik om presies te lys ooreenstem met die vorm "192.168.10.35. 192.68.11.123", en nou kan jy groepe adresse "80-192.168.10.35-192.168.10.40" spesifiseer:

    tabel ip foo {
    stel witlys {
    tik ipv4_addr. ipv4_addr. inet_diens
    vlae interval
    elemente = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    kettingstaaf {
    tipe filter haak prerouting prioriteit filter; polisdaling;
    ip saddr. ip pappa. tcp dport @witlys aanvaar
    }
    }

  • In stelle en kaartlyste is dit moontlik om die "tipeof"-aanwysing te gebruik, wat die formaat van die element bepaal wanneer dit ooreenstem.
    Byvoorbeeld:

    tabel ip foo {
    stel witlys {
    tipe ip saddr
    elemente = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    kettingstaaf {
    tipe filter haak prerouting prioriteit filter; polisdaling;
    ip daddr @witlys aanvaar
    }
    }

    tabel ip foo {
    kaart addr2mark {
    tipe ip saddr: meta merk
    elemente = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Die vermoë bygevoeg om verbindings in NAT-bindings te gebruik, wat jou toelaat om 'n adres en poort te spesifiseer wanneer NAT-transformasies gedefinieer word gebaseer op kaartlyste of benoemde stelle:

    nft voeg reël ip nat pre dnat ip adr. poort na ip saddr kaart {1.1.1.1: 2.2.2.2. dertig}

    nft voeg kaart ip nat bestemmings by {tik ipv4_addr. inet_diens: ipv4_addr. inet_diens\\; }
    nft voeg reël ip nat pre dnat ip adr. poort na ip saddr. tcp dport kaart @bestemmings

  • Ondersteuning vir hardewareversnelling met sommige filterbewerkings wat deur die netwerkkaart uitgevoer word. Versnelling word geaktiveer via die ethtool-nutsding ("ethtool -K eth0 hw-tc-offload on"), waarna dit in nftables vir die hoofketting geaktiveer word deur die "offload"-vlag te gebruik. Wanneer die Linux-kern 5.6 gebruik word, word hardewareversnelling ondersteun vir kop-veldpassing en inkomende koppelvlak-inspeksie in kombinasie met die ontvangs, weggooi, duplisering (dup) en aanstuur (fwd) pakkies. In die voorbeeld hieronder word die bewerkings om pakkies te laat val wat van die adres 192.168.30.20 kom op die netwerkkaartvlak uitgevoer, sonder om die pakkies na die kern oor te dra:

    # kat lêer.nft
    tabel netdev x {
    ketting y {
    tipe filterhaak intrede toestel eth0 prioriteit 10; vlae aflaai;
    ip saddr 192.168.30.20 val
    }
    }
    # nft -f lêer.nft

  • Verbeterde inligting oor die ligging van 'n fout in die reëls.

    # nft verwyder reël ip yz hanteer 7
    Fout: Kon nie reël verwerk nie: Geen so 'n lêer of gids nie
    verwyder reël ip yz hanteer 7
    ^

    # nft verwyder reël ip xx hanteer 7
    Fout: Kon nie reël verwerk nie: Geen so 'n lêer of gids nie
    verwyder reël ip xx hanteer 7
    ^

    # nft verwyder tabel twst
    Fout: Geen sodanige lêer of gids nie; het jy die tabel ‘toets' in familie-ip bedoel?
    verwyder tabel twst
    ^^^^

    Die eerste voorbeeld wys dat die tabel "y" nie in die stelsel is nie, die tweede dat die "7" hanteerder ontbreek, en die derde dat 'n tikfout-prompt vertoon word wanneer die tabelnaam getik word.

  • Bygevoeg ondersteuning om die slaaf-koppelvlak na te gaan deur "meta sdif" of "meta sdifname" te spesifiseer:

    ... meta sdifname vrf1 ...

  • Bygevoeg ondersteuning vir regs of links skof bedrywighede. Byvoorbeeld, om 'n bestaande pakkie-etiket met 1 bis links te skuif en die klein bietjie na 1 te stel:

    … metamerk stel metamerk lshift 1 of 0x1 …

  • Geïmplementeerde "-V" opsie om uitgebreide weergawe inligting te vertoon.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli: leeslyn
    json: ja
    minigmp: nee
    libxtables: ja

  • Opdragreëlopsies moet nou voor opdragte gespesifiseer word. Byvoorbeeld, jy moet "nft -a lys reëlstel" spesifiseer, en die uitvoer van "nft lys reëlstel -a" sal 'n fout tot gevolg hê.

    Bron: opennet.ru

Voeg 'n opmerking