rilis filter paket nftables 1.0.7

Rilis filter paket nftables 1.0.7 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:

  • Untuk sistem kernel Linux 6.2+, dukungan untuk pencocokan protokol vxlan, geneve, gre, dan gretap telah ditambahkan, memungkinkan ekspresi sederhana untuk memeriksa header dalam paket enkapsulasi. Misalnya, untuk memeriksa alamat IP di header paket bersarang dari VxLAN, Anda sekarang dapat menggunakan aturan (tanpa perlu mendeenkapsulasi header VxLAN terlebih dahulu dan mengikat filter ke antarmuka vxlan0): ... udp dport 4789 vxlan ip protocol udp ... udp dport 4789 vxlan ip saddr 1.2.3.0/24 ... udp dport 4789 vxlan ip saddr . vxlan ip daddr { 1.2.3.4 . 4.3.2.1}
  • Dukungan yang diterapkan untuk penggabungan residu secara otomatis setelah penghapusan sebagian elemen set-list, yang memungkinkan penghapusan elemen atau bagian rentang dari rentang yang ada (sebelumnya, rentang hanya dapat dihapus secara keseluruhan). Misalnya, setelah menghapus elemen 25 dari daftar kumpulan dengan rentang 24-30 dan 40-50, 24, 26-30, dan 40-50 akan tetap ada di daftar. Perbaikan yang diperlukan agar penggabungan otomatis berfungsi akan ditawarkan dalam rilis korektif dari cabang stabil kernel 5.10+. # nft daftar aturan set tabel ip x { set y { typeof tcp dport flags interval elemen penggabungan otomatis = { 24-30, 40-50 } } } # nft hapus elemen ip xy { 25 } # nft daftar aturan set tabel ip x { set y { typeof tcp dport flag interval penggabungan otomatis elemen = { 24, 26-30, 40-50 } } }
  • Izinkan kontak dan rentang untuk digunakan dalam pemetaan terjemahan alamat (NAT). table ip nat { chain prerouting { ketik nat hook prerouting prioritas dstnat; kebijakan menerima; dnat ke ip daddr . tcp dport map { 10.1.1.136 . 80 : 1.1.2.69 . 1024, 10.1.1.10-10.1.1.20. 8888-8889 : 1.1.2.69 . 2048-2049 } gigih } }
  • Menambahkan dukungan untuk ekspresi "terakhir", yang memungkinkan Anda mengetahui waktu terakhir penggunaan elemen aturan atau daftar set. Fitur ini telah didukung sejak kernel Linux 5.14. tabel ip x { set y { jenis ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1j } rantai z { ketik filter kait keluaran filter prioritas; kebijakan menerima; perbarui @y { ip daddr . tcp dport } } } # daftar nft atur ip xy tabel ip x { set y { jenis ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 batas waktu 1s591ms terakhir digunakan 1 jam kedaluwarsa 59m58s409ms, 172.67.69.19 . 443 batas waktu 4s636ms terakhir digunakan 1 jam kedaluwarsa 59m55s364ms, 142.250.201.72 . 443 terakhir digunakan 4s748ms batas waktu 1 jam kedaluwarsa 59m55s252ms, 172.67.70.134 . 443 terakhir digunakan batas waktu 4s688ms 1 jam kedaluwarsa 59m55s312ms, 35.241.9.150 . 443 batas waktu 5s204ms terakhir digunakan 1 jam kedaluwarsa 59m54s796ms, 138.201.122.174 . 443 batas waktu 4s537ms terakhir digunakan 1 jam kedaluwarsa 59m55s463ms, 34.160.144.191 . 443 batas waktu 5s205ms terakhir digunakan 1 jam kedaluwarsa 59m54s795ms, 130.211.23.194 . 443 batas waktu 4s436ms terakhir digunakan 1j berakhir 59m55s564ms } } }
  • Menambahkan kemampuan untuk menentukan kuota dalam daftar set. Misalnya, untuk menentukan kuota lalu lintas untuk setiap alamat IP target, Anda dapat menentukan: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; kebijakan menerima; ip daddr @y drop } } # nft add element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list ruleset table netdev x { set y { ketik ipv4_addr ukuran 65535 kuota lebih dari 10000 mbyte elemen = { 8.8.8.8. kuota 10000 lebih dari 196 mbyte menggunakan 0 byte } } chain y { ketik filter hook egress device "ethXNUMX" filter prioritas; kebijakan menerima; ip daddr @y jatuhkan } }
  • Penggunaan konstanta dalam daftar-set diperbolehkan. Misalnya, saat menggunakan daftar alamat tujuan dan ID VLAN sebagai kunci, Anda dapat menentukan nomor VLAN secara langsung (daddr .123): table netdev t { set s { typeof ether saddr . vlan ukuran id 2048 bendera dinamis, batas waktu batas waktu 1m} rantai c { ketikkan kait filter masuknya perangkat eth0 prioritas 0; kebijakan menerima; tipe eter != 8021q perbarui @s { eter daddr . 123 } penghitung } }
  • Perintah "hancurkan" baru telah ditambahkan untuk menghapus objek tanpa syarat (tidak seperti perintah hapus, perintah ini tidak menghasilkan ENOENT saat mencoba menghapus objek yang hilang). Membutuhkan setidaknya Linux 6.3-rc kernel untuk bekerja. hancurkan filter ip tabel

Sumber: opennet.ru

Tambah komentar