nftables pakkefilter 0.9.3 udgivelse

offentliggjort frigivelse af pakkefilter nftables 0.9.3, der udvikler sig som en erstatning for iptables, ip6table, arptables og ebtables ved at forene pakkefiltreringsgrænseflader til IPv4, IPv6, ARP og netværksbroer. nftables-pakken inkluderer pakkefilterkomponenter, der kører i brugerrum, mens arbejdet på kerneniveau leveres af nf_tables-undersystemet, som har været en del af Linux-kernen siden release 3.13. Ændringerne, der kræves for at nftables 0.9.3-udgivelsen fungerer, er inkluderet i den kommende Linux 5.5-kernegren.

Kerneniveauet giver kun en generisk protokol-uafhængig grænseflade, der giver grundlæggende funktioner til at udtrække data fra pakker, udføre dataoperationer og flowkontrol. Selve filtreringslogikken og protokolspecifikke handlere kompileres til bytekode i brugerrummet, hvorefter denne bytekode indlæses i kernen ved hjælp af Netlink-grænsefladen og eksekveres i en speciel virtuel maskine, der minder om BPF (Berkeley Packet Filters). Denne tilgang giver dig mulighed for betydeligt at reducere størrelsen af ​​den filtreringskode, der kører på kerneniveau, og flytte alle funktionerne i parsingregler og logik til at arbejde med protokoller ind i brugerrummet.

Vigtigste innovationer:

  • Understøttelse af matchende pakker efter tid. Du kan definere både tids- og datointervaller, hvor reglen skal udløses, og konfigurere udløsning på individuelle ugedage. Tilføjede også en ny mulighed "-T" for at vise epoketid i sekunder.

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

  • Understøttelse af gendannelse og lagring af SELinux-mærker (secmark).

    ct secmark sæt meta secmark
    meta secmark sæt ct secmark

  • Understøttelse af synproxykortlister, så du kan definere mere end én regel pr. backend.

    table ip foo {
    synproxy https-synproxy {
    mss 1460
    wskala 7
    tidsstempel sæk-perm
    }

    synproxy anden-synproxy {
    mss 1460
    wskala 5
    }

    kæde før {
    type filter krog prerouting prioritet rå; politik acceptere;
    tcp dport 8888 tcp flag syn notrack
    }

    kædestang {
    type filter krog frem prioritet filter; politik acceptere;
    ct-tilstand ugyldig, usporet synproxynavn ip saddr-kort { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
    }
    }

  • Evnen til dynamisk at fjerne sæt elementer fra pakkebehandlingsregler.

    nft tilføje regel ... slet @set5 {ip6 saddr. ip6 daddr}

  • Understøttelse af VLAN-kortlægning efter ID og protokol defineret i netværksbroens interface-metadata;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Mulighed "-t" ("--terse") for at udelukke elementer i sætsæt, når regler vises. At køre "nft -t list ruleset" vil udsende:

    tabel ip x {
    sæt y {
    skriv ipv4_addr
    }
    }

    Og med "nft list ruleset"

    tabel ip x {
    sæt y {
    skriv ipv4_addr
    elementer = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34 }
    }
    }

  • Mulighed for at specificere mere end én enhed i netdev-kæder (virker kun med kerne 5.5) for at kombinere fælles filtreringsregler.

    tilføje tabel netdev x
    tilføje kæde netdev xy { \
    type filter hook ingress devices = { eth0, eth1 } prioritet 0;
    }

  • Mulighed for at tilføje beskrivelser af datatyper.

    #nft beskriv ipv4_addr
    datatype ipv4_addr (IPv4-adresse) (basetype heltal), 32 bit

  • Mulighed for at bygge en CLI-grænseflade med linenoise-biblioteket i stedet for libreadline.

    ./configure --with-cli=linenoise

Kilde: opennet.ru

Tilføj en kommentar