nftables pakiti chujio 0.9.4 kutolewa

iliyochapishwa kutolewa kwa chujio cha pakiti nfttables 0.9.4, inatengenezwa kama mbadala wa iptables, ip6table, arptables na ebtables kwa kuunganisha violesura vya kuchuja pakiti kwa IPv4, IPv6, ARP na madaraja ya mtandao. Kifurushi cha nftables kinajumuisha vipengee vya kichujio cha pakiti ambacho hutumika katika nafasi ya mtumiaji, wakati kazi ya kiwango cha kernel inatolewa na mfumo mdogo wa nf_tables, ambao umekuwa sehemu ya kernel ya Linux tangu kutolewa kwa 3.13. Mabadiliko yanayohitajika kwa nftables 0.9.4 kutolewa kufanya kazi yanajumuishwa katika tawi la kernel la siku zijazo Linux 5.6.

Kiwango cha kernel hutoa kiolesura cha kawaida kinachojitegemea itifaki ambacho hutoa kazi za kimsingi za kutoa data kutoka kwa pakiti, kutekeleza shughuli za data na udhibiti wa mtiririko. Sheria za kuchuja na vidhibiti mahususi vya itifaki hukusanywa kuwa bytecode katika nafasi ya mtumiaji, baada ya hapo bytecode hii hupakiwa kwenye kerneli kwa kutumia kiolesura cha Netlink na kutekelezwa kwenye kernel katika mashine maalum ya pepe inayowakumbusha BPF (Berkeley Packet Filters). Njia hii hukuruhusu kupunguza kwa kiasi kikubwa saizi ya msimbo wa kuchuja unaoendesha kwenye kiwango cha kernel na kusonga kazi zote za kanuni na mantiki ya kufanya kazi na itifaki kwenye nafasi ya mtumiaji.

Ubunifu kuu:

  • Usaidizi wa masafa katika miunganisho (muunganisho, vifurushi fulani vya anwani na milango ambayo hurahisisha ulinganisho). Kwa mfano, kwa seti ya "orodha iliyoidhinishwa" ambayo vipengee vyake ni kiambatisho, kubainisha alama ya "muda" kutaonyesha kuwa seti hiyo inaweza kujumuisha masafa katika kiambatisho (kwa kiambatisho "ipv4_addr . ipv4_addr . inet_service" iliwezekana hapo awali kuorodhesha kamili mechi za fomu "192.168.10.35. 192.68.11.123", na sasa unaweza kutaja makundi ya anwani "80-192.168.10.35-192.168.10.40").

    meza ip foo {
    weka orodha iliyoidhinishwa {
    chapa ipv4_addr . ipv4_add. huduma_ya_inet
    muda wa bendera
    vipengele = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    upau wa mnyororo {
    aina chujio ndoano prerouting kipaumbele chujio; kushuka kwa sera;
    ip saddr. ip baba. tcp dport @whitelist kubali
    }
    }

  • Katika seti na orodha za ramani, inawezekana kutumia maagizo ya "typeof", ambayo huamua muundo wa kipengele wakati wa kufanana.
    Kwa mfano:

    meza ip foo {
    weka orodha iliyoidhinishwa {
    aina ya ip saddr
    vipengele = {192.168.10.35, 192.168.10.101, 192.168.10.135}
    }

    upau wa mnyororo {
    aina chujio ndoano prerouting kipaumbele chujio; kushuka kwa sera;
    ip dadr @whitelist kubali
    }
    }

    meza ip foo {
    ramani addr2mark {
    typeof ip saddr : alama ya meta
    vipengele = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Imeongeza uwezo wa kutumia viungio katika vifungo vya NAT, ambayo hukuruhusu kubainisha anwani na mlango wakati wa kufafanua mabadiliko ya NAT kulingana na orodha za ramani au seti zilizotajwa:

    nft ongeza sheria ip nat pre dnat ip addr . bandari hadi ramani ya saddr { 1.1.1.1 : 2.2.2.2 . thelathini }

    nft ongeza maeneo ya ip nat ya ramani { type ipv4_addr . huduma_ya_inet: ipv4_addr. inet_service \\; }
    nft ongeza sheria ip nat pre dnat ip addr . bandari kwa ip saddr. tcp dport ramani @marudio

  • Msaada wa kuongeza kasi ya vifaa na shughuli za kuchuja zinazofanywa na kadi ya mtandao. Uongezaji kasi umewezeshwa kupitia matumizi ya ethtool (β€œethtool -K eth0 hw-tc-offload on”), kisha huwashwa katika nfttables kwa msururu mkuu kwa kutumia alamisho ya β€œkupakua”. Unapotumia Linux kernel 5.6, uongezaji kasi wa maunzi unaauniwa kwa ajili ya kulinganisha uga wa kichwa na ukaguzi wa kiolesura unaoingia pamoja na kupokea, kutupa, kunakili (dup), na kusambaza (fwd) pakiti. Katika mfano hapa chini, shughuli za kuacha pakiti kutoka kwa anwani 192.168.30.20 zinafanywa kwa kiwango cha kadi ya mtandao, bila kupitisha pakiti kwenye kernel:

    faili # paka.nft
    meza netdev x {
    mnyororo y {
    aina chujio ndoano ingress kifaa eth0 kipaumbele 10; bendera kupakuliwa;
    ip saddr 192.168.30.20 kushuka
    }
    }
    # nft -f file.nft

  • Taarifa iliyoboreshwa kuhusu eneo la kosa katika sheria.

    # nft kufuta sheria ya ip yz 7
    Hitilafu: Haikuweza kuchakata kanuni: Hakuna faili au saraka kama hiyo
    Futa sheria ya ip yz 7
    ^

    # nft kufuta sheria ip xx 7
    Hitilafu: Haikuweza kuchakata kanuni: Hakuna faili au saraka kama hiyo
    Futa kanuni ya ip xx 7
    ^

    # nft kufuta jedwali twist
    Hitilafu: Hakuna faili au saraka kama hiyo; ulimaanisha jedwali Γ’β‚¬Λœjaribio' katika ip ya familia?
    futa jedwali twst
    ^^^^

    Mfano wa kwanza unaonyesha kuwa jedwali "y" halipo kwenye mfumo, la pili kuwa kidhibiti "7" hakipo, na cha tatu kidokezo cha kuchapa kinaonyeshwa wakati wa kuandika jina la jedwali.

  • Usaidizi ulioongezwa wa kuangalia kiolesura cha mtumwa kwa kubainisha "meta sdif" au "meta sdifname":

    ... meta sdifname vrf1 ...

  • Usaidizi ulioongezwa kwa shughuli za zamu ya kulia au kushoto. Kwa mfano, kuhamisha lebo ya pakiti iliyopo iliyoachwa na biti 1 na kuweka ndogo hadi 1:

    … alama ya meta weka alama ya meta lshift 1 au 0x1 ...

  • Chaguo "-V" iliyotekelezwa ili kuonyesha maelezo ya toleo lililopanuliwa.

    # nft -V
    nfttables v0.9.4 (Jive saa Tano)
    cli:mstari wa kusoma
    json: ndio
    minigmp: hapana
    libxtables: ndio

  • Chaguzi za mstari wa amri lazima sasa zibainishwe kabla ya amri. Kwa mfano, unahitaji kubainisha "nft -a list ruleset", na kuendesha "nft list ruleset -a" kutasababisha hitilafu.

    Chanzo: opennet.ru

Kuongeza maoni