nftables packet filter 0.9.4 rilaxx

ippubblikat rilaxx tal-filtru tal-pakkett nftables 0.9.4, tiżviluppa bħala sostitut għal iptables, ip6table, arptables u ebtables billi tgħaqqad l-interfaces tal-filtrazzjoni tal-pakketti għall-IPv4, IPv6, ARP u pontijiet tan-netwerk. Il-pakkett nftables jinkludi komponenti tal-filtru tal-pakkett tal-ispazju tal-utent, filwaqt li x-xogħol fil-livell tal-kernel huwa pprovdut mis-subsistema nf_tables, li ilha parti mill-kernel Linux mir-rilaxx 3.13. Il-bidliet meħtieġa għar-rilaxx ta' nftables 0.9.4 biex jaħdmu huma inklużi fil-fergħa futura tal-kernel Linux 5.6.

Il-livell tal-qalba jipprovdi biss interface ġeneriku indipendenti mill-protokoll li jipprovdi funzjonijiet bażiċi għall-estrazzjoni tad-dejta minn pakketti, it-twettiq ta 'operazzjonijiet tad-dejta, u l-kontroll tal-fluss. Ir-regoli tal-filtrazzjoni u l-handlers speċifiċi għall-protokoll huma kkompilati f'bytecode fl-ispazju tal-utent, u wara dan il-bytecode jitgħabba fil-kernel bl-użu tal-interface Netlink u eżegwit fil-kernel f'magna virtwali speċjali li tfakkar fil-BPF (Berkeley Packet Filters). Dan l-approċċ jippermettilek tnaqqas b'mod sinifikanti d-daqs tal-kodiċi tal-filtrazzjoni li taħdem fil-livell tal-qalba u tmexxi l-funzjonijiet kollha tal-parsing tar-regoli u l-loġika biex taħdem bi protokolli fl-ispazju tal-utent.

Innovazzjonijiet ewlenin:

  • Appoġġ għal firxiet fil-konnessjonijiet (konkatenazzjoni, ċerti qatet ta 'indirizzi u portijiet li jissimplifikaw it-tqabbil). Pereżempju, għal sett "whitelist" li l-elementi tiegħu huma attachment, l-ispeċifikazzjoni tal-bandiera "intervall" tindika li s-sett jista 'jinkludi firxiet fl-attachment (għall-attachment "ipv4_addr . ipv4_addr . inet_service" qabel kien possibbli li jiġu elenkati eżatti logħbiet tal-forma "192.168.10.35. 192.68.11.123", u issa tista' tispeċifika gruppi ta' indirizzi "80-192.168.10.35-192.168.10.40-192.68.11.123.")

    tabella ip foo {
    issettja lista bajda {
    tip ipv4_addr . ipv4_addr. inet_service
    intervall tal-bnadar
    elementi = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    bar tal-katina {
    tip filtru ganċ prerouting filtru prijoritarju; tnaqqis fil-politika;
    ip saddr. ip daddr. tcp dport @whitelist jaċċetta
    }
    }

  • F'settijiet u listi ta 'mapep, huwa possibbli li tintuża d-direttiva "tip ta'", li tiddetermina l-format tal-element meta tqabbel.
    Per eżempju:

    tabella ip foo {
    issettja lista bajda {
    tip ta' ip saddr
    elementi = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    bar tal-katina {
    tip filtru ganċ prerouting filtru prijoritarju; tnaqqis fil-politika;
    ip daddr @whitelist jaċċetta
    }
    }

    tabella ip foo {
    mappa addr2mark {
    typeof ip saddr : meta mark
    elementi = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Miżjud il-kapaċità li tuża tgħaqqid f'bindings NAT, li tippermettilek tispeċifika indirizz u port meta tiddefinixxi trasformazzjonijiet NAT ibbażati fuq listi ta 'mapep jew settijiet imsemmija:

    nft add rule ip nat pre dnat ip addr . port għal ip saddr mappa { 1.1.1.1 : 2.2.2.2 . tletin}

    nft żid mappa ip nat destinazzjonijiet { tip ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
    nft add rule ip nat pre dnat ip addr . port għal ip saddr. tcp dport map @destinations

  • Appoġġ għall-aċċelerazzjoni tal-ħardwer b'xi operazzjonijiet ta 'filtrazzjoni mwettqa mill-karta tan-netwerk. L-aċċelerazzjoni hija attivata permezz tal-utilità ethtool ("ethtool -K eth0 hw-tc-offload on"), u wara tiġi attivata f'nftables għall-katina prinċipali bl-użu tal-bandiera "offload". Meta tuża l-kernel Linux 5.6, l-aċċelerazzjoni tal-ħardwer hija appoġġjata għat-tqabbil tal-kamp tal-header u l-ispezzjoni tal-interface deħlin flimkien ma 'pakketti li jirċievu, jintremew, duplikati (dup), u tibgħat (fwd). Fl-eżempju hawn taħt, l-operazzjonijiet ta 'twaqqigħ ta' pakketti li ġejjin mill-indirizz 192.168.30.20 jitwettqu fil-livell tal-kard tan-netwerk, mingħajr ma jgħaddu l-pakketti lill-kernel:

    # qtates file.nft
    tabella netdev x {
    katina y {
    tip filtru ganċ ingress mezz eth0 prijorità 10; tniżżil ta' bnadar;
    ip saddr 192.168.30.20 qatra
    }
    }
    # nft -f file.nft

  • Informazzjoni mtejba dwar il-post ta' żball fir-regoli.

    # nft ħassar ir-regola ip yz manku 7
    Żball: Ma setgħetx tipproċessa r-regola: L-ebda fajl jew direttorju bħal dan
    ħassar ir-regola ip yz manku 7
    ^

    # nft ħassar ir-regola ip xx manku 7
    Żball: Ma setgħetx tipproċessa r-regola: L-ebda fajl jew direttorju bħal dan
    ħassar ir-regola ip xx manku 7
    ^

    # nft ħassar tabella twst
    Żball: L-ebda fajl jew direttorju bħal dan; Ridt tfisser tabella ‘test' fl-ip tal-familja?
    ħassar tabella twst
    ^^^^

    L-ewwel eżempju juri li t-tabella "y" mhix fis-sistema, it-tieni li l-handler "7" huwa nieqes, u t-tielet li typo prompt huwa muri meta ttajpja l-isem tat-tabella.

  • Appoġġ miżjud għall-iċċekkjar tal-interface tal-iskjavi billi tispeċifika "meta sdif" jew "meta sdifname":

    ... meta sdifname vrf1 ...

  • Appoġġ miżjud għal operazzjonijiet ta 'shift fuq il-lemin jew ix-xellug. Pereżempju, biex tiċċaqlaq tikketta tal-pakkett eżistenti li tħalliet b'bit 1 u ssettja l-bit minuri għal 1:

    … meta mark issettja meta mark lshift 1 jew 0x1 …

  • Għażla "-V" implimentata biex turi l-informazzjoni tal-verżjoni estiża.

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

  • L-għażliet tal-linja tal-kmand għandhom issa jiġu speċifikati qabel il-kmandi. Per eżempju, għandek bżonn tispeċifika "nft -a list ruleset", u t-tħaddim "nft list ruleset -a" jirriżulta fi żball.

    Sors: opennet.ru

Żid kumment