rilis filter paket nftables 1.0.6

Rilis filter paket nftables 1.0.6 telah diterbitkan, menyatukan antarmuka pemfilteran paket untuk IPv4, IPv6, ARP, dan jembatan jaringan (ditujukan untuk menggantikan iptables, ip6table, arptables, dan ebtables). Paket nftables menyertakan komponen filter paket yang berjalan di ruang pengguna, sedangkan level kernel disediakan oleh subsistem nf_tables, yang telah menjadi bagian dari kernel Linux sejak rilis 3.13. Pada tingkat kernel, hanya disediakan antarmuka bebas-protokol generik yang menyediakan fungsi dasar untuk mengekstraksi data dari paket, melakukan operasi pada data, dan mengontrol 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.

Perubahan besar:

  • Pengoptimal aturan, dipanggil ketika opsi β€œ-o/β€”optimize” ditentukan, memiliki pengemasan aturan otomatis dengan menggabungkannya dan mengubahnya menjadi peta dan daftar set. Misalnya, aturan # cat ruleset.nft tabel ip x { rantai y { ketik filter kait filter prioritas masukan; penurunan kebijakan; 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.4 terima meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 terima meta iifname eth1 ip saddr 1.1.1.2 .2.2.4.0 ip daddr 2.2.4.10-2 terima meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 terima } } setelah menjalankan "nft -o -c -f ruleset.nft" akan dikonversi menjadi sebagai berikut: ruleset .nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 terima ruleset.nft:17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6 terima ruleset.nft : 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 terima aturan.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10-8 terima ruleset.nft:17:74-2: meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 1 terima ke: iifname . ip saddr. ip ayahdr { eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1, eth1.1.1.2 . 2.2.3.0. 24/1, eth1.1.1.2 . 2.2.4.0. 2.2.4.10-2, eth1.1.1.3. 2.2.2.5. XNUMX } terima
  • Pengoptimal juga dapat mengkonversi aturan yang sudah menggunakan daftar set sederhana ke dalam bentuk yang lebih ringkas, misalnya aturan: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; penurunan kebijakan; iifname β€œlo” terima ct state didirikan, terkait terima komentar β€œDalam lalu lintas kami berasal, kami percaya” iifname β€œenp0s31f6” ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 terima iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 terima } } setelah menjalankan "nft -o -c -f ruleset.nft" akan dikemas sebagai berikut : ruleset.nft:6:22-149: iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 terima ruleset.nft:7:22- 143: iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 terima ke: iifname . ip saddr. ip ayahdr. udp olahraga. udp dport { enp0s31f6 . 209.115.181.102. 10.0.0.149. 123. 32768-65535, enp0s31f6. 216.197.228.230. 10.0.0.149. 123. 32768-65535, enp0s31f6. 64.59.144.17. 10.0.0.149. 53. 32768-65535, enp0s31f6. 64.59.150.133. 10.0.0.149. 53. 32768-65535 } terima
  • Masalah terselesaikan dengan pembuatan bytecode untuk menggabungkan interval yang menggunakan tipe dengan urutan byte berbeda, seperti IPv4 (urutan byte jaringan) dan tanda meta (urutan byte sistem). tabel ip x { peta w { typeof ip saddr . tanda meta : elemen penghitung interval tanda putusan = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : terima, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : terima, } } rantai k { ketik filter prioritas masukan kait filter; penurunan kebijakan; ip saddr. tanda meta vmap @w } }
  • Peningkatan perbandingan protokol langka saat menggunakan ekspresi mentah, misalnya: meta l4proto 91 @th,400,16 0x0 terima
  • Masalah dengan mengaktifkan aturan pada interval telah diselesaikan: masukkan aturan xy tcp sport { 3478-3497, 16384-16387 } penghitung terima
  • API JSON telah ditingkatkan untuk menyertakan dukungan untuk ekspresi dalam daftar kumpulan dan peta.
  • Ekstensi ke pustaka python nftables memungkinkan pemuatan kumpulan aturan untuk diproses dalam mode validasi ("-c") dan menambahkan dukungan untuk definisi variabel eksternal.
  • Menambahkan komentar diperbolehkan dalam elemen daftar set.
  • Batas kecepatan byte memungkinkan penentuan nilai nol.

Sumber: opennet.ru

Tambah komentar