Loading...

Routing tĩnh FortiGate: Administrative Distance, Priority, Blackhole Route, Policy Route

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

Văn phòng khách hàng có 2 đường Internet: đường chính (FPT) và đường dự phòng (Viettel). Anh Nam khai báo 2 static route mặc định, mỗi đường trỏ về một gateway ISP khác nhau, cùng để distance mặc định. Kết quả: traffic bị chia ngẫu nhiên qua cả hai đường cùng lúc — không phải hành vi dự phòng (failover) như khách hàng mong muốn.

Chị Lan giải thích: "Anh đang tạo ra ECMP đấy — hai route cùng distance thì FortiGate coi cả hai đều tốt như nhau và chia tải. Muốn đường FPT là chính, Viettel chỉ dự phòng khi FPT chết, anh phải đặt distance của Viettel cao hơn FPT — lúc đó Viettel sẽ nằm im trong bảng, chỉ được dùng khi route FPT biến mất."

Anh Nam còn hỏi thêm: "Vậy nếu em muốn theo dõi được đường Viettel còn sống hay không, dù đang không dùng tới, thì sao?"

Chị Lan: "Đó là lúc cần priority kết hợp cùng distance bằng nhau — để cả hai route cùng nằm trong bảng routing (nhìn thấy được, ping thử được), nhưng route ưu tiên thấp hơn mới thực sự được chọn để đẩy traffic."

Bài này đi sâu vào 4 khái niệm cốt lõi của static route trên FortiGate: Administrative Distance, Priority, Blackhole Route, và Policy Route.


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

2.1 Cơ chế FortiGate chọn route khi có nhiều lựa chọn

Khi routing table có nhiều entry cùng dẫn tới một đích, FortiGate áp dụng tuần tự các tiêu chí sau để quyết định route nào được đưa vào forwarding table (bảng route thực sự dùng để chuyển gói tin):

Thứ tự chọn route khi có nhiều lựa chọn 1. Route cụ thể nhất (Longest Prefix Match) luôn thắng Ví dụ: Subnet /28 được ưu tiên hơn /24 hoặc /16 2. Nếu cùng Prefix → Distance (Administrative Distance) thấp hơn thắng Static Route (AD=1) < BGP (AD=20) < OSPF (AD=110) 3. Nếu Distance bằng nhau → Priority (Cost) thấp hơn thắng Áp dụng so sánh giữa các Static Route hoặc trong cùng một Protocol 4. Nếu tất cả các thông số bằng nhau → ECMP (Cân bằng tải) FortiGate sẽ chia đều / cân bằng lưu lượng trên nhiều đường route song song

Route cụ thể nhất luôn được ưu tiên tuyệt đối trước — ví dụ route tới 192.168.1.0/24 luôn thắng route tới 192.168.0.0/16 cho cùng một đích nằm trong cả hai dải, bất kể distance hay priority.

2.2 Administrative Distance — độ tin cậy của nguồn route

Administrative Distance đo độ tin cậy tương đối của route, gán theo nguồn gốc route đó (static, OSPF, BGP...). Giá trị càng thấp càng được tin cậy hơn. Nếu nhiều route tới cùng đích nhưng từ các nguồn khác nhau, route có distance thấp hơn sẽ được chọn vào forwarding table.

config router static
    edit 1
        set dst 0.0.0.0 0.0.0.0
        set gateway 203.0.113.1
        set device "wan1"
        set distance 10
    next
    edit 2
        set dst 0.0.0.0 0.0.0.0
        set gateway 198.51.100.1
        set device "wan2"
        set distance 20
    next
end

Với cấu hình trên, wan1 (distance 10) là đường chính; wan2 (distance 20) chỉ được đưa vào forwarding table khi route của wan1 biến mất khỏi routing table (ví dụ do Link Monitor phát hiện mất kết nối).

⚠️ Lưu ý: Administrative distance hợp lệ cho static route nằm trong khoảng 1–254. Giá trị 255 khiến route bị xem là không hợp lệ (unreachable) — route đó sẽ hiện trong bảng cấu hình nhưng không bao giờ được đưa vào forwarding table, kể cả khi là route khả dụng duy nhất tới đích đó.

2.3 Priority — phân định khi Distance bằng nhau

Priority (còn gọi là cost) chỉ có tác dụng phân định khi có từ 2 route trở lên cùng distance cùng dẫn tới một đích — route có priority thấp hơn được chọn làm route chính. Khác với distance (ảnh hưởng việc route có được đưa vào bảng hay không), priority chỉ dùng để chọn route chính trong số các route đã cùng nằm trong bảng.

