rilis filter paket nftables 1.0.1

Rilis filter paket nftables 1.0.1 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.1 dapat berfungsi disertakan dalam kernel Linux 5.16-rc1.

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:

  • Mengurangi konsumsi memori saat memuat daftar set dan peta yang besar.
  • Memuat ulang daftar set dan peta telah dipercepat.
  • Output dari tabel dan rantai yang dipilih dalam kumpulan aturan besar telah dipercepat. Misalnya, waktu eksekusi perintah β€œnft list ruleset” untuk menampilkan sekumpulan aturan dengan 100 ribu baris adalah 3.049 detik, dan ketika hanya mengeluarkan tabel nat dan filter (β€œnft list table nat”, β€œnft list table filter ”) berkurang menjadi 1.969 dan 0.697 detik.
  • Eksekusi kueri dengan opsi β€œ--terse” telah dipercepat saat memproses aturan dengan daftar set dan peta yang besar.
  • Dimungkinkan untuk memfilter lalu lintas dari rantai "egress", yang diproses pada tingkat yang sama dengan pengendali egress di rantai netdev (egress hook), yaitu. pada tahap ketika driver menerima paket dari tumpukan jaringan kernel. tabel netdev filter { chain egress { ketik filter hook egress devices = { eth0, eth1 } prioritas 0; set prioritas meta ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Memungkinkan pencocokan dan modifikasi byte di header dan isi paket pada offset tertentu. # nft tambahkan aturan xy @ih,32,32 0x14000000 penghitung # nft tambahkan aturan xy @ih,32,32 setel penghitung 0x14000000

Sumber: opennet.ru

Tambah komentar