Loading...

VPN High Availability: đảm bảo tunnel không gián đoạn

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

Sau sự cố phần cứng bất ngờ tại trụ sở chính, FortiGate chính bị treo — toàn bộ tunnel VPN tới các chi nhánh rớt ngay lập tức, dù công ty đã đầu tư một FortiGate dự phòng chạy HA (High Availability). Khi thiết bị dự phòng tiếp quản, các chi nhánh phát hiện tunnel phải thương lượng lại từ đầu (Phase 1, Phase 2 hoàn toàn mới), gây gián đoạn vài phút trước khi kết nối trở lại bình thường.

Anh Nam thắc mắc: "HA không phải để đảm bảo dịch vụ liên tục hay sao? Sao VPN vẫn bị gián đoạn?"

Chị Lan giải thích: "HA cơ bản chỉ đảm bảo thiết bị dự phòng tiếp quản nhanh — còn để VPN không cần thương lượng lại từ đầu, cần bật thêm các tùy chọn đồng bộ riêng dành cho IPsec. Nếu thiếu bước này, dù HA hoạt động đúng, VPN vẫn phải dựng lại toàn bộ handshake, gây gián đoạn ngắn."

Bài này giải thích cách cấu hình HA để giảm thiểu gián đoạn cho VPN khi failover — tập trung vào các tùy chọn đồng bộ session và SA dành riêng cho IPsec.


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

2.1 Vì sao HA cơ bản chưa đủ để bảo vệ VPN

Trong cấu hình HA Active-Passive thông thường, khi node Primary gặp sự cố, node Secondary tiếp quản vai trò Active và bắt đầu xử lý traffic. Nhưng nếu không có cơ chế đồng bộ riêng cho IPsec, node Secondary không hề biết về các Security Association (SA) đã được Primary thiết lập trước đó — kết quả là VPN buộc phải khởi tạo lại toàn bộ Phase 1/Phase 2 từ con số 0.

VPN HA Failover: Active-Passive với Đồng Bộ Session (FortiGate) FortiGate Primary (Active) ● Trạng thái: Đang xử lý toàn bộ VPN Tunnel & Traffic ● HA Priority: Được cấu hình mức độ ưu tiên cao hơn set session-pickup enable ✔ Tự động đồng bộ IPsec SA & ESP sequence number ✔ Giữ nguyên các kết nối TCP/UDP đang chạy HA Heartbeat & Sync Link ESP seqno sync (mỗi 5 phút) FortiGate Secondary (Passive) ● Trạng thái: Chờ sẵn (Standby), nhận Session Sync ● HA Priority: Được cấu hình mức độ ưu tiên thấp hơn Sẵn sàng tiếp quản (Zero-Downtime): ⚡ Lên Active ngay lập tức khi Primary gặp sự cố ✔ Tiếp tục xử lý gói tin mà không đứt kết nối ⚡ Lợi ích cốt lõi của việc bật Đồng Bộ Session (session-pickup) cho VPN: 1. Không gián đoạn: Khi Primary bị ngắt, Secondary chuyển sang Active và dùng lại đúng SA/seqno đã đồng bộ mà không cần đàm phán lại Phase 1/Phase 2. 2. Tránh rớt gói TCP: Khoảng trễ ESP sequence number giữa 2 node được kiểm soát để tránh lỗi TCP Replay Window làm trôi gói tin của người dùng. 3. Trải nghiệm liền mạch: Người dùng VPN (FortiClient, IPsec Tunnel) không bị gián đoạn session làm việc hoặc phải đăng nhập lại.

2.2 Cấu hình HA cơ bản với session-pickup

config system ha
    set group-name "FGT-HA"
    set mode a-p
    set password "MatKhauHA"
    set hbdev "wan1" 50 "wan2" 50
    set session-pickup enable
    set priority 200
    set override-wait-time 10
end

session-pickup enable là điều kiện bắt buộc để HA đồng bộ session (bao gồm cả session VPN) từ Primary sang Secondary — thiếu tham số này, mọi session (không chỉ VPN) đều mất khi failover, không riêng gì IPsec.

2.3 Đảm bảo đồng bộ kết nối vật lý (Physical Cabling) trên cả 2 node HA

Trong cụm FortiGate HA (FGCP), toàn bộ cấu hình Interface và Routing (Static Route) chỉ cần khai báo một lần duy nhất trên node Primary. Hệ thống HA sẽ tự động đồng bộ (sync) sang node Secondary.

