Loading...

Site-to-Site IPSec VPN (Route-based)

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

Tiếp nối bài trước, anh Nam đã hiểu Phase 1/Phase 2 là gì, giờ cần bắt tay dựng tunnel thật cho chi nhánh mới. Anh mở VPN Wizard trên FortiGate, thấy có sẵn Template "Site to Site" — nhưng còn băn khoăn: sau khi tunnel lên, làm sao traffic từ LAN trụ sở biết đường "chui" vào đúng tunnel để tới LAN chi nhánh?

Chị Lan giải thích: "Với Route-based VPN — kiểu mặc định và phổ biến nhất hiện nay — mỗi tunnel IPsec tạo ra một interface ảo riêng, y hệt một cổng WAN vật lý. Traffic muốn đi qua tunnel thì đơn giản là route tới đúng interface đó, giống hệt cách anh khai static route cho một cổng vật lý bình thường."

Bài này hướng dẫn dựng một Site-to-Site IPsec VPN dạng Route-based hoàn chỉnh giữa hai FortiGate có IP tĩnh — từ Phase 1/Phase 2 tới routing và Firewall Policy.

💡 Bài có Lab thực hành riêng đi kèm — xem link "Thực hành ngay" ở cuối bài.


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

2.1 Route-based VPN là gì

Route-based VPN đại diện cho tunnel IPsec bằng một tunnel interface ảo (phase1-interface) — về bản chất hoạt động giống hệt một interface vật lý khác trên FortiGate: có thể route tới nó, tham chiếu nó trong Firewall Policy, thậm chí chạy giao thức routing động (OSPF, BGP) qua nó.

Route-based VPN: tunnel là 1 interface ảo thực sự FortiGate HQ LAN: 10.1.0.0/16 Tunnel Interface "vpn-chi-nhanh-a" (giống 1 cổng WAN ảo) FortiGate Chi nhánh LAN: 10.2.0.0/16 Firewall Policy tham chiếu thẳng tunnel interface — giống mọi interface khác Routing tĩnh trỏ đích LAN đối diện qua chính tunnel interface này Hỗ trợ OSPF/BGP chạy qua tunnel, ECMP nhiều tunnel song song — điều Policy-based không làm được

2.2 Cấu hình Phase 1 — thiết lập tunnel interface

config vpn ipsec phase1-interface
    edit "vpn-chi-nhanh-a"
        set type static
        set interface "wan1"
        set ike-version 2
        set remote-gw 203.0.113.10
        set authmethod psk
        set psksecret "MatKhauManhCanKy2024!"
        set proposal aes256gcm-prfsha384
        set dhgrp 21
        set dpd on-idle
        set dpd-retryinterval 30
    next
end

set type static khai báo đây là tunnel tới một peer có địa chỉ IP cố định (khác với Dialup dùng type dynamic, sẽ học ở bài sau). remote-gw là IP công cộng của FortiGate đầu kia.

2.3 Cấu hình Phase 2 — xác định traffic nào đi qua tunnel

config vpn ipsec phase2-interface
    edit "vpn-chi-nhanh-a-p2"
        set phase1name "vpn-chi-nhanh-a"
        set proposal aes256gcm
        set pfs enable
        set dhgrp 21
        set src-subnet 10.1.0.0 255.255.0.0
        set dst-subnet 10.2.0.0 255.255.0.0
    next
end

src-subnet/dst-subnet (còn gọi là quick mode selectors) xác định phạm vi mạng nào được phép đi qua Phase 2 SA này — khớp đúng dải LAN hai đầu.

2.4 Routing — trỏ đích LAN đối diện qua tunnel interface

config router static
    edit 1
        set dst 10.2.0.0 255.255.0.0
        set device "vpn-chi-nhanh-a"
    next
    edit 2
        set dst 10.2.0.0 255.255.0.0
        set distance 254
        set blackhole enable
    next
end

