nftables paka filtrilo 0.9.4 eldono

eldonita paka filtrilo liberigo nftables 0.9.4, kiu evoluas kiel anstataŭaĵo por iptables, ip6table, arptables kaj ebtables unuigante pakaĵetfiltrilinterfacojn por IPv4, IPv6, ARP kaj retaj pontoj. La pako nftables inkluzivas pakatajn filtrilkomponentojn, kiuj funkcias en uzantspaco, dum la kernnivelo estas provizita de la subsistemo nf_tables, kiu estas parto de la Linukso-kerno ekde eldono 3.13. La ŝanĝoj necesaj por la liberigo de nftables 0.9.4 por funkcii estas inkluzivitaj en la estonta kernbranĉo. Linukso 5.6.

Sur la kernnivelo, nur senmarka protokol-sendependa interfaco estas disponigita kiu disponigas bazajn funkciojn por eltiri datenojn de pakaĵetoj, elfarante operaciojn sur datenoj, kaj kontrolante fluon. La filtraj reguloj mem kaj protokol-specifaj pritraktiloj estas kompilitaj en uzantspacan bajtkodon, post kiu tiu bajtokodo estas ŝarĝita en la kernon uzante la Netlink-interfacon kaj efektivigita en la kerno en speciala virtuala maŝino simila al BPF (Berkeley Packet Filters). Ĉi tiu aliro ebligas signife redukti la grandecon de la filtra kodo funkcianta ĉe la kernnivelo kaj movi ĉiujn funkciojn de analizaj reguloj kaj la logikon labori kun protokoloj en uzantspacon.

Ĉefaj novigoj:

  • Subteno por intervaloj en kunigoj (kunligado, certaj ligoj de adresoj kaj havenoj kiuj simpligas kongruadon). Ekzemple, por "blanklisto" aro, kies elementoj estas aldonaĵo, specifi la "intervalan" flagon indikos, ke la aro povas inkluzivi intervalojn en la aldonaĵo (por la aldonaĵo "ipv4_addr . ipv4_addr . inet_service" antaŭe estis eble listigi ĝustan. kongruas kiel "192.168.10.35. 192.68.11.123", kaj nun vi povas specifi grupojn de adresoj "80-192.168.10.35-192.168.10.40"):192.68.11.123-192.168.11.125-80.

    tablo ip foo {
    agordi blankan liston {
    tajpu ipv4_addr. ipv4_addr . inet_servo
    flagoj intervalo
    elementoj = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    ĉenstango {
    tajpi filtrilon hoko prerouting prioritata filtrilo; politika guto;
    ip saddr . ip daddr . tcp dport@blanklisto akceptu
    }
    }

  • En aroj kaj mapo-listoj, eblas uzi la "typeof" direktivo, kiu determinas la formaton de la elemento dum mapado.
    Ekzemple:

    tablo ip foo {
    agordi blankan liston {
    tipo de ip saddr
    elementoj = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    ĉenstango {
    tajpi filtrilon hoko prerouting prioritata filtrilo; politika guto;
    ip daddr @blanklisto akceptu
    }
    }

    tablo ip foo {
    mapo addr2mark {
    typeof ip saddr : meta marko
    elementoj = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Aldonis la eblon uzi aldonaĵojn en NAT-ligoj, kiu ebligas al vi specifi adreson kaj havenon dum difinado de NAT-tradukoj bazitaj sur maplistoj aŭ nomitaj aroj:

    nft add rule ip nat pre dnat ip addr . haveno al ip saddr mapo { 1.1.1.1 : 2.2.2.2 . tridek }

    nft aldoni mapon ip nat destinoj { type ipv4_addr . inet_service : ipv4_addr . inet_servo\\; }
    nft add rule ip nat pre dnat ip addr . haveno al ip saddr . tcp dport mapo @destinations

  • Subteno por aparatara akcelo kun la forigo de iuj filtraj operacioj sur la ŝultroj de la retkarto. Akcelo estas ebligita per la ethtool-utilo ("ethtool -K eth0 hw-tc-offload on"), post kiu ĝi estas aktivigita en nftables por la ĉefĉeno uzante la "malŝarĝi" flagon. Dum uzado de la Linukso 5.6 kerno, hardvarakcelo estas subtenata por kapliniokampa kongruo kaj envenanta interfacinspektado kombine kun ricevado, faligado, duobligado (dup), kaj plusendado (fwd) pakaĵetoj. En la malsupra ekzemplo, operacioj por faligi pakaĵetojn venantajn de la adreso 192.168.30.20 estas faritaj ĉe la retokarto-nivelo, sen pasi la pakaĵetojn al la kerno:

    # kato dosiero.nft
    tablo netdev x {
    ĉeno y {
    tipo filtrila hoko eniro aparato eth0 prioritato 10; flagoj malŝarĝas;
    ip saddr 192.168.30.20 guto
    }
    }
    # nft -f dosiero.nft

  • Plibonigita informo pri la loko de eraro en la reguloj.

    # nft forigi regulon ip yz tenilo 7
    Eraro: Ne eblis prilabori regulon: Ne tia dosiero aŭ dosierujo
    forigu regulon ip yz tenilo 7
    ^

    # nft forigi regulon ip xx tenilo 7
    Eraro: Ne eblis prilabori regulon: Ne tia dosiero aŭ dosierujo
    forigu regulon ip xx tenilon 7
    ^

    # nft forigi tabelon twst
    Eraro: Ne tia dosiero aŭ dosierujo; ĉu vi volis diri tabelo "testo" en familia ip?
    forviŝi tablotordilon
    ^^^^

    La unua ekzemplo montras, ke la tabelo 'y' ne ĉeestas en la sistemo, la dua montras ke la prizorganto '7' mankas, kaj la tria montras tajperan sugeston dum tajpado de la tabelnomo.

  • Aldonita subteno por kontroli la sklavinterfacon per specifado de "meta sdif" aŭ "meta sdifname":

    … meta sdifnomo vrf1 …

  • Aldonita subteno por movo dekstren aŭ maldekstran operacion. Ekzemple, por ŝanĝi ekzistantan pakaĵetikedon lasitan je 1 bito kaj agordi la malsupran biton al 1:

    … meta-marko agordi meta-markon lshift 1 aŭ 0x1 …

  • Efektivigita "-V" opcio por montri plilongigitajn versiojn.

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

  • Komandliniaj opcioj nun estas devigaj antaŭ komandoj. Ekzemple, vi devas specifi "nft -a list ruleset", kaj ruli "nft list ruleset -a" rezultigos eraron.

    fonto: opennet.ru

Aldoni komenton