Tuy nhiên, bạn cần đảm bảo kết nối vật lý đồng nhất giữa 2 node:

  • Cổng wan1 của cả 2 thiết bị FortiGate phải cùng cắm vào Layer 2 Switch/VLAN của ISP để chung dải IP và Gateway.

  • Cấu hình ví dụ (thực hiện trên node Primary, tự sync sang Secondary):

config system interface
    edit "wan1"
        set ip 172.16.200.1 255.255.255.0
    next
end

config router static
    edit 1
        set gateway 172.16.200.3
        set device "wan1"
    next
end

Khi node Primary gặp sự cố, node Secondary sẽ kế thừa ngay lập tức IP 172.16.200.1 trên cổng wan1 và tiếp tục đẩy traffic qua Gateway 172.16.200.3 mà không làm gián đoạn routing.

2.4 ESP Sequence Number Sync — chìa khóa để tunnel không phải dựng lại

Đây là cơ chế cốt lõi giải quyết đúng vấn đề ở tình huống mở đầu bài: FortiGate đồng bộ ESP sequence number (bộ đếm gói tin dùng trong giao thức ESP để chống replay attack) từ Primary sang Secondary theo chu kỳ định kỳ (mặc định mỗi 5 phút).

⚠️ Lưu ý kỹ thuật quan trọng: Vì chu kỳ đồng bộ không diễn ra liên tục theo thời gian thực (chỉ mỗi 5 phút một lần), luôn có một khoảng chênh lệch giữa sequence number thực tế Primary đang dùng và sequence number Secondary đã biết tại thời điểm failover xảy ra. Để tránh việc node Secondary vô tình từ chối các gói tin hợp lệ (bị coi nhầm là replay attack do sequence number "thấp hơn" giá trị đã đồng bộ), FortiGate chủ động đặt một khoảng đệm (gap) lớn giữa hai giá trị khi đồng bộ — đảm bảo Secondary luôn sẵn sàng chấp nhận các gói tin có sequence number cao hơn giá trị đã lưu, không bị chặn nhầm do cửa sổ chống replay (replay window) quá hẹp.

2.5 Xác minh ESP sequence number đã đồng bộ

Sau khi cấu hình xong, kiểm tra sequence number trên node Secondary để xác nhận đồng bộ hoạt động đúng:

execute ha manage 0 admin

Sau khi chuyển sang quản lý node Secondary, chạy tiếp:

diagnose vpn tunnel list

Output hiển thị chi tiết SA hiện tại, bao gồm trường seqno — nếu giá trị này khớp hợp lý với Primary (có khoảng đệm chênh lệch dự kiến, không phải bằng 0 hoặc giá trị bất thường), đồng bộ đang hoạt động đúng.

2.6 Firewall Policy và cấu hình VPN vẫn cần đồng bộ HA bình thường

Ngoài các tham số riêng của VPN, toàn bộ cấu hình khác (Firewall Policy, Phase 1/Phase 2, routing...) vẫn cần đồng bộ tự động giữa hai node qua cơ chế HA config-sync tiêu chuẩn — đây là hành vi mặc định của HA, không cần cấu hình gì thêm ngoài việc đảm bảo cả hai node đúng group-name và password khớp nhau.

2.7 Bảng tổng hợp các thành phần cần thiết cho VPN HA Failover

Thành phầnVai trò
session-pickup enable Điều kiện tiên quyết để đồng bộ session (bao gồm VPN)
Cấu hình interface/routing nhất quán Đảm bảo tunnel bind đúng interface trên cả hai node
ESP Sequence Number Sync Cho phép Secondary tiếp quản mà không cần dựng lại tunnel từ đầu
Khoảng đệm (gap) sequence number Tránh chặn nhầm gói hợp lệ do chênh lệch đồng bộ định kỳ
diagnose vpn tunnel list trên Secondary Cách xác minh đồng bộ đã hoạt động đúng

3. Hỏi & Đáp

Nếu không bật session-pickup, VPN sẽ bị ảnh hưởng như thế nào khi failover?

Toàn bộ session (không riêng VPN) sẽ bị mất khi failover — kể cả các kết nối TCP thông thường cũng phải khởi tạo lại. Với VPN, điều này đồng nghĩa Phase 1/Phase 2 phải thương lượng lại hoàn toàn từ đầu, gây gián đoạn đáng kể hơn so với khi có đồng bộ đúng cách.

Chu kỳ đồng bộ ESP sequence number 5 phút có gây rủi ro bảo mật không (vì "khoảng đệm" lớn hơn thực tế)?

