nftables paketni filter 0.9.4 izdanje

objavljeno otpuštanje paketnog filtera nftables 0.9.4, koji se razvija kao zamena za iptables, ip6table, arptables i ebtables objedinjavanjem interfejsa za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove. Paket nftables uključuje komponente filtera paketa koje se pokreću u korisničkom prostoru, dok rad na razini kernela osigurava podsistem nf_tables, koji je dio Linux kernela od izdanja 3.13. Promjene potrebne da bi nftables 0.9.4 izdanje radilo uključene su u buduću granu kernela Linux 5.6.

Nivo kernela pruža samo generički interfejs nezavisan od protokola koji obezbeđuje osnovne funkcije za izdvajanje podataka iz paketa, izvođenje operacija sa podacima i kontrolu toka. Pravila filtriranja i obrađivači specifični za protokol se kompajliraju u bajtkod u korisničkom prostoru, nakon čega se ovaj bajt kod učitava u kernel pomoću Netlink interfejsa i izvršava u kernelu u posebnoj virtuelnoj mašini koja podseća na BPF (Berkeley Packet Filters). Ovaj pristup vam omogućava da značajno smanjite veličinu koda za filtriranje koji radi na nivou kernela i premestite sve funkcije raščlanjivanja pravila i logike za rad sa protokolima u korisnički prostor.

Glavne inovacije:

  • Podrška za opsege u vezama (konkatenacija, određeni paketi adresa i portova koji pojednostavljuju poređenje). Na primjer, za skup "bijela lista" čiji su elementi privitak, navođenje oznake "interval" će ukazati da skup može uključivati ​​raspone u prilogu (za prilog "ipv4_addr . ipv4_addr . inet_service" ranije je bilo moguće navesti tačne podudaranja oblika "192.168.10.35. 192.68.11.123", a sada možete odrediti grupe adresa "80-192.168.10.35-192.168.10.40"):

    tablica ip foo {
    postavi bijelu listu {
    upišite ipv4_addr. ipv4_addr. inet_service
    flags interval
    elementi = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    lanac {
    tip filter kuka za preusmjeravanje prioritetnog filtera; pad politike;
    ip saddr. ip daddr. tcp dport @whitelist prihvata
    }
    }

  • U skupovima i listama mapa, moguće je koristiti “typeof” direktivu, koja određuje format elementa prilikom uparivanja.
    Na primjer:

    tablica ip foo {
    postavi bijelu listu {
    typeof ip saddr
    elementi = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    lanac {
    tip filter kuka za preusmjeravanje prioritetnog filtera; pad politike;
    ip daddr @whitelist accept
    }
    }

    tablica ip foo {
    map addr2mark {
    typeof ip saddr : meta oznaka
    elementi = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Dodana je mogućnost korištenja spojeva u NAT vezama, što vam omogućava da navedete adresu i port kada definirate NAT transformacije na osnovu lista mapa ili imenovanih skupova:

    nft add rule ip nat pre dnat ip addr . port na ip saddr mapu { 1.1.1.1 : 2.2.2.2 . trideset }

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

  • Podrška za hardversko ubrzanje uz neke operacije filtriranja koje obavlja mrežna kartica. Ubrzanje je omogućeno preko ethtool uslužnog programa (“ethtool -K eth0 hw-tc-offload on”), nakon čega se aktivira u nftables za glavni lanac koristeći “offload” zastavicu. Kada se koristi Linux kernel 5.6, podržano je hardversko ubrzanje za podudaranje polja zaglavlja i inspekciju dolaznog interfejsa u kombinaciji sa primanjem, odbacivanjem, dupliciranjem (dup) i prosleđivanjem (fwd) paketa. U primjeru ispod, operacije ispuštanja paketa koji dolaze sa adrese 192.168.30.20 se izvode na nivou mrežne kartice, bez prosljeđivanja paketa kernelu:

    # cat file.nft
    tablica netdev x {
    lanac y {
    tip filter kuka ulazni uređaj eth0 prioritet 10; flags offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Poboljšane informacije o lokaciji greške u pravilima.

    # nft brisanje pravila ip yz ručka 7
    Greška: Nije moguće obraditi pravilo: Nema takve datoteke ili direktorija
    brisanje pravila ip yz ručke 7
    ^

    # nft brisanje pravila ip xx ručka 7
    Greška: Nije moguće obraditi pravilo: Nema takve datoteke ili direktorija
    brisanje pravila ip xx ručke 7
    ^

    # nft brisanje tabele twst
    Greška: nema takve datoteke ili direktorija; da li ste mislili stolni ‘test' u porodičnom IP-u?
    obriši tabelu twst
    ^^^^

    Prvi primjer pokazuje da tabela “y” nije u sistemu, drugi da nedostaje rukovalac “7”, a treći da se pri kucanju imena tabele prikazuje prompt za grešku.

  • Dodata podrška za provjeru slave sučelja navođenjem “meta sdif” ili “meta sdifname”:

    ... meta sdifname vrf1 ...

  • Dodata podrška za desnu ili lijevu pomak. Na primjer, da pomaknete postojeću oznaku paketa ulijevo za 1 bit i postavite manji bit na 1:

    … meta oznaka postavljena meta oznaka lshift 1 ili 0x1 …

  • Implementirana opcija "-V" za prikaz proširenih informacija o verziji.

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

  • Opcije komandne linije sada moraju biti specificirane prije naredbi. Na primjer, trebate navesti “nft -a list ruleset”, a pokretanje “nft list ruleset -a” će rezultirati greškom.

    izvor: opennet.ru

Dodajte komentar