Loading...

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ầnGiá 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)

Sơ đồ Lab: SSL-VPN Split Tunnel vs Full Tunnel FortiClient PC user: nam.nguyen IP ảo: 10.212.134.20x tại nhà, mạng bất kỳ FortiGate Portal: full-access split-tunneling enable routing-address: LAN-HQ dns-server1 8.8.8.8 theme blue, heading tuy bien login-attempt-limit 3 (settings) login-block-time 60 (settings) LAN - HQ 10.1.0.0/16 đi qua tunnel (Split) INTERNET đi thẳng không qua VPN SSL-VPN Traffic Internet thường: đi thằng qua ISP, không qua FortiGate (Split Tunnel) Đường liền nét đỏ: traffic LAN-HQ qua tunnel VPN Đường nét đứt xanh: traffic Internet đi thẳng (Split Tunnel)

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-server2config 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-limitlogin-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-limitlogin-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ọcBà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