Loading...

Packet Capture trên FortiGate — diagnose sniffer packet

1. Liên hệ thực tế

Một khách hàng báo rằng ứng dụng nội bộ kết nối tới server ERP thỉnh thoảng bị timeout, nhưng ping vẫn bình thường và không có gì bất thường trong log Firewall Policy. Đây là dạng sự cố khó vì log ở mức policy chỉ cho biết "allow" hay "deny", không cho biết chi tiết bắt tay TCP có hoàn tất hay không.

Anh Nam quyết định dùng packet sniffer ngay trên FortiGate — không cần cài Wireshark trên máy khách hay server, không cần SPAN port trên switch:

FGT # diagnose sniffer packet port2 'host 10.10.30.15 and port 1433' 4

Chỉ sau vài phút quan sát, anh thấy rõ: gói SYN từ client gửi đi, nhưng không có gói SYN-ACK phản hồi từ server trong nhiều lần thử — nghĩa là vấn đề không nằm ở FortiGate mà ở phía server hoặc đường truyền sau FortiGate. Anh chuyển thông tin này cho đội quản trị server, tiết kiệm hàng giờ đổ lỗi qua lại giữa các đội.

Chị Lan nhấn mạnh: "Packet sniffer built-in là một trong những công cụ mạnh nhất mà kỹ sư FortiGate hay bỏ qua vì tưởng phức tạp. Thực ra chỉ cần nhớ đúng cú pháp và filter, nó nhanh hơn nhiều so với việc mang laptop cắm SPAN port."


2. Kiến thức cốt lõi

2.1 Cú pháp tổng quát

diagnose sniffer packet <interface> <'filter'> <verbose> <count> <tsformat>
  • interface: tên interface cần bắt gói (ví dụ port1), hoặc any để bắt trên mọi interface cùng lúc.
  • filter: biểu thức lọc dạng cú pháp giống tcpdump (BPF), đặt trong dấu nháy đơn — ví dụ 'host 10.10.30.15 and port 1433'. Dùng none nếu không cần lọc gì (bắt mọi gói trên interface).
  • verbose: mức độ chi tiết hiển thị, từ 1 đến 6 (xem bảng bên dưới).
  • count: số lượng gói cần bắt; nếu bỏ trống, sniffer chạy liên tục tới khi nhấn Ctrl+C.
  • tsformat: định dạng timestamp (tùy chọn, ít dùng trong thao tác hàng ngày).

2.2 Các mức verbose thường dùng

MứcHiển thị
1 IP nguồn/đích, cổng, cờ TCP (syn/ack/psh...) — mức cơ bản, đủ cho hầu hết trường hợp
2 Thêm thông tin IP/UDP header đầy đủ hơn mức 1
3 Toàn bộ nội dung gói tin bao gồm cả payload dạng hex/ASCII
4 Như mức 1 nhưng thêm tên interface vào/ra — hữu ích khi bắt trên any để biết gói đi qua interface nào
5, 6 Kết hợp mức chi tiết cao với hiển thị Ethernet header — hiếm dùng trong troubleshooting thường ngày

⚠️ Lưu ý: Mức verbose 3 trở lên hiển thị toàn bộ payload — cần thận trọng khi bắt traffic có dữ liệu nhạy cảm (mật khẩu, thông tin cá nhân) trên môi trường production, và không nên lưu log dạng này ra ngoài nếu không cần thiết cho mục đích debug.

2.3 Ví dụ thực tế theo tình huống

Bắt traffic từ một host cụ thể, không lọc giao thức:

diagnose sniffer packet port1 'host 10.10.20.55' 4

Bắt traffic HTTPS giữa hai host cụ thể, giới hạn 20 gói:

diagnose sniffer packet any 'host 10.10.20.55 and host 8.8.8.8 and port 443' 1 20

Bắt cả gói ARP để debug lỗi phân giải địa chỉ Layer 2 (ví dụ nghi ngờ một host không phản hồi ARP request từ FortiGate):

diagnose sniffer packet any 'host 10.10.20.55 or arp' 4

Lưu kết quả ra file để phân tích bằng Wireshark sau này (yêu cầu FortiGate có ổ đĩa hoặc dùng redirect qua console/SSH session log):

diagnose sniffer packet port1 'host 10.10.20.55' 6 100 l > capture.pcap

🔄 Khác biệt version FortiOS: Từ FortiOS 7.2, GUI có thêm Network > Packet Capture cho phép cấu hình filter và tải file .pcap trực tiếp qua giao diện web (yêu cầu thiết bị có disk), thuận tiện hơn CLI khi cần mở file bằng Wireshark ngay. Cú pháp CLI diagnose sniffer packet không đổi giữa các bản 7.0/7.2/7.4.

2.4 Dừng sniffer đúng cách

