nftables packet filter 0.9.4 release

Nai-publish paglabas ng packet filter nftables 0.9.4, na umuunlad bilang kapalit ng mga iptable, ip6table, mga arptable at mga ebtable sa pamamagitan ng pagsasama-sama ng mga interface ng packet filtering para sa IPv4, IPv6, ARP at mga tulay ng network. Kasama sa package ng nftables ang mga bahagi ng packet filter na tumatakbo sa espasyo ng gumagamit, habang ang gawain sa antas ng kernel ay ibinibigay ng subsystem ng nf_tables, na naging bahagi ng kernel ng Linux mula noong inilabas ang 3.13. Ang mga pagbabagong kailangan para gumana ang nftables 0.9.4 release ay kasama sa hinaharap na kernel branch Linux 5.6.

Ang antas ng kernel ay nagbibigay lamang ng isang generic na protocol-independent na interface na nagbibigay ng mga pangunahing function para sa pagkuha ng data mula sa mga packet, pagsasagawa ng mga operasyon ng data, at kontrol sa daloy. Ang mga panuntunan sa pag-filter at mga humahawak na partikular sa protocol ay pinagsama-sama sa bytecode sa espasyo ng gumagamit, pagkatapos nito ay na-load ang bytecode na ito sa kernel gamit ang interface ng Netlink at isinagawa sa kernel sa isang espesyal na virtual machine na nakapagpapaalaala sa BPF (Berkeley Packet Filters). Ang diskarte na ito ay nagbibigay-daan sa iyo upang makabuluhang bawasan ang laki ng filtering code na tumatakbo sa antas ng kernel at ilipat ang lahat ng mga function ng mga panuntunan sa pag-parse at lohika para sa pagtatrabaho sa mga protocol sa espasyo ng gumagamit.

Mga pangunahing inobasyon:

  • Suporta para sa mga hanay sa mga koneksyon (concatenation, ilang mga bundle ng mga address at port na nagpapasimple sa paghahambing). Halimbawa, para sa isang set na "whitelist" na ang mga elemento ay isang attachment, ang pagtukoy sa "interval" na flag ay magsasaad na ang set ay maaaring magsama ng mga saklaw sa attachment (para sa attachment na "ipv4_addr . ipv4_addr . inet_service" dati ay posible na ilista ang eksaktong mga tugma ng form na "192.168.10.35. 192.68.11.123", at maaari mo na ngayong tukuyin ang mga pangkat ng mga address na "80-192.168.10.35-192.168.10.40":192.68.11.123.

    table ip foo {
    itakda ang whitelist {
    i-type ang ipv4_addr . ipv4_addr. inet_service
    pagitan ng mga flag
    elemento = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    chain bar {
    uri ng filter hook prerouting priority filter; pagbaba ng patakaran;
    ip saddr. ip dadr. tcp dport @whitelist tanggapin
    }
    }

  • Sa mga set at listahan ng mapa, posibleng gamitin ang "typeof" na direktiba, na tumutukoy sa format ng elemento kapag tumutugma.
    Halimbawa:

    table ip foo {
    itakda ang whitelist {
    uri ng ip saddr
    elemento = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    chain bar {
    uri ng filter hook prerouting priority filter; pagbaba ng patakaran;
    ip daddr @whitelist tanggapin
    }
    }

    table ip foo {
    mapa addr2mark {
    uri ng ip saddr : meta mark
    elemento = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Idinagdag ang kakayahang gumamit ng mga pagsali sa NAT bindings, na nagbibigay-daan sa iyong tumukoy ng address at port kapag tinutukoy ang NAT transformations batay sa mga listahan ng mapa o pinangalanang set:

    nft add rule ip nat pre dnat ip addr . port sa ip saddr map { 1.1.1.1 : 2.2.2.2 . tatlumpu}

    nft add map ip nat destinations { type ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
    nft add rule ip nat pre dnat ip addr . port sa ip saddr. tcp dport map @destinations

  • Suporta para sa pagpapabilis ng hardware na may ilang mga operasyon sa pag-filter na isinasagawa ng network card. Ang acceleration ay pinagana sa pamamagitan ng ethtool utility ("ethtool -K eth0 hw-tc-offload on"), pagkatapos nito ay i-activate ito sa nftables para sa pangunahing chain gamit ang flag na "offload". Kapag ginagamit ang Linux kernel 5.6, sinusuportahan ang hardware acceleration para sa pagtutugma ng field ng header at inspeksyon ng papasok na interface kasama ng pagtanggap, pagtatapon, pagdodoble (dup), at pagpapasa (fwd) na mga packet. Sa halimbawa sa ibaba, ang mga operasyon ng pag-drop ng mga packet na nagmumula sa address na 192.168.30.20 ay ginagawa sa antas ng network card, nang hindi ipinapasa ang mga packet sa kernel:

    # cat file.nft
    table netdev x {
    chain y {
    uri ng filter hook ingress device eth0 priority 10; mga flag offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Pinahusay na impormasyon tungkol sa lokasyon ng isang error sa mga panuntunan.

    # nft tanggalin ang panuntunan ip yz handle 7
    Error: Hindi maproseso ang panuntunan: Walang ganoong file o direktoryo
    tanggalin ang panuntunan ip yz handle 7
    ^

    # nft tanggalin ang panuntunan ip xx handle 7
    Error: Hindi maproseso ang panuntunan: Walang ganoong file o direktoryo
    tanggalin ang panuntunan ip xx handle 7
    ^

    # nft tanggalin ang table twst
    Error: Walang ganoong file o direktoryo; ang ibig mong sabihin ay table Γ’β‚¬Λœtest' sa family ip?
    tanggalin ang table twst
    ^ ^^ ^^

    Ang unang halimbawa ay nagpapakita na ang talahanayang "y" ay wala sa system, ang pangalawa na ang "7" na tagapangasiwa ay nawawala, at ang pangatlo na ang isang typo prompt ay ipinapakita kapag nagta-type ng pangalan ng talahanayan.

  • Nagdagdag ng suporta para sa pagsuri sa interface ng alipin sa pamamagitan ng pagtukoy ng "meta sdif" o "meta sdifname":

    ... meta sdifname vrf1 ...

  • Nagdagdag ng suporta para sa kanan o kaliwang pagpapatakbo ng shift. Halimbawa, upang ilipat ang isang umiiral na label ng packet na naiwan ng 1 bit at itakda ang minor bit sa 1:

    … meta mark set meta mark lshift 1 o 0x1 …

  • Ipinatupad ang opsyong "-V" upang ipakita ang impormasyon ng pinahabang bersyon.

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

  • Dapat na ngayong tukuyin ang mga opsyon sa command line bago ang mga command. Halimbawa, kailangan mong tukuyin ang "nft -a list ruleset", at ang pagpapatakbo ng "nft list ruleset -a" ay magreresulta sa isang error.

    Pinagmulan: opennet.ru

Magdagdag ng komento