nftables packet filter 0.9.4 release

diterbitake release paket filter nftables 0.9.4, berkembang minangka panggantos kanggo iptables, ip6table, arptables lan ebtables dening manunggalaken antarmuka panyaring paket kanggo IPv4, IPv6, ARP lan jembatan jaringan. Paket nftables kalebu komponen filter paket sing mlaku ing ruang pangguna, dene karya tingkat kernel diwenehake dening subsistem nf_tables, sing wis dadi bagian saka kernel Linux wiwit dirilis 3.13. Owah-owahan sing perlu kanggo nftables 0.9.4 release kanggo karya kalebu ing cabang kernel mangsa Linux 5.6.

Tingkat kernel mung nyedhiyakake antarmuka bebas protokol umum sing nyedhiyakake fungsi dhasar kanggo ngekstrak data saka paket, nindakake operasi data, lan kontrol aliran. Aturan panyaring lan panangan khusus protokol dikompilasi dadi bytecode ing ruang pangguna, sawise bytecode iki dimuat menyang kernel nggunakake antarmuka Netlink lan dieksekusi ing kernel ing mesin virtual khusus kaya BPF (Berkeley Packet Filters). Pendekatan iki ngidini sampeyan nyuda ukuran kode panyaring kanthi signifikan ing tingkat kernel lan mindhah kabeh fungsi aturan parsing lan logika kanggo nggarap protokol menyang ruang pangguna.

Inovasi utama:

  • Dhukungan kanggo kisaran ing sambungan (concatenation, bundel tartamtu saka alamat lan bandar sing menakake comparison). Contone, kanggo pesawat "whitelist" sing unsur minangka lampiran, nemtokake gendera "interval" bakal nuduhake yen pesawat bisa kalebu kisaran ing lampiran (kanggo lampiran "ipv4_addr. ipv4_addr. inet_service" sadurunge bisa kanggo dhaftar pas cocog karo wangun "192.168.10.35. 192.68.11.123", lan saiki sampeyan bisa nemtokake grup alamat "80-192.168.10.35-192.168.10.40".

    tabel ip foo {
    atur daftar putih {
    ketik ipv4_addr . ipv4_addr. inet_service
    interval gendera
    unsur = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    rantai {
    jinis Filter pancing prerouting prioritas Filter; mundhut kawicaksanan;
    ip sadr. ip bapak. tcp dport @whitelist nampa
    }
    }

  • Ing set lan dhaptar peta, sampeyan bisa nggunakake arahan "typeof", sing nemtokake format unsur nalika cocog.
    Contone:

    tabel ip foo {
    atur daftar putih {
    jinis ip saddr
    unsur = {192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    rantai {
    jinis Filter pancing prerouting prioritas Filter; mundhut kawicaksanan;
    ip daddr @whitelist nampa
    }
    }

    tabel ip foo {
    peta addr2mark {
    jinis ip saddr: tandha meta
    unsur = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Nambahake kemampuan kanggo nggunakake gabungan ing bindings NAT, sing ngidini sampeyan nemtokake alamat lan port nalika nemtokake transformasi NAT adhedhasar dhaptar peta utawa set sing dijenengi:

    nft nambah aturan ip nat pre dnat ip addr . port menyang ip saddr map {1.1.1.1: 2.2.2.2. telung puluh}

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

  • Dhukungan kanggo akselerasi hardware kanthi sawetara operasi nyaring sing ditindakake dening kertu jaringan. Akselerasi diaktifake liwat utilitas ethtool ("ethtool -K eth0 hw-tc-offload on"), sawise iku diaktifake ing nftables kanggo chain utama nggunakake flag "offload". Nalika nggunakake kernel Linux 5.6, akselerasi hardware didhukung kanggo cocog kolom header lan inspeksi antarmuka mlebu ing kombinasi karo nampa, discarding, duplikat (duplikasi), lan nerusake (fwd) paket. Ing conto ing ngisor iki, operasi ngeculake paket sing teka saka alamat 192.168.30.20 ditindakake ing tingkat kertu jaringan, tanpa ngirim paket menyang kernel:

    # file kucing.nft
    tabel netdev x {
    rantai y {
    jinis Filter pancing ingress piranti eth0 prioritas 10; gendΓ©ra offload;
    ip saddr 192.168.30.20 nyelehake
    }
    }
    # nft -f file.nft

  • Informasi sing luwih apik babagan lokasi kesalahan ing aturan.

    # nft mbusak aturan ip yz nangani 7
    Error: Ora bisa ngolah aturan: Ora ana file utawa direktori kasebut
    mbusak aturan ip yz nangani 7
    ^

    # nft mbusak aturan ip xx nangani 7
    Error: Ora bisa ngolah aturan: Ora ana file utawa direktori kasebut
    mbusak aturan ip xx nangani 7
    ^

    # nft mbusak tabel twst
    Kesalahan: Ora ana file utawa direktori kasebut; Apa tegese meja Γ’β‚¬Λœtes' ing ip kulawarga?
    mbusak tabel twst
    ^^^^

    Conto pisanan nuduhake yen tabel "y" ora ana ing sistem, nomer loro yen pawang "7" ora ana, lan nomer telu yen kesalahan ketik ditampilake nalika ngetik jeneng tabel.

  • Dhukungan tambahan kanggo mriksa antarmuka budak kanthi nemtokake "meta sdif" utawa "meta sdifname":

    ... meta sdifname vrf1 ...

  • Dhukungan tambahan kanggo operasi shift tengen utawa kiwa. Contone, kanggo mindhah label paket sing wis ana ditinggalake 1 bit lan nyetel bit minor dadi 1:

    … tandha meta nyetel tandha meta lshift 1 utawa 0x1 …

  • Dilaksanakake opsi "-V" kanggo nampilake informasi versi lengkap.

    # nft -V
    nftables v0.9.4 (Jive ing Lima)
    cli:readline
    json: wis
    minigmp: ora
    libxtables: iya

  • Opsi baris perintah saiki kudu ditemtokake sadurunge prentah. Contone, sampeyan kudu nemtokake "nft -a list ruleset", nanging mlaku "nft list ruleset -a" bakal nyebabake kesalahan.

    Source: opennet.ru

Add a comment