Route thứ nhất trỏ đích LAN chi nhánh qua chính tunnel interface — không cần khai gateway (địa chỉ IP gateway), vì bản chất tunnel interface point-to-point đã đủ định danh đường đi. Route thứ hai là Blackhole Route (đã học ở bài Routing tĩnh) — dự phòng khi tunnel down, tránh traffic bị lộ ra ngoài Internet qua default route.

2.5 Firewall Policy cho traffic qua VPN

config firewall policy
    edit 200
        set name "hq-to-chinhanh-a"
        set srcintf "internal"
        set dstintf "vpn-chi-nhanh-a"
        set srcaddr "LAN-HQ"
        set dstaddr "LAN-ChiNhanh-A"
        set action accept
        set schedule "always"
        set service "ALL"
    next
    edit 201
        set name "chinhanh-a-to-hq"
        set srcintf "vpn-chi-nhanh-a"
        set dstintf "internal"
        set srcaddr "LAN-ChiNhanh-A"
        set dstaddr "LAN-HQ"
        set action accept
        set schedule "always"
        set service "ALL"
    next
end

Cần hai Policy hai chiều — một cho traffic đi vào tunnel, một cho traffic đi ra từ tunnel — vì FortiGate coi tunnel interface như bất kỳ interface nào khác, áp dụng đầy đủ nguyên tắc srcintf/dstintf đã học ở bài Firewall Policy.

⚠️ Lưu ý: Không bật set nat enable trên các Policy VPN này — traffic qua site-to-site VPN cần giữ nguyên địa chỉ IP gốc để bên nhận định tuyến đúng trở lại, NAT sẽ phá vỡ điều đó (trừ trường hợp đặc biệt cần NAT qua VPN, nằm ngoài phạm vi bài này).

2.6 Cấu hình phía FortiGate còn lại

Cấu hình phía chi nhánh gần như đối xứng, chỉ đổi vai trò remote-gwsrc-subnet/dst-subnet:

config vpn ipsec phase1-interface
    edit "vpn-hq"
        set type static
        set interface "wan1"
        set ike-version 2
        set remote-gw 198.51.100.5
        set authmethod psk
        set psksecret "MatKhauManhCanKy2024!"
        set proposal aes256gcm-prfsha384
        set dhgrp 21
    next
end

config vpn ipsec phase2-interface
    edit "vpn-hq-p2"
        set phase1name "vpn-hq"
        set proposal aes256gcm
        set pfs enable
        set dhgrp 21
        set src-subnet 10.2.0.0 255.255.0.0
        set dst-subnet 10.1.0.0 255.255.0.0
    next
end

⚠️ Lưu ý: psksecret phải giống hệt nhau tuyệt đối ở cả hai đầu — chỉ cần lệch một ký tự, Phase 1 sẽ thất bại ngay từ bước xác thực.


3. Hỏi & Đáp

Vì sao route tới tunnel interface không cần khai gateway?

Vì tunnel interface hoạt động theo mô hình point-to-point — chỉ có đúng một "đầu bên kia" khả dĩ (đối tác VPN đã xác định qua Phase 1), nên FortiGate không cần thêm thông tin gateway để biết gói tin nên đi đâu, khác với route qua interface Ethernet vật lý có thể có nhiều thiết bị trên cùng subnet.

Nếu quên tạo Blackhole Route dự phòng, hậu quả gì khi tunnel down?

Traffic hướng tới LAN chi nhánh có thể bị fallback sang route khác đang tồn tại (như default route ra Internet) nếu route chính qua tunnel biến mất khi tunnel down — dữ liệu nội bộ đáng lẽ chỉ đi qua kênh mã hóa VPN có nguy cơ bị gửi thẳng ra Internet ở dạng không kiểm soát, hoặc đơn giản là traffic bị định tuyến sai và mất kết nối không rõ nguyên nhân.

src-subnet/dst-subnet ở Phase 2 có bắt buộc khớp chính xác 100% giữa hai đầu không?

Cần đối xứng logic (bên A khai src=LAN-A/dst=LAN-B thì bên B phải khai src=LAN-B/dst=LAN-A) nhưng không nhất thiết bằng chữ y hệt — quan trọng là dải subnet thực tế phải khớp nhau. Nếu khai sai lệch (ví dụ một bên ghi dải rộng hơn/hẹp hơn bên kia), Phase 2 vẫn có thể lên nhưng traffic ngoài phạm vi khai báo sẽ không được mã hóa qua tunnel.