config router static
    edit 1
        set dst 0.0.0.0 0.0.0.0
        set gateway 203.0.113.1
        set device "wan1"
        set distance 10
        set priority 0
    next
    edit 2
        set dst 0.0.0.0 0.0.0.0
        set gateway 198.51.100.1
        set device "wan2"
        set distance 10
        set priority 5
    next
end

Cả hai route đều distance 10 nên cùng xuất hiện trong routing table (đều "nhìn thấy được", có thể dùng cho mục đích giám sát hoặc RPF check), nhưng wan1 (priority 0) mới thực sự được chọn đẩy traffic vì priority thấp hơn wan2 (priority 5).

⚠️ Lưu ý: Priority chỉ cấu hình được qua CLI, không có trên GUI đối với static route thông thường. Việc dùng cùng distance nhưng khác priority là kỹ thuật phổ biến khi cần theo dõi (ping/monitor) đường dự phòng dù nó chưa thực sự được dùng để chuyển traffic.

2.4 Blackhole Route — chủ động "vứt bỏ" gói tin

Blackhole route là route đặc biệt khiến FortiGate âm thầm loại bỏ mọi gói tin khớp với route đó, giống như gửi vào /dev/null. Không có phản hồi nào được gửi lại cho nguồn gửi, khác với việc từ chối tường minh bằng ICMP unreachable.

config router static
    edit 6
        set dst 10.0.0.0 255.252.0.0
        set distance 254
        set blackhole enable
    next
end

Các tình huống dùng Blackhole Route phổ biến:

  • Route dự phòng khi VPN/link down — nếu traffic đích tới mạng chi nhánh thường đi qua tunnel IPsec, khi tunnel down mà không có blackhole route, traffic có thể bị route nhầm sang default route (ra thẳng Internet) — vừa sai logic, vừa lộ traffic nội bộ ra ngoài. Đặt blackhole route cho dải mạng chi nhánh sẽ khiến traffic bị loại bỏ có kiểm soát cho tới khi tunnel khôi phục.
  • Chống dò quét/thăm dò IP nội bộ — loại bỏ traffic tới các dải IP không sử dụng mà không tiết lộ thông tin (không trả lời gì) cho phía thăm dò.

⚠️ Lưu ý: Vì lý do tương thích với routing engine, distance của blackhole route nên đặt 254 (không phải 255, giá trị này khiến route bị xem là unreachable và không được nạp vào forwarding table dù là route khả dụng duy nhất).

2.5 Policy Route — định tuyến theo điều kiện, không chỉ theo đích

Policy Route (config router policy) cho phép định tuyến dựa trên nhiều tiêu chí ngoài địa chỉ đích — như interface nguồn, địa chỉ nguồn, giao thức, cổng dịch vụ — thay vì chỉ tra theo routing table thông thường. Policy Route luôn được kiểm tra trước khi FortiGate tra routing table thông thường.

Policy Route được kiểm tra trước routing table thường Gói tin đến 1. Router Policy (Policy Route) Khớp input-device / src / dst / protocol / port / TOS? MATCH (Khớp điều kiện) Chuyển sang gateway & output-device đã chỉ định trực tiếp trong Policy Route NO MATCH (Bỏ qua / Không khớp) Chuyển tiếp sang tra bảng Routing Table thông thường (Static / Dynamic / ECMP) Lưu ý: Policy Route áp dụng theo thứ tự từ trên xuống dưới (Top-Down execution)

Ví dụ: ép toàn bộ traffic FTP (cổng 21) từ port1 đi ra qua port4 với gateway riêng, bất kể routing table mặc định định tuyến đi đâu:

config router policy
    edit 1
        set input-device "port1"
        set src 0.0.0.0 0.0.0.0
        set dst 0.0.0.0 0.0.0.0
        set protocol 6
        set start-port 21
        set end-port 21
        set gateway 172.20.120.23
        set output-device "port4"
    next
end

Policy Route được xử lý theo thứ tự từ trên xuống trong bảng, entry khớp đầu tiên sẽ được áp dụng — có thể kéo-thả trên GUI hoặc chỉ định edit <seq-num> để sắp xếp thứ tự trên CLI.

⚠️ Lưu ý: Vì Policy Route ưu tiên cao hơn routing table thông thường, cấu hình sai có thể khiến traffic đi sai hướng một cách khó phát hiện — triệu chứng thường là "route table trông đúng nhưng traffic vẫn đi nhầm đường", nguyên nhân hay bị bỏ sót là chưa kiểm tra router policy trước khi debug ở tầng static/dynamic routing.


3. Hỏi & Đáp

