keluaran penapis paket nftables 0.9.9

Penapis paket nftables 0.9.9 telah dikeluarkan. Ia menyatukan antara muka penapisan paket untuk IPv4, IPv6, ARP dan jambatan rangkaian (disasarkan sebagai pengganti iptables, ip6table, arptables dan ebtables). Pustaka libnftnl 1.2.0 yang disertakan, yang menyediakan API peringkat rendah untuk berinteraksi dengan subsistem nf_tables, telah dikeluarkan secara serentak. Perubahan yang diperlukan untuk nftables 0.9.9 telah digabungkan ke dalam kernel. Linux 5.13-rc1.

Pakej nftables mengandungi komponen penapis paket yang beroperasi dalam ruang pengguna, manakala kerja peringkat kernel disediakan oleh subsistem nf_tables, yang merupakan sebahagian daripada kernel. Linux Sejak keluaran 3.13, hanya antara muka generik yang bebas protokol disediakan pada peringkat kernel, yang menyediakan fungsi asas untuk mengekstrak data daripada paket, melaksanakan operasi data dan kawalan aliran.

Peraturan penapisan itu sendiri dan pengendali khusus protokol dikompilasi ke dalam bytecode dalam ruang pengguna, selepas itu bytecode ini dimuatkan ke dalam kernel menggunakan antara muka Netlink dan dilaksanakan dalam kernel dalam cara khas mesin maya, mengingatkan BPF (Penapis Paket Berkeley). Pendekatan ini membolehkan pengurangan ketara dalam saiz kod penapisan yang berjalan pada peringkat kernel dan memindahkan semua penghuraian peraturan dan logik protokol ke dalam ruang pengguna.

Inovasi utama:

  • Melaksanakan keupayaan untuk memindahkan pemprosesan jadual alir ke bahagian penyesuai rangkaian, didayakan menggunakan bendera 'offload'. Flowtable ialah mekanisme untuk mengoptimumkan laluan pemajuan paket, di mana traversal penuh semua rantai pemprosesan peraturan digunakan hanya pada paket pertama, dan semua paket lain dalam aliran dimajukan terus. jadual ip global { jadual alir f { penapis keutamaan kemasukan cangkuk + 1 peranti = { lan3, lan0, wan } pemunggahan bendera } rantai ke hadapan { taip penapis keutamaan cangkuk ke hadapan; penerimaan dasar; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; penerimaan dasar; oifname "wan" menyamar } }
  • Menambah sokongan untuk melampirkan bendera pemilik pada jadual, yang memastikan penggunaan eksklusif jadual melalui proses. Apabila proses ditamatkan, jadual yang berkaitan dipadamkan secara automatik. Maklumat proses dipaparkan dalam pembuangan peraturan sebagai ulasan: jadual ip x { # progname nft flags rantai pemilik y { type filter hook input priority filter; penerimaan dasar; paket kaunter 1 bait 309 } }
  • Sokongan tambahan untuk spesifikasi IEEE 802.1ad (VLAN susun atau QinQ), yang mentakrifkan cara untuk menggantikan berbilang teg VLAN ke dalam bingkai Ethernet tunggal. Sebagai contoh, untuk menyemak jenis bingkai Ethernet luar 8021ad dan vlan id=342, anda boleh menggunakan konstruk ... jenis eter 802.1ad vlan id 342 untuk menyemak jenis bingkai Ethernet luar 8021ad/vlan id=1, bersarang 802.1q/vlan id=2, dan seterusnya merangkumkan IP:8021d id id ether: ... 1 jenis vlan id vlan 8021q 2 kaunter ip jenis vlan
  • Sokongan untuk pengurusan sumber menggunakan hierarki cgroups v2 bersatu telah ditambah. Perbezaan utama antara cgroups v2 dan v1 ialah penggunaan hierarki cgroups biasa untuk semua jenis sumber, bukannya hierarki berasingan untuk peruntukan sumber CPU, pengurusan memori dan I/O. Sebagai contoh, untuk menyemak sama ada nenek moyang soket pada tahap pertama cgroupv2 sepadan dengan topeng "system.slice", anda boleh menggunakan binaan berikut: ... soket cgroupv2 tahap 1 "system.slice"
  • Menambah keupayaan untuk menyemak komponen paket SCTP (fungsi yang diperlukan untuk operasi akan muncul dalam kernel Linux 5.14). Contohnya, untuk menyemak sama ada sesuatu paket mengandungi ketulan dengan jenis 'data' dan medan 'type': … data ketulan sctp wujud … jenis data ketulan sctp 0
  • Peraturan memuatkan menggunakan bendera "-f" telah meningkat dua kali ganda kelajuannya. Output senarai peraturan juga telah dipercepatkan.
  • Satu bentuk padat untuk menyemak tetapan bit dalam bendera disediakan. Sebagai contoh, untuk menyemak sama ada bit status snat dan dnat tidak ditetapkan, anda boleh menentukan: ... ct status ! snat,dnat untuk menyemak sama ada bit syn ditetapkan dalam syn,ack bit mask: ... tcp flags syn / syn,ack untuk menyemak sama ada fin dan bit pertama tidak ditetapkan dalam syn,ack,fin,rst bit mask: ... tcp flags != fin,rst / syn,ack,fin,rst
  • Kata kunci "keputusan" dibenarkan dalam definisi jenis untuk set/peta: tambah peta xm { typeof iifname . protokol ip. dport ke: keputusan ;}

Sumber: opennet.ru

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster