Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • BÀI TOÁN "MẠNG CHẬM KHÔNG RÕ NGUYÊN NHÂN" & TUYỆT CHIÊU MASTER FLEXIBLE NETFLOW (FNF) TRÊN CISCO IOS

    Chắc hẳn trong đời làm hạ tầng, không ít lần bạn đau đầu với câu hỏi huyền thoại từ sếp hoặc khách hàng: "Mạng em ơi, sao hôm nay chậm thế?".
    Lục tìm trên Wireshark thì quá ngộp, bật MRTG hay PRTG thông thường thì chỉ thấy bandwidth tăng vọt chứ không biết chính xác ai (IP nào) đang chiếm dụng, ứng dụng nào (Protocol nào) đang chạy ngầm, hay hệ thống có đang bị dính DDoS hay không.
    Để giải quyết triệt để bài toán này một cách chuyên nghiệp, Flexible NetFlow (FNF) chính là trợ thủ đắc lực nhất được tích hợp sẵn trên các thiết bị Cisco.

    1. Bản chất cốt lõi: 4 Thành phần tạo nên Flexible NetFlow

    Khác với NetFlow truyền thống khá cứng nhắc, chữ "Flexible" (Linh hoạt) cho phép bạn tự định nghĩa mình muốn bắt những thông tin gì để tiết kiệm tài nguyên. Để vận hành hệ thống này bạn chỉ cần nhớ nằm lòng 4 thành phần (4 trụ cột) sau:

    Trụ cột 1: Flow Record (Định nghĩa cấu trúc dữ liệu)
    Hãy tưởng tượng Flow Record giống như việc bạn thiết kế các cột cho một bảng database. Bản ghi này sẽ chia làm hai nhóm thông tin:
    • Key fields (Sử dụng lệnh match): Đây là các trường dùng để định danh một luồng traffic (giống như Primary Key). Nếu gói tin trùng toàn bộ các trường này, nó được tính vào cùng một luồng. Ví dụ: IP nguồn, IP đích, giao thức (TCP/UDP).
    • Non-key fields (Sử dụng lệnh collect): Đây là các thông tin bổ sung mà bạn muốn thu thập để phân tích sâu hơn. Ví dụ: Đếm tổng số packet, tổng số byte đã truyền qua luồng đó, hoặc các thông tin về SNMP.
    Trụ cột 2: Flow Exporter (Định nghĩa nơi nhận dữ liệu)
    Sau khi thiết bị thu thập dữ liệu vào bộ nhớ đệm (Cache), nó cần đẩy về một "bộ não trung tâm" để vẽ biểu đồ cho trực quan (gọi là NetFlow Collector như SolarWinds, PRTG, ManageEngine...). Flow Exporter chính là nơi bạn khai báo IP của Collector này, giao thức truyền tải (thường là UDP) và cổng dịch vụ (Port mặc định thường là 2055).

    Trụ cột 3: Flow Monitor (Bộ não liên kết)
    Thành phần này đóng vai trò là "chất keo" liên kết. Nó gọi tên bản ghi dữ liệu (Flow Record) kết hợp với nơi nhận dữ liệu (Flow Exporter) để tạo ra một thực thể lưu trữ Cache thực tế trên Router. Nếu không có Monitor, hai thành phần trên chỉ là các dòng cấu hình rời rạc, không tự chạy được.

    Trụ cột 4: Flow Sampler (Bộ lấy mẫu giảm tải - Tùy chọn)
    Nếu Router của bạn phải gánh lượng traffic khổng lồ (vài Gbps), việc bắt và phân tích từng gói tin một sẽ làm CPU/RAM của thiết bị "quá tải". Flow Sampler sinh ra để giải quyết việc này bằng cách lấy mẫu theo tỷ lệ. Nó có hai chế độ:
    • Deterministic (Định kỳ): Cứ cách đúng một khoảng cố định thì lấy 1 gói (Ví dụ: Cứ qua 2 gói thì lấy gói thứ 2).
    • Random (Ngẫu nhiên): Lấy ngẫu nhiên theo tỷ lệ thiết lập để đảm bảo tính khách quan (Ví dụ: Ngẫu nhiên bốc 1 gói trong cụm 2 gói, tương đương lấy mẫu 50%).
    2. Quy trình cấu hình thực chiến (Workflow)
    Để cấu hình Flexible NetFlow chạy mượt mà, bạn cần tuân theo trình tự chuẩn 4 bước dưới đây.
    Lưu ý điều kiện tiên quyết: Tính năng CEF (Cisco Express Forwarding) bắt buộc phải được kích hoạt trước bằng lệnh ip cefipv6 cef, nếu không FNF sẽ không hoạt động.

    Bước 1: Tạo Flow Exporter (Chỉ đường đến Collector)
    Plaintext
    Router(config)# flow exporter MY_EXPORTER
    Router(config-flow-exporter)# destination 10.0.10.1
    Router(config-flow-exporter)# transport udp 2055udp 2055udp 2055

    Giải thích: Lệnh này báo cho Router biết: "Sau khi gom dữ liệu xong, hãy đóng gói thành các gói UDP port 2055 và bắn về máy chủ Collector có IP 10.0.10.1".

    Bước 2: Tạo Flow Record (Thiết kế form thu thập)
    Bạn có thể dùng các form mặc định sẵn của Cisco như netflow-original, hoặc tự tạo thủ công để tối ưu:
    Plaintext
    Router(config)# flow record MY_RECORD
    Router(config-flow-record)# match ipv4 source-address Router(config-flow-record)# match ipv4 destination-address Router(config-flow-record)# match ipv4 protocol Router(config-flow-record)# collect counter packets longpackets long

    Giải thích: Ở đây chúng ta gom nhóm traffic dựa trên IP nguồn, IP đích, Protocol và yêu cầu hệ thống đếm xem có bao nhiêu gói tin (packets long) đi qua luồng đó.

    Bước 3: Tạo Flow Monitor (Kết nối Record và Exporter)
    Plaintext
    Router(config)# flow monitor MY_MONITOR
    Router(config-flow-monitor)# record MY_RECORD
    Router(config-flow-monitor)# exporter MY_EXPORTERMY_EXPORTER

    Bước 4: Áp dụng trực tiếp vào Cổng Interface

    Bạn có thể áp dụng theo hướng dòng tiền đi vào (input) hoặc đi ra (output) của cổng mạng. Nếu có sử dụng bộ lấy mẫu Sampler để tiết kiệm CPU, câu lệnh sẽ lồng cả tên Sampler vào:

    Router(config)# interface GigabitEthernet0/0
    Router(config-if)# ip flow monitor MY_MONITOR sampler MY_SAMPLER inputflow monitor MY_MONITOR sampler MY_SAMPLER input

    Kết luận
    Hy vọng bài chia sẻ chi tiết này sẽ giúp bạn tự tin làm chủ Flexible NetFlow, nhanh chóng "vạch mặt" được những nguồn lưu lượng bất thường làm chậm hệ thống. Anh em nào có Use Case nào hay về NetFlow hoặc gặp lỗi khi deploy, hãy thoải mái để lại bình luận bên dưới để cùng thảo luận nhé!

    Click image for larger version

Name:	fnf.png
Views:	2
Size:	22.2 KB
ID:	441139

Working...
X