Bài này chỉ ra những bước đầu tiên để troubleshoot những lỗi kết nối đến hoặc thông qua FortiGate.
Nó cũng hữu ích trong việc cung cấp những thông tin chẩn đoán tới trung tâm hỗ trợ kĩ thuật Fortinet (Fortinet Technical Assistance) khi mở ticket giải quyết lỗi kết nối.
Giả sử có sơ đồ dưới đây:
[ PC1 ] === port1 [ FortiGate ] port2 ==== [ PC2]
Giả sử: PC1 và PC2 kết nối mạng local qua port 1 và port 2, hoặc là qua các mạng con từ xa được định tuyến qua router.
Phạm vi
Tất cả FortiGate và FortiOS – hoạt động ở chế độ NAT hoặc Transparent
Hướng giải quyết
Bước 1: Kiểm tra bảng định tuyến (đối với chế độ NAT)
Bước 2: Xác nhận là các service đã được mở (nếu truy cập vào FortiGate)
Bước 3: Sniffer trace
Bước 4: Debug flow
Bước 5: Session list
Chú ý: đối với FortiGate sử dụng NP2 interfaces, traffic có thể được nạp vào chip xử lý NP. Do đó, sự thay đổi khi phân tích traffic với sniffer trace hoặc debug flow sẽ không được đề cập đến trong phần hướng dẫn này. Cần phải disable NP2 offloading cho sniffer và debug flow nếu traffic đang đi qua port NP2. Hãy tham khảo thêm nội dung bên dưới.
Bước 1: Kiểm tra bảng định tuyến
Nếu FortiGate đang hoạt động ở chế độ NAT, hãy kiểm tra xem tất cả các route đã có trong bảng định tuyến chưa : local subnets, default routes, static routes, dynamic routing protocol
FortiGate sẽ drop những gói tin trong trường hợp kiểm tra RPF bị lỗi (tham khảo bài “Details about RPF (Reverse Path Forwarding), also called Anti Spoofing, on FortiOS”)
Để kiểm tra bảng định tuyến, sử dụng CLI command “get router info routing-table all” như ví dụ sau:
FGT# get router info routing-table all
Bước 2: Kiểm tra xem các service đã được mở trên port chưa (nếu truy cập vào được FortiGate)
2.1 kiểm tra xem có thể truy cập được các service tương ứng đã được mở trên interface chưa (như telnet, http...)
Ví dụ:
FGT# show system interface port1
2.2 Nếu muốn truy cập vào interface/port này thông qua một interface/port khác của FortiGate, cần phải tạo 1 firewall policy để cho phép traffic đó đi qua.
Ví dụ:
Bước 3: Sniffer Trace
Thực hiện sniffer trace theo ví dụ dưới đây khi ping liên tục (hoặc là kết nối tcp) từ PC1 tới PC2
- Traffic này có đi đến FortiGate và nó có đến đúng port mong muốn không?
- Phân giải ARP có đúng với next-hop không ?
- Traffic FortiGate đến đích ?
- Traffic gửi ngược trở lại nguồn?
- FGT# diagnose sniffer packet any “host <PC1> and host <PC2>” 4
Hoặc
FGT# diagnose sniffer packet any “(host <PC1> and host <PC2>) and icmp” 4
Giao thức ARP có thể giúp ích trong việc troubleshoot lỗi về phân giải ARP (ví dụ là PC2 bị down và không trả lời lại ARP requests của FortiGate)
FGR# diagnose sniffer packet any “host <PC1> and host <PC2> or arp” 4
CTRL+C để thoát sniffer.
Bước 4: Debug flow
Traffic phải lưu lại log trên fortigate. Nếu không có log, thực hiện debug flow theo những bước sau:
Diag debug enable
Diag debug flow filter add <PC1> or diag debug flow filter add <PC2>
Diag debug flow show console enable
Diag debug flow trace start 100 ç this will display 100 packets for this flow
Diag debug enable
Gõ “diag debug flow trace stop” để dừng debug
Dưới đây là ví dụ kết quả từ debug flow:
3.1 Output debug flow của traffic không khớp với firewall policy, do đó mà nó bị FortiGate block:
3.2 Output debug flow của traffic đi qua IPsec tunnel dựa trên policy. Traffic này được xử lý bởi Firewall Policy #2
Bước 5: Sessinon list
Bước tiếp theo để xem firewall session. Trong bước này, một vài filter sẽ được sử dụng để giảm output, theo dõi ví dụ dưới đây:
Diag sys session filter src PC1
Diag sys session list
Hoặc
Diag sys session filter dst PC1
Diag sys session list
Để xóa tất cả các session tương ứng với filter:
Diag sys session filter dst PC1
Diag sys session clear