Điểm:3

Bộ lọc tải trọng Linux TCP

lá cờ ve

Tôi sử dụng nftables, nhưng nó không có bất kỳ thứ gì giống như chuỗi của iptables cũng như kết quả u32, vì vậy nó không thể thu thập phần bù tải trọng một cách đáng tin cậy. Nếu không thông qua tải trọng thô của nftables, làm cách nào tôi có thể phân tích tải trọng TCP một cách hiệu quả mà không bị tắc nghẽn không gian người dùng? (nfqueue không phải là câu trả lời vì lý do hiệu suất)

Có bất kỳ kỹ thuật nào để thực hiện quá trình lọc như vậy ở cấp hạt nhân không? Ngay cả việc đánh dấu các gói phù hợp là đủ đối với tôi - phần còn lại có thể dễ dàng thực hiện tại tường lửa.

Điểm:0
lá cờ cl
A.B

Đã có sẵn mã hạt nhân có thể xử lý kết hợp chuỗi tùy ý, vẫn trong ngữ cảnh hạt nhân trong đường dẫn gói, tại sao không sử dụng lại nó? iptables không đi đâu cả. những gì có thể có lẽ biến mất vào một ngày nào đó là API hạt nhân kế thừa dành cho iptables, chỉ để lại iptables-nft xung quanh, vẫn có thể sử dụng xtables các mô-đun như chuỗi trận đấu mô-đun. sử dụng iptables-di sản hoặc iptables-nft dọc theo nftables sẽ có kết quả tương tự bên dưới.

Có thể sử dụng các dấu để truyền thông báo xung quanh các hệ thống con mạng khác nhau trong đường dẫn gói, bao gồm từ nftables đến iptables và sau đó trở lại từ iptables đến nftables.

Cái này Ưu tiên trong hook bảng có thể giúp:

gia đình nftables móc điển hình từ khóa nft Giá trị Ưu tiên nội bộ của Netfilter Sự miêu tả
[...]
mạng, ip, ip6 tất cả các mang nặng đẻ đau -150 NF_IP_PRI_MANGLE Mangle hoạt động
mạng, ip, ip6 định tuyến trước dstnat -100 NF_IP_PRI_NAT_DST NAT đích
inet, ip, ip6, arp, netdev tất cả các lọc 0 NF_IP_PRI_FILTER Thao tác lọc, bảng lọc
[...]

Người ta chỉ cần đăng ký nftables hai lần cho mỗi iptables' chuỗi tích hợp sẽ được tham gia: một lần với mức độ ưu tiên ngay trước đó iptables', một lần với mức độ ưu tiên ngay sau iptables'. Ví dụ: với chuỗi bộ lọc/OUTPUT với iptables ưu tiên 0, người ta có thể sử dụng -5 và 5 xung quanh nó. Thêm chi tiết trong này hai Unix/Linux SE Q/A nơi tôi đưa ra câu trả lời.


Ví dụ nhân tạo (phỏng theo một ví dụ trong iptables-tiện ích mở rộng(8)) trộn nftablesiptables, nơi hệ thống sẽ bỏ các yêu cầu DNS được khởi tạo cục bộ cho địa chỉ DNS cụ thể www.netfilter.org, được trình bày theo thứ tự ưu tiên hook (báo trước: Chỉ UDP, chỉ hoạt động mà không có bất kỳ tùy chọn/tiêu đề IPv4 hoặc IPv6 nào trong gói gửi đi do phạm vi cố định, nhưng phạm vi có thể được nới lỏng để phù hợp với điều này):

nft thêm bảng inet mytable
nft add chain inet mytable outputbefore '{ loại filter hook ưu tiên đầu ra -5; chính sách chấp nhận; }'
nft add rule inet mytable outputbefore udp dport 53 meta mark set 1

iptables -I OUTPUT -m mark --mark 1 -m string --algo bm --từ 40 --to 57 --hex-string '|03|www|09|netfilter|03|org|00|' -j MARK --set-mark 2
ip6tables -I OUTPUT -m mark --mark 1 -m string --algo bm --từ 60 --to 77 --hex-string '|03|www|09|netfilter|03|org|00|' -j MARK --set-mark 2

nft add chain inet mytable outputafter '{ ưu tiên đầu ra hook bộ lọc loại 5; chính sách chấp nhận; }'
nft thêm quy tắc inet đầu ra mytable sau khi đánh dấu meta 2 giảm