Khoảng đệm được thiết kế đủ lớn để tránh chặn nhầm gói hợp lệ, nhưng không có nghĩa là mở toang cửa sổ chống replay — cơ chế replay window trong IPsec vẫn hoạt động bình thường trong phạm vi đã tính toán, chỉ nới rộng đủ để bù đắp cho khoảng thời gian giữa các lần đồng bộ định kỳ, không phải tắt hẳn khả năng chống replay attack.

Có thể giảm chu kỳ đồng bộ xuống ngắn hơn 5 phút để giảm khoảng chênh lệch không?

Chu kỳ đồng bộ là tham số hệ thống cố định theo thiết kế của FortiOS, không phải tham số người dùng tự do chỉnh sửa tùy ý trong cấu hình cơ bản — đây là giá trị Fortinet đã cân bằng giữa độ chính xác đồng bộ và chi phí xử lý hệ thống khi có nhiều tunnel hoạt động đồng thời.

HA Active-Active có hoạt động khác Active-Passive về mặt VPN không?

Bài này tập trung vào mô hình Active-Passive (mode a-p) — phổ biến nhất cho VPN vì đảm bảo tại một thời điểm chỉ có đúng một node xử lý toàn bộ tunnel, tránh xung đột SA. Active-Active có cơ chế phân tải phức tạp hơn, không phải trọng tâm của bài giới thiệu cơ bản này.


4. Quiz

Câu 1: Tham số nào trong config system ha là điều kiện bắt buộc để đồng bộ session (bao gồm cả VPN) từ Primary sang Secondary?

  • A. set mode a-p
  • B. set session-pickup enable
  • C. set priority 200
  • D. set password

Câu 2: ESP Sequence Number Sync giải quyết vấn đề gì khi VPN failover?

  • A. Tăng tốc độ mã hóa
  • B. Cho phép node Secondary tiếp quản tunnel mà không cần thương lượng lại Phase 1/Phase 2 từ đầu
  • C. Giảm dung lượng file cấu hình
  • D. Không có tác dụng thực tế nào

Câu 3: Vì sao FortiGate cần đặt một khoảng đệm (gap) khi đồng bộ ESP sequence number giữa hai node?

  • A. Để tăng tốc độ đồng bộ
  • B. Để tránh Secondary chặn nhầm gói tin hợp lệ do chênh lệch sequence number giữa các lần đồng bộ định kỳ
  • C. Để tiết kiệm dung lượng lưu trữ
  • D. Không có lý do kỹ thuật cụ thể

Câu 4: Lệnh nào dùng để kiểm tra chi tiết SA và sequence number trên node Secondary sau khi chuyển quyền quản lý?

  • A. get system status
  • B. diagnose vpn tunnel list
  • C. execute backup config
  • D. diagnose sys session list

Câu 5: Nếu không bật session-pickup, hậu quả gì xảy ra khi failover?

  • A. Chỉ VPN bị ảnh hưởng, các session khác vẫn giữ nguyên
  • B. Toàn bộ session (không riêng VPN) bị mất, phải khởi tạo lại từ đầu
  • C. Không có ảnh hưởng gì, HA tự động xử lý mọi trường hợp
  • D. Chỉ ảnh hưởng tới Firewall Policy, không ảnh hưởng session

👉 Đáp án

Câu 1: B session-pickup enable là điều kiện bắt buộc để HA đồng bộ session (bao gồm cả VPN) từ Primary sang Secondary; thiếu tham số này, mọi session đều mất khi failover.

Câu 2: B ESP Sequence Number Sync cho phép node Secondary biết được trạng thái SA hiện tại, giúp tiếp quản tunnel mà không cần thương lượng lại toàn bộ Phase 1/Phase 2 từ đầu khi failover xảy ra.

Câu 3: B Khoảng đệm giúp tránh tình huống Secondary từ chối nhầm các gói tin hợp lệ có sequence number thực tế cao hơn giá trị đã đồng bộ lần cuối, do chu kỳ đồng bộ không diễn ra liên tục theo thời gian thực.

Câu 4: B diagnose vpn tunnel list hiển thị chi tiết SA hiện tại bao gồm trường seqno, dùng để xác minh việc đồng bộ ESP sequence number đã hoạt động đúng trên node Secondary.

Câu 5: B Nếu không bật session-pickup, toàn bộ session (không chỉ riêng VPN) sẽ bị mất khi failover và phải khởi tạo lại hoàn toàn từ đầu, gây gián đoạn dịch vụ đáng kể hơ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 ➡️
ADVPN: VPN động tự động tạo shortcut tunnel Mục lục khóa học FortiGate FortiClient Integration: quản lý endpoint tập trung