Danh mục sản phẩm
Lab: Cấu hình SSL-VPN Split Tunnel & Portal Customization
1. Liên hệ thực tế
Anh Nam áp dụng ngay tình huống khách hàng phản ánh vào Lab: dựng một Portal SSL-VPN đang chạy Full Tunnel, đo thử tốc độ, rồi chuyển sang Split Tunnel để so sánh. Chị Lan dặn thêm: "Khi soạn Lab, nhớ tra lại CLI Reference — 2 lệnh chống dò mật khẩu không nằm trong Portal như nhiều tài liệu hay nhầm, mà nằm ở config vpn ssl settings. Sai vị trí là lệnh không áp dụng được, dù cú pháp gõ không báo lỗi rõ ràng."
Lab này dựng 1 Portal SSL-VPN, đo hành vi Full Tunnel mặc định, sau đó bật Split Tunnel, xử lý DNS, và tùy biến giao diện Portal.
⚠️ Toàn bộ lệnh CLI trong Lab đã được đối chiếu với FortiOS 7.0 CLI Reference chính thức trước khi đưa vào bài — xem ghi chú "Điểm dễ sai" ở mỗi bước.
2. Kiến thức cốt lõi — Các bước thực hành
2.1 Sơ đồ Lab
| Thành phần | Giá trị |
|---|---|
| FortiGate | wan1: IP public, internal: LAN 10.1.0.0/16 |
| SSL-VPN Portal | full-access |
| IP Pool cho client VPN | SSLVPN_TUNNEL_ADDR1 (10.212.134.200–210) |
| User test | nam.nguyen, group SSLVPN-Users |
| Address Object công ty | LAN-HQ (10.1.0.0/16) |
2.2 Bước 1 — Tạo user, group và cấu hình SSL-VPN cơ bản (Full Tunnel mặc định)
config user local
edit "nam.nguyen"
set type password
set passwd "MatKhauUser2024!"
next
end
config user group
edit "SSLVPN-Users"
set member "nam.nguyen"
next
end
config firewall address
edit "SSLVPN_TUNNEL_ADDR1"
set type iprange
set start-ip 10.212.134.200
set end-ip 10.212.134.210
next
edit "LAN-HQ"
set subnet 10.1.0.0 255.255.0.0
next
end
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "SSLVPN-Users"
set portal "full-access"
next
end
end
config firewall policy
edit 300
set name "sslvpn-to-lan"
set srcintf "ssl.root"
set dstintf "internal"
set srcaddr "all"
set dstaddr "LAN-HQ"
set action accept
set schedule "always"
set service "ALL"
next
end
⚠️ Điểm dễ sai #1: split-tunneling disable chính là hành vi Full Tunnel mặc định — cần bật kết nối thử ở bước này để tự quan sát hiện tượng traffic Internet cũng đi qua tunnel, trước khi so sánh với Split Tunnel ở bước sau.
2.3 Bước 2 — Kết nối thử FortiClient (Full Tunnel) và quan sát
Trên FortiClient, tạo profile SSL-VPN trỏ tới IP public FortiGate, đăng nhập bằng nam.nguyen. Sau khi kết nối thành công, kiểm tra bảng route trên máy client (Windows: route print, macOS/Linux: netstat -rn hoặc ip route) — sẽ thấy default route (0.0.0.0/0) đã bị đẩy qua tunnel ảo của FortiClient, xác nhận đúng hành vi Full Tunnel.
Trên FortiGate, kiểm tra session VPN đang hoạt động:
get vpn ssl monitor
2.4 Bước 3 — Chuyển sang Split Tunnel
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling enable
set split-tunneling-routing-address "LAN-HQ"
next
end
Ngắt kết nối FortiClient rồi kết nối lại (Split Tunnel áp dụng ngay lần kết nối tiếp theo), sau đó kiểm tra lại bảng route trên client — lần này chỉ thấy route cụ thể tới 10.1.0.0/16 trỏ qua tunnel, không còn default route bị đẩy qua VPN. Thử truy cập một trang web bất kỳ (ví dụ google.com) — traffic này giờ đi thẳng qua ISP tại nhà, không qua FortiGate.
⚠️ Điểm dễ sai #2: Quên add đúng Address Object vào split-tunneling-routing-address — nếu để trống hoặc trỏ sai subnet, client vẫn kết nối VPN thành công nhưng không route được tới tài nguyên nội bộ dù trạng thái hiển thị "Connected".
2.5 Bước 4 — Xử lý DNS cho Split Tunnel
config vpn ssl settings
set dns-server1 8.8.8.8
set dns-server2 1.1.1.1
end
Nếu công ty có domain nội bộ cần phân giải riêng (ví dụ erp.congty.local), dùng Split DNS ngay trong chính Portal để chỉ định DNS server riêng cho domain đó, còn lại vẫn dùng DNS ngoài:
config vpn ssl web portal
edit "full-access"
config split-dns
edit 1
set domains "congty.local"
set dns-server1 10.1.1.5
next
end
next
end
Kiểm tra trên client: nslookup erp.congty.local phải trả về đúng IP nội bộ, trong khi nslookup google.com vẫn phân giải bình thường qua DNS ngoài không qua tunnel.
⚠️ Điểm dễ sai #3: Đặt dns-server1/dns-server2 ở config vpn ssl settings là DNS mặc định toàn cục cho SSL-VPN; nếu Portal có cấu hình dns-server1/dns-server2 riêng (ở config vpn ssl web portal), giá trị ở Portal sẽ override giá trị global — cần biết rõ đang sửa ở cấp nào để tránh nhầm lẫn khi debug.
2.6 Bước 5 — Tùy biến Portal (theme, heading, redir-url)
config vpn ssl web portal
edit "full-access"
set theme "blue"
set heading "Cong VPN Cong Ty"
set redir-url "https://congty.vn"
next
end
Lưu ý khi kiểm tra: redir-url chỉ có tác dụng khi Portal đang bật Web Mode (set web-mode enable) — nếu Portal chỉ chạy Tunnel Mode thuần túy như Lab này, tham số này sẽ không hiển thị hiệu quả rõ ràng trên giao diện; muốn thấy tác dụng đầy đủ, cần bật thêm Web Mode để test.
2.7 Bước 6 — Bật tùy chọn Download FortiClient trên Portal
config vpn ssl web portal
edit "full-access"
set forticlient-download enable
next
end
⚠️ Điểm dễ sai #4 (lỗi phổ biến hay gặp trong tài liệu không chính thức): Tham số đúng để bật/tắt widget tải FortiClient là forticlient-download, không phải widget-download-fgt-icon (tên này không tồn tại trong CLI Reference — nếu gõ nhầm, FortiGate sẽ báo "unknown command" hoặc bỏ qua tùy phiên bản).
2.8 Bước 7 — Chống dò mật khẩu (brute-force) tại tầng đăng nhập SSL-VPN
config vpn ssl settings
set login-attempt-limit 3
set login-block-time 60
end
⚠️ Điểm dễ sai #5 (lỗi phổ biến hay gặp trong tài liệu không chính thức): Hai tham số login-attempt-limit và login-block-time thuộc config vpn ssl settings (áp dụng toàn cục cho toàn bộ SSL-VPN), không phải config vpn ssl web portal — đặt nhầm scope sẽ khiến lệnh không được CLI chấp nhận trong ngữ cảnh Portal.
Kiểm tra hoạt động: thử đăng nhập sai mật khẩu liên tiếp 3 lần với nam.nguyen, sau đó thử đăng nhập đúng ngay lập tức — phải bị chặn trong 60 giây trước khi được thử lại, xác nhận cơ chế lockout hoạt động đúng.
3. Hỏi & Đáp
Trong Lab, tại sao phải kết nối FortiClient trước rồi mới đổi Split Tunnel, thay vì cấu hình Split Tunnel ngay từ đầu?
Mục đích sư phạm là để tự tay quan sát sự khác biệt giữa Full Tunnel và Split Tunnel qua bảng route trên client (đặc biệt là default route 0.0.0.0/0) — nếu chỉ đọc lý thuyết, người học dễ bỏ qua chi tiết bảng route thực tế thay đổi thế nào khi bật/tắt Split Tunnel.
Nếu login-attempt-limit/login-block-time đặt sai chỗ (ở Portal thay vì settings), FortiGate có báo lỗi rõ ràng không?
Tùy phiên bản FortiOS, CLI có thể báo "command parse error" khi cố gõ tham số không tồn tại trong scope hiện tại, nhưng một số trường hợp CLI có thể tab-complete gợi ý sai gây nhầm lẫn — cách chắc chắn nhất để tránh lỗi này là luôn kiểm tra CLI Reference đúng phiên bản trước khi áp dụng, không tin tưởng tuyệt đối vào tài liệu third-party.
Split DNS trong Portal (config split-dns) khác gì với dns-server1/dns-server2 đặt trực tiếp?
dns-server1/dns-server2 (dù ở settings hay portal) là DNS server áp dụng cho toàn bộ truy vấn DNS của client khi VPN kết nối. config split-dns cho phép chỉ định DNS server riêng cho từng domain cụ thể — hữu ích khi Split Tunnel đã bật và chỉ muốn domain nội bộ công ty mới dùng DNS nội bộ, còn lại dùng DNS công khai để tránh vòng vèo không cần thiết.
4. Quiz
Câu 1: Tham số nào xác định danh sách subnet công ty cần route qua tunnel khi Split Tunnel được bật?
- A.
tunnel-mode - B.
split-tunneling-routing-address - C.
dns-server1 - D.
theme
Câu 2: login-attempt-limit và login-block-time thuộc scope CLI nào?
- A.
config vpn ssl web portal - B.
config vpn ssl settings - C.
config user local - D.
config firewall policy
Câu 3: Tham số đúng để bật widget tải FortiClient trên Portal là gì?
- A.
widget-download-fgt-icon - B.
forticlient-download - C.
download-fortclient-widget - D.
enable-forticlient-btn
Câu 4: redir-url trên Portal chỉ phát huy tác dụng đầy đủ khi nào?
- A. Khi Portal chạy Tunnel Mode thuần túy
- B. Khi Portal bật Web Mode
- C. Khi Split Tunnel đang tắt
- D. Không có điều kiện gì đặc biệt
👉 Đáp án
Câu 1: B split-tunneling-routing-address xác định các Address Object đại diện cho subnet công ty cần được route qua tunnel khi Split Tunnel bật.
Câu 2: B Hai tham số này thuộc config vpn ssl settings (áp dụng toàn cục), không thuộc scope của từng Portal riêng lẻ.
Câu 3: B forticlient-download là tham số chính xác theo CLI Reference; widget-download-fgt-icon không tồn tại.
Câu 4: B redir-url yêu cầu Portal đang bật Web Mode để hiển thị trang chuyển hướng sau khi vào Portal; với Tunnel Mode thuần túy, tham số này không có giao diện để phát huy tác dụng rõ ràng.
📚 Bài Lab thuộc khóa học FortiGate của VNExperts
🧭 Điều hướng
| ⬅️ Bài lý thuyết | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| SSL-VPN: Split Tunnel & Portal Customization | Mục lục khóa học FortiGate | Troubleshooting VPN: các lệnh chẩn đoán quan trọng |
