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

được phát hành giải phóng bộ lọc gói nftables 0.9.4, phát triển để thay thế cho iptables, ip6table, arptables và ebtables bằng cách thống nhất các giao diện lọc gói cho IPv4, IPv6, ARP và cầu nối mạng. 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. Những thay đổi cần thiết để bản phát hành nftables 0.9.4 hoạt động được bao gồm trong nhánh kernel trong tương lai Linux 5.6.

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. 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 trong không gian người dùng, sau đó mã byte này được tải vào hạt nhân bằng giao diện Netlink và được thực thi trong hạt nhân trong một máy ảo đặc biệt gợi nhớ đến BPF (Bộ lọc gói Berkeley). Cách tiếp cận này cho phép bạn giảm đáng kể kích thước của mã lọc đang chạy ở cấp kernel 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:

  • Hỗ trợ các phạm vi kết nối (nối, một số gói địa chỉ và cổng nhất định giúp đơn giản hóa việc so sánh). Ví dụ: đối với một tập hợp "danh sách trắng" có các thành phần là tệp đính kèm, việc chỉ định cờ "khoảng" sẽ cho biết tập hợp đó có thể bao gồm các phạm vi trong tệp đính kèm (đối với tệp đính kèm "ipv4_addr . ipv4_addr . inet_service" trước đây có thể liệt kê chính xác khớp với dạng "192.168.10.35" và bây giờ bạn có thể chỉ định các nhóm địa chỉ "192.68.11.123-80-192.168.10.35"):

    bảng ip foo {
    đặt danh sách trắng {
    gõ ipv4_addr . ipv4_addr. inet_service
    khoảng thời gian của cờ
    phần tử = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    thanh xích {
    loại bộ lọc móc ưu tiên định tuyến trước bộ lọc; giảm chính sách;
    ip saddr. ip chadr. tcp dport @whitelist chấp nhận
    }
    }

  • Trong các bộ và danh sách bản đồ, có thể sử dụng lệnh “typeof”, xác định định dạng của phần tử khi khớp.
    Ví dụ:

    bảng ip foo {
    đặt danh sách trắng {
    loại ip saddr
    phần tử = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    thanh xích {
    loại bộ lọc móc ưu tiên định tuyến trước bộ lọc; giảm chính sách;
    ip Daddr @whitelist chấp nhận
    }
    }

    bảng ip foo {
    bản đồ addr2mark {
    typeof ip saddr : dấu meta
    phần tử = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Đã thêm khả năng sử dụng các phép nối trong liên kết NAT, cho phép bạn chỉ định địa chỉ và cổng khi xác định các phép biến đổi NAT dựa trên danh sách bản đồ hoặc các bộ được đặt tên:

    nft thêm quy tắc ip nat trước dnat ip addr . cổng sang bản đồ ip saddr { 1.1.1.1 : 2.2.2.2 . ba mươi }

    nft thêm bản đồ ip nat đích { gõ ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
    nft thêm quy tắc ip nat trước dnat ip addr . cổng sang ip saddr. bản đồ dport tcp @destination

  • Hỗ trợ tăng tốc phần cứng với một số thao tác lọc được thực hiện bởi card mạng. Tính năng tăng tốc được kích hoạt thông qua tiện ích ethtool (“ethtool -K eth0 hw-tc-offload on”), sau đó nó được kích hoạt trong nftables cho chuỗi chính bằng cách sử dụng cờ “offload”. Khi sử dụng nhân Linux 5.6, khả năng tăng tốc phần cứng được hỗ trợ để khớp trường tiêu đề và kiểm tra giao diện đến kết hợp với các gói nhận, loại bỏ, sao chép (dup) và chuyển tiếp (fwd). Trong ví dụ bên dưới, các hoạt động loại bỏ các gói đến từ địa chỉ 192.168.30.20 được thực hiện ở cấp card mạng mà không chuyển các gói đến kernel:

    # tập tin mèo.nft
    bảng netdev x {
    chuỗi y {
    loại thiết bị xâm nhập móc lọc bộ lọc eth0 ưu tiên 10; dỡ cờ;
    ip saddr 192.168.30.20 rớt
    }
    }
    # nft -f file.nft

  • Cải thiện thông tin về vị trí lỗi trong quy tắc.

    # nft xóa quy tắc ip yz xử lý 7
    Lỗi: Không thể xử lý quy tắc: Không có tệp hoặc thư mục như vậy
    xóa quy tắc ip yz xử lý 7
    ^

    # nft xóa quy tắc ip xx xử lý 7
    Lỗi: Không thể xử lý quy tắc: Không có tệp hoặc thư mục như vậy
    xóa quy tắc ip xx xử lý 7
    ^

    # nft xóa bảng twst
    Lỗi: Không có tập tin hoặc thư mục như vậy; ý bạn là bảng 'kiểm tra' trong ip gia đình phải không?
    xóa bảng twt
    ^^ ^^

    Ví dụ đầu tiên cho thấy bảng “y” không có trong hệ thống, ví dụ thứ hai cho thấy trình xử lý “7” bị thiếu và ví dụ thứ ba cho thấy dấu nhắc lỗi đánh máy được hiển thị khi nhập tên bảng.

  • Đã thêm hỗ trợ để kiểm tra giao diện nô lệ bằng cách chỉ định “meta sdif” hoặc “meta sdifname”:

    ... meta sdifname vrf1 ...

  • Đã thêm hỗ trợ cho các hoạt động dịch chuyển phải hoặc trái. Ví dụ: để dịch chuyển nhãn gói hiện có sang trái 1 bit và đặt bit phụ thành 1:

    … bộ dấu meta đặt dấu meta lshift 1 hoặc 0x1 …

  • Đã triển khai tùy chọn "-V" để hiển thị thông tin phiên bản mở rộng.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli:đọc dòng
    json: vâng
    minigmp: không
    libxtables: có

  • Các tùy chọn dòng lệnh bây giờ phải được chỉ định trước các lệnh. Ví dụ: bạn cần chỉ định “nft -a list Ruleset” và việc chạy “nft list Ruleset -a” sẽ dẫn đến lỗi.

    Nguồn: opennet.ru

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