phát hành bộ lọc gói nftables 1.0.7

Bản phát hành bộ lọc gói nftables 1.0.7 đã được xuất bản, thống nhất các giao diện lọc gói cho IPv4, IPv6, ARP và các cầu nối mạng (nhằm thay thế iptables, ip6table, arptables và ebtables). Gói nftables bao gồm các thành phần bộ lọc gói chạy trong không gian người dùng, trong khi công việc ở cấp độ kernel được cung cấp bởi hệ thống con nf_tables, vốn là một phần của nhân Linux kể từ bản phát hành 3.13. Cấp độ kernel chỉ cung cấp một giao diện chung độc lập với giao thức, cung cấp các chức năng cơ bản để trích xuất dữ liệu từ các gói, thực hiện các hoạt động dữ liệu và kiểm soát luồng.

Bản thân các quy tắc lọc và trình xử lý dành riêng cho giao thức được biên dịch thành mã byte không gian người dùng, sau đó mã byte này được tải vào nhân bằng giao diện Netlink và được thực thi trong nhân trong một máy ảo đặc biệt giống như BPF (Bộ lọc gói Berkeley). Cách tiếp cận này giúp giảm đáng kể kích thước của mã lọc chạy ở cấp hạt nhân và di chuyển tất cả các chức năng của quy tắc phân tích cú pháp và logic làm việc với các giao thức vào không gian người dùng.

Sự thay đổi chính:

  • Đối với các hệ thống chạy nhân Linux 6.2+, hỗ trợ ánh xạ giao thức vxlan, geneve, gre và gretap đã được thêm vào, cho phép các biểu thức đơn giản kiểm tra tiêu đề trong các gói được đóng gói. Ví dụ: để kiểm tra địa chỉ IP trong tiêu đề của gói lồng nhau từ VxLAN, giờ đây bạn có thể sử dụng các quy tắc (không cần phải hủy đóng gói tiêu đề VxLAN trước và liên kết bộ lọc với giao diện vxlan0): ... udp dport 4789 vxlan ip giao thức udp ... udp dport 4789 vxlan ip saddr 1.2.3.0/24 ... udp dport 4789 vxlan ip saddr . vxlan ip chadr { 1.2.3.4 . 4.3.2.1 }
  • Hỗ trợ tự động hợp nhất các phần còn lại sau khi xóa một phần thành phần danh sách tập hợp đã được triển khai, cho phép bạn xóa một phần tử hoặc một phần của phạm vi khỏi phạm vi hiện có (trước đây, một phạm vi chỉ có thể bị xóa hoàn toàn). Ví dụ: sau khi xóa phần tử 25 khỏi danh sách tập hợp có phạm vi 24-30 và 40-50, danh sách sẽ vẫn là 24, 26-30 và 40-50. Các bản sửa lỗi cần thiết để quá trình tự động hóa hoạt động sẽ được cung cấp trong các bản phát hành bảo trì của các nhánh ổn định của kernel 5.10+. # nft list quy tắc bảng ip x { set y { typeof tcp dport flags interval các phần tử tự động hợp nhất = { 24-30, 40-50 } } } # nft xóa phần tử ip xy { 25 } # nft list bảng quy tắc ip x { set y { typeof tcp dport flags các phần tử tự động hợp nhất khoảng thời gian = { 24, 26-30, 40-50 } } }
  • Cho phép sử dụng danh bạ và phạm vi khi ánh xạ dịch địa chỉ (NAT). bảng ip nat { định tuyến trước chuỗi { gõ nat hook ưu tiên định tuyến trước dstnat; chính sách chấp nhận; dnat sang ip Daddr. bản đồ dport tcp { 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 } dai dẳng } }
  • Đã thêm hỗ trợ cho biểu thức “cuối cùng”, cho phép bạn tìm hiểu thời điểm sử dụng cuối cùng của một thành phần quy tắc hoặc danh sách tập hợp. Tính năng này được hỗ trợ bắt đầu với nhân Linux 5.14. bảng ip x { set y { typeof ip Daddr . tcp dport kích thước 65535 cờ động, hết thời gian chờ lần cuối 1h } chuỗi z { loại bộ lọc móc bộ lọc ưu tiên đầu ra; chính sách chấp nhận; cập nhật @y { ip Daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip Daddr . tcp dport kích thước 65535 cờ động, hết thời gian chờ cuối cùng 1h phần tử = { 172.217.17.14. 443 được sử dụng lần cuối thời gian chờ 1s591ms 1h hết hạn 59m58s409ms, 172.67.69.19 . 443 được sử dụng lần cuối trong thời gian chờ 4s636ms 1h hết hạn 59m55s364ms, 142.250.201.72 . 443 được sử dụng lần cuối 4s748ms Thời gian chờ 1h hết hạn 59m55s252ms, 172.67.70.134 . 443 được sử dụng lần cuối trong thời gian chờ 4s688ms 1h hết hạn 59m55s312ms, 35.241.9.150 . 443 được sử dụng lần cuối 5s204ms Thời gian chờ 1h hết hạn 59m54s796ms, 138.201.122.174 . 443 được sử dụng lần cuối 4s537ms Thời gian chờ 1h hết hạn 59m55s463ms, 34.160.144.191 . 443 được sử dụng lần cuối 5s205ms Thời gian chờ 1h hết hạn 59m54s795ms, 130.211.23.194 . 443 được sử dụng lần cuối 4s436ms thời gian chờ 1h hết hạn 59m55s564ms } } }
  • Đã thêm khả năng xác định hạn ngạch trong danh sách đã đặt. Ví dụ: để xác định hạn ngạch lưu lượng cho từng địa chỉ IP mục tiêu, bạn có thể chỉ định: bảng netdev x { set y { typeof ip Daddr size 65535 hạn ngạch trên 10000 mbyte } chuỗi y { type filter hook egress device "eth0" bộ lọc ưu tiên; chính sách chấp nhận; ip Daddr @y drop } } # nft thêm phần tử inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list bảng quy tắc netdev x { set y { type ipv4_addr size 65535 hạn ngạch trên 10000 mbyte phần tử = { 8.8.8.8. Hạn ngạch 10000 trên 196 MB được sử dụng 0 byte } } chuỗi y { loại bộ lọc móc thiết bị đầu ra bộ lọc ưu tiên “ethXNUMX”; chính sách chấp nhận; ip Daddr @y thả } }
  • Việc sử dụng các hằng số trong danh sách tập hợp được cho phép. Ví dụ: khi sử dụng địa chỉ đích và Vlan ID làm khóa danh sách, bạn có thể chỉ định trực tiếp số Vlan (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id kích thước 2048 cờ động, hết thời gian chờ 1m } chuỗi c { loại bộ lọc móc vào thiết bị ưu tiên eth0 0; chính sách chấp nhận; loại ether != 8021q cập nhật @s { ether Daddr . 123 } bộ đếm } }
  • Đã thêm lệnh "hủy" mới để xóa các đối tượng vô điều kiện (không giống như lệnh xóa, nó không tạo ra ENOENT khi cố gắng xóa một đối tượng bị thiếu). Yêu cầu ít nhất Linux kernel 6.3-rc để hoạt động. phá hủy bộ lọc ip bảng

Nguồn: opennet.ru

Thêm một lời nhận xét