Distance và Priority, cái nào nên ưu tiên chỉnh trước khi thiết kế mạng có 2 đường ISP? Distance nên là công cụ chính để phân định chính/phụ rõ ràng (route phụ hoàn toàn biến mất khỏi forwarding table khi route chính còn sống). Priority chỉ dùng khi có nhu cầu đặc biệt — ví dụ vẫn muốn cả hai route cùng hiện trong bảng để theo dõi trạng thái liên tục dù không dùng để chuyển traffic.

Blackhole route có thay thế được Firewall Policy deny không? Không nên dùng thay thế hoàn toàn — Blackhole route hoạt động ở tầng routing (trước khi đến Firewall Policy), phù hợp cho các tình huống định tuyến đặc thù như route dự phòng khi VPN down. Việc kiểm soát truy cập theo logic bảo mật (ai được phép đi đâu) vẫn nên dùng Firewall Policy, vì nó tách biệt rõ ràng và dễ audit hơn.

Policy Route có ảnh hưởng tới NAT không? Policy Route chỉ quyết định gói tin đi ra interface nào và qua gateway nào — việc NAT có áp dụng hay không, áp dụng như thế nào, vẫn hoàn toàn phụ thuộc vào cấu hình NAT trong Firewall Policy tương ứng với interface đích đó. Hai cơ chế này độc lập nhưng cần khớp nhau khi thiết kế, nếu không traffic có thể đi đúng đường nhưng lại bị NAT sai.

Nếu quên đặt distance 254 cho Blackhole route mà để 255 thì hậu quả gì? Route đó sẽ không bao giờ được nạp vào forwarding table — kể cả khi là route khả dụng duy nhất cho đích đó, khiến traffic không bị loại bỏ như kỳ vọng mà có thể fallback sang route khác (như default route), gây ra đúng vấn đề mà blackhole route được tạo ra để ngăn chặn.


4. Quiz

Câu 1: Khi hai static route cùng đích có distance khác nhau, route nào được đưa vào forwarding table?

  • A. Route có distance cao hơn
  • B. Route có distance thấp hơn
  • C. Cả hai đều được đưa vào, chia tải ngẫu nhiên
  • D. Route được tạo sau

Câu 2: Priority (cost) trên static route FortiGate chỉ có tác dụng phân định trong trường hợp nào?

  • A. Khi các route có distance khác nhau
  • B. Khi các route có cùng distance
  • C. Priority luôn được ưu tiên xét trước distance
  • D. Priority chỉ áp dụng cho route động (OSPF/BGP)

Câu 3: Distance khuyến nghị cho Blackhole route là bao nhiêu, và vì sao không nên dùng 255?

  • A. 254 — vì 255 khiến route bị xem là unreachable, không được nạp vào forwarding table
  • B. 1 — vì distance thấp nhất luôn được ưu tiên
  • C. 100 — theo mặc định của OSPF
  • D. Không có khuyến nghị cụ thể

Câu 4: Policy Route được xử lý ở thời điểm nào trong luồng định tuyến?

  • A. Sau khi đã tra xong routing table thông thường
  • B. Chỉ áp dụng cho traffic IPv6
  • C. Trước khi FortiGate tra routing table thông thường (Static/ECMP)
  • D. Chỉ áp dụng khi bật SD-WAN

Câu 5: Trong cùng một bảng Policy Route có nhiều entry, thứ tự xử lý diễn ra như thế nào?

  • A. Ngẫu nhiên
  • B. Theo thứ tự từ trên xuống, entry khớp đầu tiên được áp dụng
  • C. Theo distance thấp nhất trước
  • D. Theo thứ tự bảng chữ cái tên interface

👉 Đáp án

Câu 1: B — Route có administrative distance thấp hơn được xem là đáng tin cậy hơn và được đưa vào forwarding table.

Câu 2: B — Priority chỉ phát huy tác dụng phân định khi có từ 2 route trở lên cùng distance dẫn tới cùng một đích. 

Câu 3: A — Distance 254 là khuyến nghị cho Blackhole route; distance 255 khiến route bị xem là unreachable, không được nạp vào forwarding table dù là route khả dụng duy nhất. 

Câu 4: C — Policy Route luôn được kiểm tra trước khi FortiGate tra routing table thông thường (bao gồm static route và ECMP). 

Câu 5: B — Các entry trong Policy Route được xử lý theo thứ tự từ trên xuống, entry đầu tiên khớp điều kiện sẽ được áp dụng.


📚 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 ➡️
ARP, Neighbor table, MAC table — FortiGate xử lý Layer 2 Mục lục khóa học FortiGate ECMP, Link Monitor & Dead Gateway Detection