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

Bản phát hành bộ lọc gói nftables 0.9.9 đã đượ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). Đồng thời, việc phát hành thư viện đồng hành libnftnl 1.2.0 đã được xuất bản, cung cấp API cấp thấp để tương tác với hệ thống con nf_tables. Những thay đổi cần thiết để bản phát hành nftables 0.9.9 hoạt động được bao gồm trong nhân Linux 5.13-rc1.

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.

Những đổi mới chính:

  • Khả năng di chuyển quá trình xử lý theo luồng sang phía bộ điều hợp mạng đã được triển khai, được bật bằng cờ 'giảm tải'. Flowtable là một cơ chế để tối ưu hóa đường dẫn chuyển hướng gói, trong đó việc chuyển tiếp hoàn chỉnh tất cả các chuỗi xử lý quy tắc chỉ được áp dụng cho gói đầu tiên và tất cả các gói khác trong luồng được chuyển tiếp trực tiếp. bảng ip toàn cầu { flowtable f { hook bộ lọc ưu tiên xâm nhập + 1 thiết bị = { lan3, lan0, wan } giảm tải cờ } chuyển tiếp chuỗi { loại bộ lọc bộ lọc ưu tiên chuyển tiếp móc; chính sách chấp nhận; giao thức ip { tcp, udp } flow add @f } chain post { type nat hook postrouting bộ lọc ưu tiên; chính sách chấp nhận; oifname "wan" hóa trang } }
  • Đã thêm hỗ trợ để gắn cờ chủ sở hữu vào bảng để đảm bảo quy trình chỉ sử dụng bảng đó. Khi một quá trình kết thúc, bảng liên kết với nó sẽ tự động bị xóa. Thông tin về quy trình được hiển thị trong kết xuất quy tắc dưới dạng nhận xét: table ip x { # progname nft flags owner chain y { type filter hook input bộ lọc ưu tiên; chính sách chấp nhận; gói truy cập 1 byte 309 } }
  • Đã thêm hỗ trợ cho thông số kỹ thuật IEEE 802.1ad (xếp chồng Vlan hoặc QinQ), xác định phương tiện thay thế nhiều thẻ Vlan thành một khung Ethernet duy nhất. Ví dụ: để kiểm tra loại khung Ethernet bên ngoài 8021ad và vlan id=342, bạn có thể sử dụng cấu trúc ... ether type 802.1ad vlan id 342 để kiểm tra loại khung Ethernet bên ngoài 8021ad/vlan id=1, lồng nhau 802.1 q/vlan id=2 và hơn nữa đóng gói gói IP: ... loại ether 8021ad vlan id 1 vlan loại 8021q vlan id 2 vlan loại bộ đếm ip
  • Đã thêm hỗ trợ để quản lý tài nguyên bằng cách sử dụng cgroups phân cấp thống nhất v2. Sự khác biệt chính giữa cgroups v2 và v1 là việc sử dụng hệ thống phân cấp cgroups chung cho tất cả các loại tài nguyên, thay vì các hệ thống phân cấp riêng biệt để phân bổ tài nguyên CPU, để điều chỉnh mức tiêu thụ bộ nhớ và cho I/O. Ví dụ: để kiểm tra xem tổ tiên của socket ở cấp độ đầu tiên cgroupv2 có khớp với mặt nạ “system.slice” hay không, bạn có thể sử dụng cấu trúc: ... socket cgroupv2 cấp 1 “system.slice”
  • Đã thêm khả năng kiểm tra các thành phần của gói SCTP (chức năng cần thiết cho việc này sẽ xuất hiện trong nhân Linux 5.14). Ví dụ: để kiểm tra xem gói có chứa một đoạn có loại 'dữ liệu' và trường 'loại' hay không: ... dữ liệu chunk sctp có tồn tại ... dữ liệu chunk sctp loại 0
  • Việc thực hiện thao tác tải quy tắc đã được tăng tốc khoảng hai lần bằng cách sử dụng cờ “-f”. Đầu ra của danh sách các quy tắc cũng đã được tăng tốc.
  • Một biểu mẫu nhỏ gọn để kiểm tra xem các bit cờ có được thiết lập hay không được cung cấp. Ví dụ, để kiểm tra xem các bit trạng thái snat và dnat có được thiết lập hay không, bạn có thể chỉ định: ... ct status ! snat,dnat để kiểm tra xem bit đồng bộ có được đặt trong bitmask syn,ack: ... tcp flags syn / syn,ack để kiểm tra xem các bit vây và bit đầu tiên không được đặt trong bitmask syn,ack,fin,rst: ... cờ tcp ! = fin,rst / syn,ack,fin,rst
  • Cho phép từ khóa "phán quyết" trong định nghĩa typeof tập hợp/bản đồ: thêm bản đồ xm { typeof iifname . giao thức ip dport : phán quyết ;}

Nguồn: opennet.ru

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