Nhấn Ctrl+C để dừng khi không giới hạn số gói (count). Với phiên SSH bị treo do quên dừng sniffer, có thể mở phiên SSH mới và dùng:

diagnose sys top

để xác nhận tiến trình sniffer vẫn đang chạy, sau đó đóng phiên cũ hoặc khởi động lại phiên quản trị nếu cần — tuy nhiên cách an toàn nhất vẫn là luôn giới hạn count khi thao tác trên thiết bị production để tránh treo tài nguyên không cần thiết.

2.5 Khi nào dùng Packet Capture, khi nào dùng Debug Flow

Đây là nhầm lẫn phổ biến với người mới: Packet Capture cho biết gói tin có tới/đi khỏi interface hay không và nội dung gói ra sao, nhưng không giải thích FortiGate xử lý gói đó qua những bước nào bên trong (match policy nào, có NAT không, route ra sao). Với câu hỏi "tại sao FortiGate chặn/không chặn traffic này", công cụ phù hợp hơn là Debug Flow — sẽ học ngay ở bài tiếp theo: Debug Flow & Flow Trace.

Quy tắc thực dụng: dùng Packet Capture trước để xác nhận gói tin có đến FortiGate hay không và đến đúng interface mong đợi không; nếu gói tin đã đến nhưng hành vi xử lý bên trong không như mong đợi (bị drop, sai NAT, sai route), chuyển sang Debug Flow để đào sâu.


3. Hỏi & Đáp

Packet Capture trên FortiGate có làm chậm traffic đang chạy qua thiết bị không?

Ở mức verbose thấp (1-2) và giới hạn số gói/interface cụ thể, ảnh hưởng thường không đáng kể trên thiết bị có tải bình thường. Tuy nhiên khi dùng any với verbose cao (3+) trên thiết bị có lượng traffic lớn, sniffer tiêu tốn đáng kể CPU để xử lý và hiển thị — nên giới hạn phạm vi filter càng cụ thể càng tốt trong môi trường production.

Tại sao tôi filter đúng IP nhưng không thấy gói tin nào xuất hiện?

Kiểm tra lại đúng interface đang chọn — nếu traffic thực tế đi qua interface khác với interface đang sniff, sẽ không thấy gì. Cách an toàn khi chưa chắc traffic đi qua cổng nào là dùng any thay vì chỉ định cụ thể một interface.

Có thể vừa capture vừa lưu ra file pcap để mở bằng Wireshark không?

Có, dùng verbose mức 6 kết hợp redirect output ra file như ví dụ ở mục 2.3, hoặc từ FortiOS 7.2 trở đi dùng trực tiếp GUI Packet Capture để tải file .pcap thuận tiện hơn.


4. Quiz

Câu 1: Trong lệnh diagnose sniffer packet port1 'host 10.10.20.55' 4, số 4 có ý nghĩa gì?

  • A. Số lượng gói tin cần bắt
  • B. Mức độ chi tiết (verbose level)
  • C. Thời gian chạy tính bằng giây
  • D. Số interface cần bắt cùng lúc

Câu 2: Muốn debug lỗi phân giải địa chỉ Layer 2, nên thêm điều kiện nào vào filter?

  • A. or arp
  • B. and port 53
  • C. and icmp
  • D. or dns

Câu 3: Khi nào nên chuyển từ Packet Capture sang Debug Flow?

  • A. Khi cần xem nội dung payload gói tin
  • B. Khi gói tin đã đến FortiGate nhưng cần biết chính xác nó bị xử lý/drop ở bước nào bên trong
  • C. Khi cần bắt gói trên nhiều interface cùng lúc
  • D. Khi cần lưu file pcap

Câu 4: Vì sao cần thận trọng khi dùng verbose mức 3 trở lên trên production?

  • A. Làm treo GUI FortiGate
  • B. Hiển thị toàn bộ payload, có thể chứa dữ liệu nhạy cảm
  • C. Xóa cấu hình Firewall Policy hiện tại
  • D. Ngắt kết nối VPN đang hoạt động

👉 Đáp án

Câu 1: B Tham số thứ ba trong cú pháp là mức verbose, quyết định độ chi tiết hiển thị.

Câu 2: A Thêm or arp vào filter giúp bắt cả gói ARP để debug vấn đề phân giải địa chỉ Layer 2.

Câu 3: B Packet Capture xác nhận gói tin có đến/đi hay không; Debug Flow giải thích logic xử lý bên trong FortiGate.

Câu 4: B Verbose cao hiển thị payload đầy đủ, có thể lộ dữ liệu nhạy cảm nếu không kiểm soát cẩn thận.


📚 Bài viết thuộc khóa học FortiGate của VNExperts

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
CLI diagnostic nâng cao Mục lục khóa học FortiGate Debug Flow & Flow Trace