Có thể có nhiều Phase 2 trên cùng một Phase 1 không?

Có — một Phase 1 (IKE SA) có thể có nhiều Phase 2 (IPsec SA) con, mỗi Phase 2 phục vụ một cặp subnet khác nhau. Hữu ích khi hai site có nhiều dải mạng riêng biệt cần cô lập theo từng Phase 2 SA, thay vì gộp chung một Phase 2 với subnet lớn.


4. Quiz

Câu 1: Route-based VPN đại diện cho tunnel IPsec bằng thành phần nào trên FortiGate?

  • A. Một Address Object đặc biệt
  • B. Một tunnel interface ảo, hoạt động giống interface vật lý khác
  • C. Một Service Object riêng
  • D. Không có thành phần đại diện nào

Câu 2: Vì sao route tới tunnel interface trong Route-based VPN không cần khai tham số gateway?

  • A. Vì FortiGate tự động bỏ qua bước routing cho VPN
  • B. Vì tunnel interface là point-to-point, không cần thêm thông tin gateway để xác định đường đi
  • C. Vì gateway luôn mặc định là 0.0.0.0
  • D. Vì Route-based VPN không hỗ trợ static route

Câu 3: Vì sao cần tạo Blackhole Route dự phòng cho đích LAN chi nhánh?

  • A. Để tăng tốc độ tunnel
  • B. Để tránh traffic bị fallback sang route khác (như ra Internet) khi tunnel down
  • C. Để tự động sửa lỗi Phase 1
  • D. Không có tác dụng thực tế

Câu 4: Vì sao cần tạo hai Firewall Policy hai chiều cho một kết nối VPN site-to-site?

  • A. Vì FortiGate yêu cầu tối thiểu 2 Policy cho mọi trường hợp
  • B. Vì tunnel interface được coi như interface thông thường, áp dụng nguyên tắc srcintf/dstintf hai chiều
  • C. Vì Phase 1 và Phase 2 mỗi cái cần 1 Policy riêng
  • D. Chỉ cần 1 Policy là đủ, không cần 2

Câu 5: Tham số nào trong Phase 1 phải giống hệt tuyệt đối giữa hai đầu tunnel để xác thực thành công?

  • A. interface
  • B. psksecret
  • C. dpd-retryinterval
  • D. Tên gọi tunnel (edit name)

👉 Đáp án

Câu 1: B Route-based VPN đại diện cho tunnel bằng một tunnel interface ảo (phase1-interface), hoạt động giống hệt interface vật lý — có thể route tới, tham chiếu trong Policy, chạy routing động qua nó.

Câu 2: B Tunnel interface hoạt động theo mô hình point-to-point, chỉ có đúng một đối tác VPN xác định qua Phase 1, nên không cần thêm thông tin gateway để biết đường đi như route qua interface Ethernet thông thường.

Câu 3: B Blackhole Route dự phòng ngăn traffic hướng tới LAN chi nhánh bị fallback sang route khác (như default route ra Internet) khi route chính qua tunnel biến mất do tunnel down.

Câu 4: B Vì tunnel interface được FortiGate coi như một interface thông thường, áp dụng đầy đủ nguyên tắc srcintf/dstintf— cần một Policy cho chiều đi vào tunnel và một Policy cho chiều đi ra từ tunnel.

Câu 5: B psksecret (Pre-shared Key) phải giống hệt tuyệt đối ở cả hai đầu; chỉ cần lệch một ký tự, quá trình xác thực Phase 1 sẽ thất bại ngay lập tức.

🚀 Thực Hành Ngay: Cấu hình Site-to-Site IPsec VPN trên FortiGate


📚 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 ➡️
Khái niệm VPN & IPSec Phase 1/Phase 2 Mục lục khóa học FortiGate Route-based vs Policy-based IPSec: so sánh và khi nào dùng