Izdanje filtra paketa nftables 0.9.4

Objavljeno otpuštanje paketnog filtra nftables 0.9.4, razvija se kao zamjena za iptables, ip6table, arptables i ebtables objedinjavanjem sučelja za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove. Paket nftables uključuje komponente filtera paketa koje se izvode u korisničkom prostoru, dok rad na razini kernela osigurava podsustav nf_tables, koji je dio Linux kernela od izdanja 3.13. Promjene potrebne za rad izdanja nftables 0.9.4 uključene su u buduću granu jezgre Linux 5.6.

Razina kernela pruža samo generičko sučelje neovisno o protokolu koje pruža osnovne funkcije za izdvajanje podataka iz paketa, izvođenje podatkovnih operacija i kontrolu toka. Pravila filtriranja i rukovatelji specifični za protokol kompajliraju se u bajt kod u korisničkom prostoru, nakon čega se ovaj bajt kod učitava u kernel pomoću Netlink sučelja i izvršava u kernelu u posebnom virtualnom stroju koji podsjeća na BPF (Berkeley Packet Filters). Ovaj pristup vam omogućuje da značajno smanjite veličinu koda za filtriranje koji se izvodi na razini jezgre i premjestite sve funkcije pravila parsiranja i logike za rad s protokolima u korisnički prostor.

Glavne inovacije:

  • Podrška za raspone u vezama (ulančavanje, određeni paketi adresa i portova koji pojednostavljuju usporedbu). Na primjer, za skup "whitelist" čiji su elementi privitak, navođenje zastavice "interval" označit će da skup može uključivati ​​raspone u privitku (za privitak "ipv4_addr . ipv4_addr . inet_service" ranije je bilo moguće navesti točne odgovara obliku "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 popis dopuštenih {
    upišite ipv4_addr. ipv4_addr. inet_service
    interval zastavica
    elementi = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    lanac {
    vrsta filtra hook prerouting priority filter; pad politike;
    ip saddr. ip daddr. tcp dport @bijela lista prihvatiti
    }
    }

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

    tablica ip foo {
    postavi popis dopuštenih {
    typeof ip saddr
    elementi = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    lanac {
    vrsta filtra hook prerouting priority filter; pad politike;
    ip daddr @whitelist prihvatiti
    }
    }

    tablica ip foo {
    karta 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ćuje da navedete adresu i port prilikom definiranja NAT transformacija na temelju popisa mapa ili imenovanih skupova:

    nft dodavanje pravila ip nat pre dnat ip adresa. 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 dodavanje pravila ip nat pre dnat ip adresa. priključak na ip saddr. tcp dport karta @odredišta

  • Podrška za hardversko ubrzanje s nekim operacijama filtriranja koje provodi mrežna kartica. Ubrzanje je omogućeno putem uslužnog programa ethtool (“ethtool -K eth0 hw-tc-offload on”), nakon čega se aktivira u nftables za glavni lanac pomoću oznake “offload”. Kada koristite Linux kernel 5.6, podržano je hardversko ubrzanje za podudaranje polja zaglavlja i inspekciju dolaznog sučelja u kombinaciji s primanjem, odbacivanjem, dupliciranjem (dup) i prosljeđivanjem (fwd) paketa. U donjem primjeru, operacije ispuštanja paketa koji dolaze s adrese 192.168.30.20 izvode se na razini mrežne kartice, bez prosljeđivanja paketa jezgri:

    # mačja datoteka.nft
    tablica netdev x {
    lanac y {
    vrsta filtra kuka ingress device eth0 prioritet 10; zastave istovar;
    ip saddr 192.168.30.20 pad
    }
    }
    # nft -f datoteka.nft

  • Poboljšane informacije o mjestu pogreške u pravilima.

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

    # nft pravilo brisanja ip xx handle 7
    Pogreška: Nije moguće obraditi pravilo: Nema takve datoteke ili direktorija
    brisanje pravila ip xx rukovanje 7
    ^

    # nft brisanje tablice twst
    Pogreška: Nema takve datoteke ili direktorija; jeste li mislili tablica ‘test' u obitelji ip?
    izbrisati tablicu twst
    ^^^^

    Prvi primjer pokazuje da tablica “y” nije u sustavu, drugi da nedostaje rukovatelj “7”, a treći da se prilikom upisivanja naziva tablice prikazuje upit za grešku pri upisu.

  • Dodana podrška za provjeru podređenog sučelja navođenjem "meta sdif" ili "meta sdifname":

    ... meta sdifname vrf1 ...

  • Dodana podrška za operacije pomaka udesno ili ulijevo. Na primjer, da pomaknete postojeću oznaku paketa ulijevo za 1 bit i postavite sporedni bit na 1:

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

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

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

  • Opcije naredbenog retka sada moraju biti navedene prije naredbi. Na primjer, trebate navesti "nft -a list ruleset", a pokretanje "nft list ruleset -a" rezultirat će pogreškom.

    Izvor: opennet.ru

Dodajte komentar