nftables paketfilter 0.9.3 release

publiceras paketfilterutlösning nftables 0.9.3, utvecklas som en ersättning för iptables, ip6table, arptables och ebtables genom att förena paketfiltreringsgränssnitt för IPv4, IPv6, ARP och nätverksbryggor. Paketet nftables inkluderar paketfilterkomponenter som körs i användarutrymme, medan arbetet på kärnnivå tillhandahålls av nf_tables-undersystemet, som har varit en del av Linux-kärnan sedan release 3.13. De ändringar som krävs för att nftables 0.9.3-versionen ska fungera ingår i den kommande Linux 5.5-kärngrenen.

Kärnnivån tillhandahåller endast ett generiskt protokolloberoende gränssnitt som tillhandahåller grundläggande funktioner för att extrahera data från paket, utföra dataoperationer och flödeskontroll. Själva filtreringslogiken och protokollspecifika hanterare kompileras till bytekod i användarutrymmet, varefter denna bytekod laddas in i kärnan med hjälp av Netlink-gränssnittet och exekveras i en speciell virtuell maskin som påminner om BPF (Berkeley Packet Filters). Detta tillvägagångssätt tillåter dig att avsevärt minska storleken på filtreringskoden som körs på kärnnivå och flytta alla funktioner för att analysera regler och logik för att arbeta med protokoll till användarutrymmet.

Huvudsakliga innovationer:

  • Stöd för att matcha paket efter tid. Du kan definiera både tids- och datumintervall inom vilka regeln ska utlösas och konfigurera utlösning på enskilda dagar i veckan. Lade också till ett nytt alternativ "-T" för att visa epokal tid i sekunder.

    metatid \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
    meta hour \"17:00\" - \"19:00\"
    metadag \"fre\"

  • Stöd för att återställa och spara SELinux-märken (secmark).

    ct secmark set meta secmark
    meta secmark set ct secmark

  • Stöd för synproxykartlistor, så att du kan definiera mer än en regel per backend.

    table ip foo {
    synproxy https-synproxy {
    mss 1460
    wscale 7
    tidsstämpel säck-perm
    }

    synproxy annan-synproxy {
    mss 1460
    wscale 5
    }

    kedja pre {
    typ filterkrok prerouting priority raw; policy acceptera;
    tcp dport 8888 tcp flaggor syn notrack
    }

    kedjesvärd {
    typ filter krok framåt prioritetsfilter; policy acceptera;
    ct-tillstånd ogiltigt, ospårat synproxynamn ip saddr-karta { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
    }
    }

  • Möjligheten att dynamiskt ta bort set-element från paketbehandlingsregler.

    nft add-regel ... radera @set5 {ip6 saddr. ip6 daddr}

  • Stöd för VLAN-mappning med ID och protokoll definierade i nätverksbryggans gränssnittsmetadata;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Alternativet "-t" ("--terse") för att utesluta element i uppsättningar när regler visas. Att köra "nft -t list ruleset" kommer att mata ut:

    tabell ip x {
    set y {
    skriv ipv4_addr
    }
    }

    Och med "nft list ruleset"

    tabell ip x {
    set y {
    skriv ipv4_addr
    element = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34 }
    }
    }

  • Möjlighet att specificera mer än en enhet i netdev-kedjor (fungerar endast med kärna 5.5) för att kombinera vanliga filtreringsregler.

    lägg till tabell netdev x
    lägg till kedja netdev xy { \
    typ filter krok ingress enheter = { eth0, eth1} prioritet 0;
    }

  • Möjlighet att lägga till beskrivningar av datatyper.

    # nft beskriv ipv4_addr
    datatyp ipv4_addr (IPv4-adress) (bastyp heltal), 32 bitar

  • Möjlighet att bygga ett CLI-gränssnitt med linenoise-biblioteket istället för libreadline.

    ./configure --with-cli=linenoise

Källa: opennet.ru

Lägg en kommentar