nftables pakét filter release 0.9.4

diterbitkeun release pakét filter nftables 0.9.4, Ngembangkeun salaku gaganti pikeun iptables, ip6table, arptables sareng ebtables ku ngahijikeun antar muka panyaring pakét pikeun IPv4, IPv6, ARP sareng sasak jaringan. Paket nftables kalebet komponén saringan pakét anu dijalankeun dina rohangan pangguna, sedengkeun padamelan tingkat kernel disayogikeun ku subsistem nf_tables, anu parantos janten bagian tina kernel Linux ti saprak ngaleupaskeun 3.13. Parobahan dipikabutuh pikeun nftables 0.9.4 release pikeun digawé téh kaasup kana cabang kernel hareup Linux Ubuntu 5.6.

Tingkat kernel ngan nyadiakeun antarbeungeut protokol-bebas generik nu nyadiakeun pungsi dasar pikeun extracting data tina pakét, ngajalankeun operasi data, jeung kontrol aliran. Aturan nyaring jeung panangan husus protokol anu disusun kana bytecode dina spasi pamaké, nu satutasna bytecode ieu dimuat kana kernel ngagunakeun panganteur Netlink sarta dieksekusi dina kernel dina mesin virtual husus reminiscent tina BPF (Berkeley Packet Filters). Pendekatan ieu ngamungkinkeun anjeun sacara signifikan ngirangan ukuran kode nyaring anu dijalankeun dina tingkat kernel sareng mindahkeun sadaya fungsi aturan parsing sareng logika pikeun damel sareng protokol kana rohangan pangguna.

Inovasi utama:

  • Rojongan pikeun rentang dina sambungan (concatenation, bundles tangtu alamat na port nu simplify ngabandingkeun). Contona, pikeun hiji set "whitelist" anu elemen mangrupa kantétan, nangtukeun "interval" bandéra bakal nunjukkeun yén set bisa ngawengku rentang dina kantétan (pikeun kantétan "ipv4_addr. ipv4_addr. inet_service "éta saméméhna mungkin pikeun daptar pasti. cocog tina bentuk "192.168.10.35. 192.68.11.123", tur ayeuna anjeun bisa nangtukeun grup alamat "80-192.168.10.35-192.168.10.40" .

    tabél ip foo {
    set daptar bodas {
    ngetik ipv4_addr . ipv4_addr. inet_service
    interval bandéra
    elemen = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    ranté bar {
    tipe filter hook prerouting prioritas filter; turun kawijakan;
    ip sadr. ip adul. tcp dport @whitelist nampi
    }
    }

  • Dina set sareng daptar peta, anjeun tiasa nganggo diréktif "typeof", anu nangtukeun format unsur nalika cocog.
    Contona:

    tabél ip foo {
    set daptar bodas {
    jenis ip saddr
    elemen = {192.168.10.35, 192.168.10.101, 192.168.10.135}
    }

    ranté bar {
    tipe filter hook prerouting prioritas filter; turun kawijakan;
    ip daddr @whitelist nampi
    }
    }

    tabél ip foo {
    peta addr2mark {
    typeof ip saddr: meta mark
    elemen = {192.168.10.35: 0x00000001, 192.168.10.135: 0x00000002}
    }
    }

  • Katambah kamampuhan pikeun ngagunakeun gabung dina bindings NAT, nu ngidinan Anjeun pikeun nangtukeun alamat na port nalika nangtukeun transformasi NAT dumasar kana daptar peta atawa susunan ngaranna:

    nft nambahkeun aturan ip nat pre dnat ip addr . port ka ip saddr peta {1.1.1.1: 2.2.2.2. tilu puluh}

    nft nambahkeun peta ip nat tujuan {ketik ipv4_addr. inet_service: ipv4_addr. inet_service \\; }
    nft nambahkeun aturan ip nat pre dnat ip addr . port ka ip saddr. peta tcp dport @destinations

  • Rojongan pikeun akselerasi hardware sareng sababaraha operasi nyaring anu dilakukeun ku kartu jaringan. Akselerasi diaktipkeun via utilitas ethtool ("ethtool -K eth0 hw-tc-offload on"), nu satutasna diaktipkeun dina nftables pikeun ranté utama ngagunakeun bandéra "offload". Nalika nganggo kernel Linux 5.6, akselerasi hardware dirojong pikeun cocog lapangan header sareng pamariksaan antarmuka anu datang dina kombinasi sareng nampi, miceun, duplikasi (dup), sareng neraskeun (fwd) pakét. Dina conto di handap ieu, operasi ngaleupaskeun pakét anu asalna tina alamat 192.168.30.20 dilaksanakeun dina tingkat kartu jaringan, tanpa ngirimkeun pakét ka kernel:

    # ucing file.nft
    méja netdev x {
    ranté y {
    tipe filter hook ingress alat eth0 prioritas 10; bandéra offload;
    ip saddr 192.168.30.20 serelek
    }
    }
    # nft -f file.nft

  • Inpormasi ningkat ngeunaan lokasi kasalahan dina aturan.

    # nft ngahapus aturan ip yz cecekelan 7
    Kasalahan: Teu tiasa ngolah aturan: Henteu aya file atanapi diréktori sapertos kitu
    hapus aturan ip yz cecekelan 7
    ^

    # nft ngahapus aturan ip xx cecekelan 7
    Kasalahan: Teu tiasa ngolah aturan: Henteu aya file atanapi diréktori sapertos kitu
    hapus aturan ip xx cecekelan 7
    ^

    # nft ngahapus tabel twst
    Kasalahan: Henteu aya file atanapi diréktori sapertos kitu; Dupi anjeun hartosna tabel ‘test' dina ip kulawarga?
    ngahapus tabel twst
    ^^^^

    Conto munggaran nunjukkeun yén tabel "y" henteu aya dina sistem, anu kadua yén panangan "7" leungit, sareng anu katilu yén ajakan typo ditampilkeun nalika ngetik nami méja.

  • Ditambahkeun dukungan pikeun mariksa antarmuka budak ku netepkeun "meta sdif" atanapi "meta sdifname":

    ... meta sdifname vrf1 ...

  • Ditambahkeun rojongan pikeun operasi shift katuhu atawa kénca. Contona, pikeun mindahkeun labél pakét anu aya ditinggalkeun ku 1 bit tur nyetel bit minor ka 1:

    ... meta mark set meta mark lshift 1 atanapi 0x1 ...

  • Dilaksanakeun "-V" pilihan pikeun nembongkeun informasi versi nambahan.

    # nft -V
    nftables v0.9.4 (Jive di Lima)
    cli: readline
    json: enya
    minigmp: henteu
    libxtables: nuhun

  • Pilihan garis paréntah ayeuna kedah dieusian sateuacan paréntah. Salaku conto, anjeun kedah netepkeun "nft -a list ruleset", sareng ngajalankeun "nft list ruleset -a" bakal nyababkeun kasalahan.

    sumber: opennet.ru

Tambahkeun komentar