nftables Paketfilter 0.9.4 Verëffentlechung

publizéiert Pak Filter Fräisetzung nftables 0.9.4, Entwéckelt als Ersatz fir iptables, ip6table, arptables an ebtables andeems Packet Filter Interfaces fir IPv4, IPv6, ARP an Netzwierkbrécke vereenegt ginn. Den nftables Package enthält Paketfilterkomponenten déi am Benotzerraum lafen, während d'Kernelniveau Aarbecht vum nf_tables Subsystem geliwwert gëtt, deen Deel vum Linux Kernel zënter der Verëffentlechung 3.13. D'Ännerungen déi néideg sinn fir d'nftables 0.9.4 Verëffentlechung fir ze schaffen sinn an der zukünfteg Kernelzweig abegraff Linux 5.6.

De Kernelniveau bitt nëmmen eng generesch protokollonofhängeg Interface déi Basisfunktiounen ubitt fir Daten aus Päckchen ze extrahieren, Datenoperatiounen auszeféieren a Flowkontrolle. D'Filterregelen a Protokollspezifesch Handler ginn an Bytecode am Benotzerraum zesummegesat, duerno gëtt dëse Bytecode an de Kernel mat der Netlink Interface gelueden an am Kernel an enger spezieller virtueller Maschinn ausgefouert, déi un BPF (Berkeley Packet Filters) erënnert. Dës Approche erlaabt Iech d'Gréisst vum Filtercode deen um Kernelniveau leeft wesentlech ze reduzéieren an all d'Funktioune vu Parsingregelen a Logik fir mat Protokoller an de Benotzerraum ze réckelen.

Haaptinnovatiounen:

  • Ënnerstëtzung fir Beräicher a Verbindungen (Concatenation, gewësse Bündel vun Adressen a Ports déi de Verglach vereinfachen). Zum Beispill, fir e Set "Whitelist", deem seng Elementer en Uschlëss sinn, gëtt d'Spezifikatioun vum "Intervall" Fändel uginn datt de Set Beräicher am Uschlëss enthalen kann (fir den Attachment "ipv4_addr . ipv4_addr . inet_service" war et virdru méiglech genee ze lëschten Mätscher vun der Form "192.168.10.35. 192.68.11.123", an elo kënnt Dir Gruppen vun Adressen uginn "80-192.168.10.35-192.168.10.40"): 192.68.11.123.

    Dësch ip foo {
    wäiss Lëscht setzen {
    Typ ipv4_addr . ipv4_addr. inet_service
    Fändelen Intervall
    Elementer = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    Kettenbar {
    Typ Filterhaken Prerouting Prioritéit Filter; Politik drop;
    ip saddr. ip dadr. tcp dport @whitelist akzeptéieren
    }
    }

  • A Sets a Kaartlëschten ass et méiglech d'Direktiv "Typeof" ze benotzen, déi d'Format vum Element beim Matching bestëmmt.
    Zum Beispill:

    Dësch ip foo {
    wäiss Lëscht setzen {
    Typ vun IP saddr
    Elementer = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    Kettenbar {
    Typ Filterhaken Prerouting Prioritéit Filter; Politik drop;
    ip daddr @whitelist akzeptéieren
    }
    }

    Dësch ip foo {
    map adr2mark {
    Typ vun IP Saddr: Meta Mark
    Elementer = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • D'Fäegkeet bäigefüügt fir Joins an NAT Bindungen ze benotzen, wat Iech erlaabt eng Adress an Hafen ze spezifizéieren wann Dir NAT Transformatiounen definéiert baséiert op Kaartlëschten oder genannte Sets:

    nft add rule ip nat pre dnat ip adr. port op IP saddr Kaart {1.1.1.1: 2.2.2.2. drësseg }

    nft add Kaart ip nat Destinatiounen {Typ ipv4_addr. inet_service: ipv4_addr. inet_service \\; }
    nft add rule ip nat pre dnat ip adr. port zu ip saddr. tcp dport map @destinations

  • Ënnerstëtzung fir Hardware Beschleunegung mat e puer Filteroperatioune vun der Netzwierkkaart duerchgefouert. Beschleunegung gëtt iwwer d'Ethtool Utility aktivéiert ("ethtool -K eth0 hw-tc-offload on"), duerno gëtt et an nftables fir d'Haaptkette mat dem "Offload" Fändel aktivéiert. Wann Dir de Linux Kernel 5.6 benotzt, gëtt d'Hardwarebeschleunigung ënnerstëtzt fir Headerfeldmatching an erakommen Interface Inspektioun a Kombinatioun mat Empfang, Entsuergung, Duplikatioun (Dup) a Forwarding (fwd) Pakete. Am Beispill hei drënner sinn d'Operatiounen fir Päckchen aus der Adress 192.168.30.20 ze falen op der Netzwierkkaartniveau ausgefouert, ouni d'Päckchen un de Kernel weiderzeginn:

    # cat file.nft
    Dësch netdev x {
    Kette y {
    Typ Filterhaken Ingress Apparat eth0 Prioritéit 10; Fändelen eroflueden;
    IP saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Verbesserte Informatioun iwwer d'Location vun engem Feeler an de Regelen.

    # nft läschen Regel ip yz Handle 7
    Feeler: Konnt d'Regel net veraarbecht: Keng esou Datei oder Verzeechnes
    läschen Regel ip yz handle 7
    ^

    # nft läschen Regel ip xx Handle 7
    Feeler: Konnt d'Regel net veraarbecht: Keng esou Datei oder Verzeechnes
    läschen Regel IP xx Handle 7
    ^

    # nft läschen Dësch twst
    Feeler: Keng esou Datei oder Verzeechnes; Hutt Dir den Dësch ‘Test' an der Famill-IP gemengt?
    läschen Dësch twst
    ^^^^

    Dat éischt Beispill weist datt den Dësch "y" net am System ass, déi zweet datt den "7" Handler fehlt, an déi drëtt datt eng Tippfeeler ugewise gëtt wann Dir den Dëschnumm schreift.

  • Zousätzlech Ënnerstëtzung fir d'Sklave-Interface ze kontrolléieren andeems Dir "meta sdif" oder "meta sdifname" spezifizéiert:

    ... meta sdifname vrf1 ...

  • Zousätzlech Ënnerstëtzung fir riets oder lénks Verréckelung Operatiounen. Zum Beispill, fir e existente Paketikett vun 1 Bit lénks ze verschécken an de klengen Bit op 1 ze setzen:

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

  • Implementéiert "-V" Optioun fir erweidert Versiounsinformatioun ze weisen.

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

  • Kommandozeiloptiounen mussen elo virum Kommandoen spezifizéiert ginn. Zum Beispill musst Dir "nft -a Lëscht Regelenset" spezifizéieren, a lafen "nft Lëscht Regelenset -a" féiert zu engem Feeler.

    Source: opennet.ru

Setzt e Commentaire