Mục tiêu ở đây là có iptables chỉ xử lý phần không thể xử lý nftables và chỉ thực hiện công việc tối thiểu: đưa ra giá trị trả về thông qua một dấu, để lại nftables chịu trách nhiệm về số phận của gói tin:

  • nftables đặt dấu của gói thành 1 để "hỏi" iptables để thực hiện một số công việc
  • iptables (hoặc ip6tables) chỉ thực hiện khớp chuỗi nếu nó "nhận" điểm 1, để tiết kiệm việc sử dụng CPU và "câu trả lời" 2 nếu chuỗi khớp trong trường hợp đó
  • nftables chỉ loại bỏ gói nếu nó "nhận" một dấu giá trị 2 (do đó xóa iptables quy tắc cũng vô hiệu hóa hiệu ứng)

Ghi chú:

  • báo trước

    Cơ chế giao tiếp giữa nftablesiptables là thông qua nhãn gói (hoặc cũng có thể thông qua theo dõi connmark). Mặc dù chỉ có thể ghi và đọc từ một vài bit của nhãn hiệu (bằng cách sử dụng mặt nạ tùy chọn trên nhãn hiệu và các thao tác theo bit thích hợp), mọi người dùng nhãn hiệu sau đó phải tôn trọng một số quy ước phân bổ quyền sở hữu các bit trong nhãn hiệu. Không có điều này, các công cụ sẽ can thiệp lẫn nhau khi xử lý nhãn hiệu. Ví dụ tường lửa sử dụng các dấu để xử lý chuyển hướng trong quy tắc, vì vậy ví dụ này có thể không tương thích với tường lửa, ngay cả khi nó sử dụng các bảng riêng của nó khi sử dụng nftables phụ trợ.

  • Một số trường hợp dễ dàng có thể sử dụng tải trọng thô

    Ví dụ cụ thể ở trên, với đã sửa bù đắp, có thể đã được thực hiện với nftables. Đó là khi có một phần bù tùy ý để tìm dữ liệu (được sử dụng tốt nhất với iptables' chuỗi khớp) hoặc một phương thức phức tạp để tính toán phần bù đó (được sử dụng tốt nhất với iptables' u32 phù hợp) đó nftables không sử dụng được.

    Đây là cách thay thế tương đương tất cả các quy tắc ở trên bằng một quy tắc duy nhất sử dụng tải trọng thô. Cú pháp chỉ cho phép tối đa 128 bit, nhưng ở đây cần 19x8=152 bit nên nó phải được chia thành hai tải trọng thô (128 bit + 24 bit). bản inf, xxdcắt tỉa cũng được sử dụng cho một số trợ giúp:

    nft thêm bảng inet mytable
    nft add chain inet mytable output '{ ưu tiên đầu ra hook filter loại 0; chính sách chấp nhận; }'
    nft thêm đầu ra inet mytable udp dport 53 \
        @th,160,128 0x$(printf '\3%s\11%s\3%s\0' www netfilter org | xxd -p | cut -c-32) \
        @th,288,24 0x$(printf '\3%s\11%s\3%s\0' www netfilter org | xxd -p | cut -c33-) \
        rơi vãi
    

    Với đầu ra của printf '\3%s\11%s\3%s\0' www netfilter org | xxd -p hiện tại:

      03777777096e657466696c746572036f726700
    

    để có được hai trọng tải thô:

    0x03777777096e657466696c746572036f
                                    0x726700
    
  • các phương pháp khác có thể có sẵn

    • iptables có thể gọi một đối tượng eBPF (dù sao thì chỉ những hạt nhân gần đây mới cho phép các vòng lặp (hữu hạn) thử và thực hiện một số thuật toán một cách dễ dàng), nftables thiếu tính năng này. Vì vậy, nó một lần nữa với một dấu ấn và iptables.

    • đối tượng eBPF như vậy có thể là được sử dụng với XDP hoặc tc nhưng nó có thể là quá sớm trong đường dẫn gói (ví dụ: không có NAT trạng thái) và yêu cầu lập trình thực tế hơn là quản trị. Dù sao thì đó lại là giao tiếp thông qua nhãn hiệu nếu các quyết định phải được xử lý bằng nftables.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.