nftables csomagszűrő kiadás 0.9.4

közzétett csomagszűrő kiadás nftables 0.9.4, amely az iptables, ip6table, arptables és ebtables helyettesítésére fejleszt, egyesítve az IPv4, IPv6, ARP és hálózati hidak csomagszűrő felületeit. Az nftables csomag felhasználói térben futó csomagszűrő komponenseket tartalmaz, míg a kernel szintjét az nf_tables alrendszer biztosítja, amely a 3.13-as kiadás óta a Linux kernel része. Az nftables 0.9.4 működéséhez szükséges változtatásokat a jövőbeli kernelág tartalmazza Linux 5.6.

Kernel szinten csak egy általános, protokollfüggetlen interfész biztosított, amely alapvető funkciókat biztosít az adatok csomagokból történő kinyeréséhez, az adatokkal kapcsolatos műveletek végrehajtásához és az áramlás szabályozásához. Magukat a szűrési szabályokat és a protokoll-specifikus kezelőket felhasználói térbeli bájtkódba fordítják, majd ezt a bájtkódot a Netlink interfész segítségével betöltik a kernelbe, és egy speciális, BPF-hez (Berkeley Packet Filters) hasonlító virtuális gépben hajtják végre a kernelben. Ez a megközelítés lehetővé teszi a kernel szinten futó szűrőkód méretének jelentős csökkentését, valamint az elemzési szabályok összes funkciójának és a protokollokkal való munka logikájának a felhasználói térbe való áthelyezését.

Főbb újítások:

  • Tartományok támogatása az összekapcsolásokban (összefűzés, bizonyos cím- és port-összerendelések, amelyek egyszerűsítik az illesztést). Például egy "whitelist" halmaznál, amelynek elemei egy melléklet, az "intervallum" jelző megadása azt jelzi, hogy a készlet tartalmazhat tartományokat a mellékletben (az "ipv4_addr . ipv4_addr . inet_service" mellékletnél korábban lehetséges volt a pontos listázás egyezik, mint "192.168.10.35. 192.68.11.123", és most megadhat címcsoportokat "80-192.168.10.35-192.168.10.40"):192.68.11.123.

    table ip foo {
    engedélyezőlista beállítása {
    írja be az ipv4_addr parancsot. ipv4_addr. inet_service
    zászlók intervallum
    elemek = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80}
    }

    láncrúd {
    típusú szűrő horog prerouting priority szűrő; politika csökkenése;
    ip saddr . ip apa . tcp dport@whitelist elfogadja
    }
    }

  • A halmazokban és a map-listekben lehetőség van a "typeof" direktíva használatára, amely meghatározza az elem formátumát a leképezéskor.
    Például:

    table ip foo {
    engedélyezőlista beállítása {
    ip típusa saddr
    elemek = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    láncrúd {
    típusú szűrő horog prerouting priority szűrő; politika csökkenése;
    ip daddr @whitelist elfogadom
    }
    }

    table ip foo {
    térkép addr2mark {
    ip típusa saddr: meta jel
    elemek = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Hozzáadtuk a csatolmányok NAT-összerendelésekben való használatának lehetőségét, amely lehetővé teszi cím és port megadását a NAT-fordítások térképlisták vagy elnevezett készletek alapján történő meghatározásakor:

    nft add szabály ip nat pre dnat ip addr . port az ip-re saddr map { 1.1.1.1 : 2.2.2.2 . harminc }

    nft térkép hozzáadása ip nat célállomások { type ipv4_addr . inet_service: ipv4_addr. inet_service\\; }
    nft add szabály ip nat pre dnat ip addr . port az ip-re saddr . tcp dport térkép @destinations

  • Hardveres gyorsítás támogatása néhány szűrési művelet eltávolításával a hálózati kártya vállán. A gyorsítás az ethtool segédprogramon keresztül engedélyezett ("ethtool -K eth0 hw-tc-offload on"), majd a főlánc nftables-jában az "offload" jelzővel aktiválódik. A Linux 5.6-os kernel használatakor a hardveres gyorsítás támogatott a fejlécmezők egyeztetéséhez és a bejövő interfész ellenőrzéséhez, a csomagok fogadásával, eldobásával, másolásával (dup) és továbbításával (fwd) kombinálva. Az alábbi példában a 192.168.30.20 címről érkező csomagok eldobásának műveletei a hálózati kártya szintjén kerülnek végrehajtásra, anélkül, hogy a csomagokat átadnák a kernelnek:

    # macska fájl.nft
    táblázat netdev x {
    lánc y {
    típus szűrő horog bemeneti eszköz eth0 prioritás 10; zászlók tehermentesítése;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f fájl.nft

  • Továbbfejlesztett információ a hibák helyéről a szabályokban.

    # nft törlési szabály ip yz fogantyú 7
    Hiba: Nem sikerült feldolgozni a szabályt: Nincs ilyen fájl vagy könyvtár
    szabály törlése ip yz fogantyú 7
    ^

    # nft törlés szabály ip xx 7
    Hiba: Nem sikerült feldolgozni a szabályt: Nincs ilyen fájl vagy könyvtár
    szabály törlése ip xx fogantyú 7
    ^

    # nft tábla törlése twst
    Hiba: Nincs ilyen fájl vagy könyvtár; a családi ip-ben a táblázat "teszt"-re gondoltál?
    táblázatcsavar törlése
    ^^^^

    Az első példa azt mutatja, hogy az 'y' tábla nincs jelen a rendszerben, a második azt mutatja, hogy hiányzik a '7' kezelő, a harmadik pedig egy elírási tippet mutat a tábla nevének begépelésekor.

  • Hozzáadott támogatás a slave interfész ellenőrzéséhez a "meta sdif" vagy a "meta sdifname" megadásával:

    ... meta sdifname vrf1 ...

  • Hozzáadott támogatás a jobb vagy bal műszakhoz. Például egy meglévő csomagcímke 1 bittel balra tolásához, és a mellékbit 1-re állításához:

    … meta jel set meta mark lshift 1 vagy 0x1 …

  • Megvalósított "-V" opció a kiterjesztett verzióinformációk megjelenítéséhez.

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

  • A parancssori opciókat most meg kell követelni a parancsok előtt. Például meg kell adnia az "nft -a list ruleset" paramétert, és az "nft list rulet -a" futtatása hibát eredményez.

    Forrás: opennet.ru

Hozzászólás