keluaran penapis paket nftables 1.0.7

Keluaran penapis paket nftables 1.0.7 telah diterbitkan, menyatukan antara muka penapisan paket untuk IPv4, IPv6, ARP dan jambatan rangkaian (bertujuan untuk menggantikan iptables, ip6table, arptables dan ebtables). 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.

Perubahan utama:

  • Untuk sistem yang menjalankan kernel Linux 6.2+, sokongan untuk pemetaan protokol vxlan, geneve, gre, dan gretap telah ditambah, membenarkan ungkapan mudah untuk menyemak pengepala dalam paket terkapsul. Sebagai contoh, untuk menyemak alamat IP dalam pengepala paket bersarang daripada VxLAN, anda kini boleh menggunakan peraturan (tanpa perlu menyahkapsul pengepala VxLAN terlebih dahulu dan mengikat penapis ke antara muka vxlan0): ... udp dport 4789 vxlan ip protocol udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1 . XNUMX }
  • Sokongan untuk penggabungan automatik baki selepas pemadaman separa elemen senarai set telah dilaksanakan, yang membolehkan anda memadamkan elemen atau sebahagian daripada julat daripada julat sedia ada (sebelum ini, julat hanya boleh dipadamkan sepenuhnya). Sebagai contoh, selepas mengalih keluar elemen 25 daripada senarai set dengan julat 24-30 dan 40-50, senarai itu akan kekal 24, 26-30 dan 40-50. Pembaikan yang diperlukan untuk penggabungan automatik untuk berfungsi akan ditawarkan dalam keluaran penyelenggaraan cawangan stabil kernel 5.10+. # nft senarai set peraturan jadual ip x { set y { typeof tcp dport flags interval auto-cantum elemen = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft list ruleset table ip x { set y { jenis tcp dport flags interval autocantum elemen = { 24, 26-30, 40-50 } } }
  • Membenarkan penggunaan kenalan dan julat semasa memetakan terjemahan alamat (NAT). jadual ip nat { chain prerouting { type nat hook prerouting priority dstnat; penerimaan dasar; dnat ke ip daddr. peta tcp dport { 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 } berterusan } }
  • Menambah sokongan untuk ungkapan "terakhir", yang membolehkan anda mengetahui masa penggunaan terakhir elemen peraturan atau senarai set. Ciri ini disokong bermula dengan kernel Linux 5.14. jadual ip x { set y { jenis ip daddr . tcp dport saiz 65535 bendera dinamik,masa tamat masa terakhir 1j } rantai z { jenis penapis cangkuk output penapis keutamaan; penerimaan dasar; kemas kini @y { ip daddr . tcp dport } } } # set senarai nft ip xy jadual ip x { set y { typeof ip daddr . tcp dport saiz 65535 bendera dinamik, tamat masa terakhir elemen 1j = { 172.217.17.14 . 443 terakhir digunakan 1s591ms tamat masa 1j tamat tempoh 59m58s409ms, 172.67.69.19 . 443 terakhir digunakan 4s636ms tamat masa 1j tamat tempoh 59m55s364ms, 142.250.201.72 . 443 terakhir digunakan 4s748ms tamat masa 1j tamat tempoh 59m55s252ms, 172.67.70.134 . 443 terakhir digunakan 4s688ms tamat masa 1j tamat tempoh 59m55s312ms, 35.241.9.150 . 443 terakhir digunakan 5s204ms tamat masa 1j tamat tempoh 59m54s796ms, 138.201.122.174 . 443 terakhir digunakan 4s537ms tamat masa 1j tamat tempoh 59m55s463ms, 34.160.144.191 . 443 terakhir digunakan 5s205ms tamat masa 1j tamat tempoh 59m54s795ms, 130.211.23.194 . 443 terakhir digunakan 4s436ms tamat masa 1j tamat tempoh 59m55s564ms } } }
  • Menambah keupayaan untuk menentukan kuota dalam senarai set. Contohnya, untuk menentukan kuota trafik bagi setiap alamat IP sasaran, anda boleh menentukan: jadual netdev x { set y { jenis ip daddr saiz 65535 kuota melebihi 10000 mbytes } rantai y { jenis penapis cangkuk keluar peranti penapis keutamaan "eth0"; penerimaan dasar; ip daddr @y drop } } # nft tambah elemen inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft senarai set peraturan jadual netdev x { set y { taip ipv4_addr saiz 65535 kuota melebihi 10000 mbytes elemen = { 8.8.8.8. 10000 kuota melebihi 196 mbytes digunakan 0 bait } } rantai y { jenis penapis cangkuk keluar peranti penapis keutamaan "ethXNUMX"; penerimaan dasar; ip daddr @y drop } }
  • Penggunaan pemalar dalam senarai set dibenarkan. Contohnya, apabila menggunakan alamat destinasi dan ID VLAN sebagai kunci senarai, anda boleh menentukan terus nombor VLAN (daddr . 123): table netdev t { set s { typeof ether saddr . id vlan saiz 2048 bendera dinamik, tamat masa 1m } rantai c { jenis penapis cangkuk masuk peranti keutamaan eth0 0; penerimaan dasar; jenis eter != kemas kini 8021q @s { ether daddr . 123 } pembilang } }
  • Menambahkan perintah "musnahkan" baharu untuk memadamkan objek tanpa syarat (tidak seperti arahan padam, ia tidak menjana ENOENT apabila cuba memadam objek yang hilang). Memerlukan sekurang-kurangnya Linux kernel 6.3-rc untuk berfungsi. memusnahkan penapis ip jadual

Sumber: opennet.ru

Tambah komen