keluaran penapis paket nftables 1.0.2

Keluaran penapis paket nftables 1.0.2 telah diterbitkan, menyatukan antara muka penapisan paket untuk IPv4, IPv6, ARP dan jambatan rangkaian (bertujuan untuk menggantikan iptables, ip6table, arptables dan ebtables). Perubahan yang diperlukan untuk keluaran nftables 1.0.2 untuk berfungsi disertakan dalam kernel Linux 5.17-rc.

Pakej nftables termasuk komponen penapis paket yang dijalankan dalam ruang pengguna, manakala kerja peringkat kernel disediakan oleh subsistem nf_tables, yang telah menjadi sebahagian daripada kernel Linux sejak keluaran 3.13. Tahap kernel hanya menyediakan antara muka bebas protokol generik yang menyediakan fungsi asas untuk mengekstrak data daripada paket, melaksanakan operasi data dan kawalan aliran.

Peraturan penapisan dan pengendali khusus protokol disusun menjadi kod bait dalam ruang pengguna, selepas itu kod bait ini dimuatkan ke dalam kernel menggunakan antara muka Netlink dan dilaksanakan dalam kernel dalam mesin maya khas yang mengingatkan BPF (Penapis Paket Berkeley). Pendekatan ini membolehkan anda mengurangkan dengan ketara saiz kod penapisan yang berjalan pada peringkat kernel dan memindahkan semua fungsi peraturan dan logik penghuraian untuk bekerja dengan protokol ke dalam ruang pengguna.

Inovasi utama:

  • Mod pengoptimuman peraturan telah ditambahkan, didayakan menggunakan pilihan "-o" ("--optimize") baharu, yang boleh digabungkan dengan pilihan "--check" untuk menyemak dan mengoptimumkan perubahan pada fail set peraturan tanpa benar-benar memuatkannya . Pengoptimuman membolehkan anda menggabungkan peraturan yang serupa, contohnya, peraturan: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 accept ip saddr 1.1.1.1 .2.2.2.2 terima ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop

    akan digabungkan menjadi meta iifname . ip saddr. ip daddr { 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 : terima, 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 accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter accept ruleset.nft:18:3-37: ip daddr 192.168.0.3 kaunter terima ke: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } paket kaunter 0 bait 0 terima

  • Senarai set melaksanakan keupayaan untuk menentukan pilihan ip dan tcp, serta ketulan sctp: set s5 { jenis elemen nilai ra pilihan ip = { 1, 1024 } } set s7 { jenis unsur sctp chunk init num-inbound-streams = { 1, 4 } } rantai c5 { ip pilihan nilai ra @s5 terima } rantai c7 { sctp chunk init num-inbound-streams @s7 accept }
  • Sokongan tambahan untuk pilihan TCP fastopen, md5sig dan mptcp.
  • Menambah sokongan untuk menggunakan subjenis mp-tcp dalam pemetaan: pilihan tcp subjenis mptcp 1
  • Kod penapisan sisi kernel yang dipertingkatkan.
  • Flowtable kini mempunyai sokongan penuh untuk format JSON.
  • Keupayaan untuk menggunakan tindakan "tolak" dalam operasi pemadanan bingkai Ethernet telah disediakan. eter saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 tolak

Sumber: opennet.ru

Tambah komen