Izdaja paketnega filtra nftables 0.9.4

Objavljeno sprostitev paketnega filtra nftables 0.9.4, ki se razvija kot zamenjava za iptables, ip6table, arptables in ebtables s poenotenjem vmesnikov za filtriranje paketov za IPv4, IPv6, ARP in omrežne mostove. Paket nftables vključuje komponente paketnega filtra, ki se izvajajo v uporabniškem prostoru, medtem ko raven jedra zagotavlja podsistem nf_tables, ki je del jedra Linuxa od izdaje 3.13. Spremembe, potrebne za delovanje izdaje nftables 0.9.4, so vključene v prihodnjo vejo jedra Linux 5.6.

Na ravni jedra je na voljo le generični vmesnik, neodvisen od protokola, ki zagotavlja osnovne funkcije za pridobivanje podatkov iz paketov, izvajanje operacij s podatki in nadzor pretoka. Sama pravila filtriranja in obdelovalci, specifični za protokol, so prevedeni v bajtno kodo uporabniškega prostora, nakar se ta bajtna koda naloži v jedro z uporabo vmesnika Netlink in izvede v jedru v posebnem virtualnem stroju, ki spominja na BPF (Berkeley Packet Filters). Ta pristop omogoča znatno zmanjšanje velikosti filtrirne kode, ki se izvaja na ravni jedra, in premikanje vseh funkcij pravil razčlenjevanja in logike dela s protokoli v uporabniški prostor.

Glavne novosti:

  • Podpora za obsege v spojih (veriženje, določene vezave naslovov in vrat, ki poenostavljajo ujemanje). Na primer, za nabor "belega seznama", katerega elementi so priloge, bo navedba zastavice "interval" pomenila, da lahko nabor vključuje obsege v prilogi (za prilogo "ipv4_addr. ipv4_addr. inet_service" je bilo prej mogoče navesti točno ujema kot "192.168.10.35. 192.68.11.123", zdaj pa lahko določite skupine naslovov "80-192.168.10.35-192.168.10.40"):

    tabela ip foo {
    nastavi beli seznam {
    vnesite ipv4_addr. ipv4_addr. inet_service
    interval zastavic
    elementi = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125 . 80}
    }

    veriga {
    vrsta filtra kavelj prednostni filter pred usmerjanjem; padec politike;
    ip saddr. ip daddr. tcp dport@bela lista sprejeti
    }
    }

  • V nizih in map-seznamih je možna uporaba direktive "typeof", ki določa format elementa pri preslikavi.
    Na primer:

    tabela ip foo {
    nastavi beli seznam {
    typeof ip saddr
    elementi = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    veriga {
    vrsta filtra kavelj prednostni filter pred usmerjanjem; padec politike;
    ip daddr @bela lista sprejme
    }
    }

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

  • Dodana možnost uporabe prilog v vezavah NAT, ki vam omogoča, da določite naslov in vrata pri definiranju prevodov NAT na podlagi seznamov zemljevidov ali poimenovanih nizov:

    nft add rule ip nat pre dnat ip addr. vrata do zemljevida ip saddr { 1.1.1.1 : 2.2.2.2 . trideset }

    nft dodaj zemljevid ip nat destinacij { type ipv4_addr. inet_service: ipv4_addr. inet_storitev\\; }
    nft add rule ip nat pre dnat ip addr. vrata na ip saddr. tcp dport zemljevid @destinacije

  • Podpora za pospeševanje strojne opreme z odstranitvijo nekaterih operacij filtriranja na ramenih omrežne kartice. Pospešek je omogočen prek pripomočka ethtool ("ethtool -K eth0 hw-tc-offload on"), nato pa se aktivira v nftables za glavno verigo z uporabo zastavice "offload". Pri uporabi jedra Linux 5.6 je strojno pospeševanje podprto za ujemanje polj glave in pregled dohodnega vmesnika v kombinaciji s sprejemanjem, izpuščanjem, podvajanjem (dup) in posredovanjem (fwd) paketov. V spodnjem primeru se operacije za izpuščanje paketov, ki prihajajo z naslova 192.168.30.20, izvajajo na ravni omrežne kartice, brez posredovanja paketov jedru:

    # mačja datoteka.nft
    tabela netdev x {
    veriga y {
    vrsta vstopne naprave kavelj filtra eth0 prioriteta 10; razbremenitev zastavic;
    ip saddr 192.168.30.20 padec
    }
    }
    # nft -f datoteka.nft

  • Izboljšana informacija o mestu napake v pravilih.

    # nft delete rule ip yz handle 7
    Napaka: Ni bilo mogoče obdelati pravila: Ni takšne datoteke ali imenika
    izbriši pravilo ip yz ročaj 7
    ^

    # nft delete rule ip xx handle 7
    Napaka: Ni bilo mogoče obdelati pravila: Ni takšne datoteke ali imenika
    izbriši pravilo ip xx ročaj 7
    ^

    # nft izbriši tabelo twst
    Napaka: Ni takšne datoteke ali imenika; ste mislili tabelo ‘test' v družinskem ip?
    izbriši zasuk tabele
    ^^^^

    Prvi primer kaže, da tabela 'y' ni prisotna v sistemu, drugi kaže, da manjka upravljalnik '7', tretji pa prikazuje tipkarsko napako pri vnosu imena tabele.

  • Dodana podpora za preverjanje podrejenega vmesnika prek podajanja »meta sdif« ali »meta sdifname«:

    ... meta sdifname vrf1 ...

  • Dodana podpora za premikanje v desno ali levo. Na primer, če želite premakniti obstoječo oznako paketa levo za 1 bit in nastaviti spodnji bit na 1:

    … meta oznaka nastavljena meta oznaka lshift 1 ali 0x1 …

  • Implementirana možnost "-V" za prikaz razširjenih informacij o različici.

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

  • Možnosti ukazne vrstice so zdaj obvezne pred ukazi. Določiti morate na primer "nft -a list ruleset" in zagon "nft list ruleset -a" bo povzročil napako.

    Vir: opennet.ru

Dodaj komentar