rilis filter paket nftables 1.0.2

Rilis filter paket nftables 1.0.2 telah diterbitkan, menyatukan antarmuka pemfilteran paket untuk IPv4, IPv6, ARP dan jembatan jaringan (bertujuan untuk menggantikan iptables, ip6table, arptables, dan ebtables). Perubahan yang diperlukan agar rilis nftables 1.0.2 dapat berfungsi disertakan dalam kernel Linux 5.17-rc.

Paket nftables mencakup komponen filter paket yang berjalan di ruang pengguna, sedangkan pekerjaan tingkat kernel disediakan oleh subsistem nf_tables, yang telah menjadi bagian dari kernel Linux sejak rilis 3.13. Tingkat kernel hanya menyediakan antarmuka protokol-independen generik yang menyediakan fungsi dasar untuk mengekstraksi data dari paket, melakukan operasi data, dan kontrol aliran.

Aturan pemfilteran itu sendiri dan penangan khusus protokol dikompilasi ke dalam bytecode ruang pengguna, setelah itu bytecode ini dimuat ke dalam kernel menggunakan antarmuka Netlink dan dieksekusi di kernel dalam mesin virtual khusus yang menyerupai BPF (Berkeley Packet Filters). Pendekatan ini memungkinkan untuk secara signifikan mengurangi ukuran kode pemfilteran yang berjalan pada level kernel dan memindahkan semua fungsi aturan penguraian dan logika bekerja dengan protokol ke ruang pengguna.

Inovasi utama:

  • Mode pengoptimalan aturan telah ditambahkan, diaktifkan menggunakan opsi "-o" ("--optimize") baru, yang dapat digabungkan dengan opsi "--check" untuk memeriksa dan mengoptimalkan perubahan pada file kumpulan aturan tanpa benar-benar memuatnya . Optimasi memungkinkan Anda menggabungkan aturan serupa, misalnya aturan: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 terima meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 terima ip saddr 1.1.1.1 ip daddr 2.2.2.2 .2.2.2.2 terima ip saddr 3.3.3.3 ip daddr XNUMX jatuhkan

    akan digabungkan menjadi meta iifname . ip saddr. ip ayahdr { eth1 . 1.1.1.1. 2.2.2.3, eth1 . 1.1.1.2. 2.2.2.5 } terima ip saddr. ip daddr vmap { 1.1.1.1 . 2.2.2.2 : menerima, 2.2.2.2 . 3.3.3.3 : jatuhkan }

    Contoh penggunaan: # nft -c -o -f ruleset.test Penggabungan: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter menerima ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter menerima ruleset.nft:18:3-37: ip daddr 192.168.0.3 penghitung terima ke: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } paket penghitung 0 byte 0 terima

  • Daftar set menerapkan kemampuan untuk menentukan opsi ip dan tcp, serta potongan sctp: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } rantai c5 { opsi ip ra nilai @s5 terima } rantai c7 { sctp potongan init num-inbound-streams @s7 terima }
  • Menambahkan dukungan untuk opsi TCP fastopen, md5sig dan mptcp.
  • Menambahkan dukungan untuk menggunakan subtipe mp-tcp dalam pemetaan: opsi tcp mptcp subtipe 1
  • Kode pemfilteran sisi kernel yang ditingkatkan.
  • Flowtable sekarang memiliki dukungan penuh untuk format JSON.
  • Kemampuan untuk menggunakan tindakan "tolak" dalam operasi pencocokan frame Ethernet telah disediakan. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 tolak

Sumber: opennet.ru

Tambah komentar