Loading...

Giao diện quản trị FortiGate: cấu trúc lệnh CLI và 4 nhóm lệnh cốt lõi (show/get/diagnose/execute)

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

Anh Nam vừa nhận bàn giao một FortiGate 60F từ đối tác triển khai. Sếp anh yêu cầu kiểm tra nhanh xem thiết bị đã lên internet chưa, phiên bản FortiOS là gì, và interface WAN đã có IP hay chưa — tất cả trong vòng 5 phút, không có sẵn tài liệu bàn giao GUI chi tiết.

Anh Nam mở SSH, gõ liền một mạch: get system statusget system interface physicaldiagnose sys top. Chị Lan đứng cạnh, dân tư vấn chính hãng, thắc mắc: "Sao lúc thì get, lúc thì diagnose, sao không xài show cho thống nhất?"

Anh Nam cười: "Ba lệnh đó trả lời ba câu hỏi khác nhau đấy chị. Đây là thứ đầu tiên em học khi mới vào nghề FortiGate — không nắm được cái này thì gõ CLI như đoán mò."

Đây chính là chủ đề bài này: cấu trúc lệnh cấu hình config/edit/set/end, và 4 nhóm lệnh show/get/diagnose/execute — nền tảng bắt buộc trước khi đụng vào bất kỳ bài thực hành CLI nào phía sau.


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

2.1 Vì sao cần hiểu CLI trước GUI

FortiOS có hai giao diện quản trị: GUI (giao diện web) và CLI (command line, qua console, SSH hoặc Telnet). GUI trực quan cho tác vụ hàng ngày, nhưng CLI là bắt buộc trong nhiều tình huống: cấu hình hàng loạt, debug sự cố, script tự động hóa, hoặc khi GUI không truy cập được (mất mạng quản lý, lỗi giao diện web...).

⚠️ Lưu ý: Một số lệnh chẩn đoán chuyên sâu (ví dụ diagnose debugdiagnose snifferchỉ tồn tại trên CLI, GUI không có tương đương.

⚠️ Lưu ý kỹ thuật quan trọng: "Nhiều bạn quen làm Cisco hay nhầm thông số Baud Rate khi cắm cáp Console vào FortiGate. Cisco dùng 9600, nhưng FortiGate thường dùng Baud Rate là 115200 thì màn hình CLI mới nhận diện đúng phím — đặt sai sẽ thấy toàn ký tự rác hoặc gõ phím không phản hồi. Cấu hình đầy đủ cho cổng Serial Console: 115200, 8-N-1 (Data bits: 8, Parity: None, Stop bits: 1, Flow control: None)."

2.2 Cấu trúc lệnh cấu hình: config → edit → set → next → end

Phần lớn lệnh thay đổi cấu hình trên FortiGate theo một khuôn mẫu phân cấp cố định:

  • config — mở một khối cấu hình (ví dụ config system interface).
  • edit — chỉ dùng trong khối dạng bảng (table), để tạo mới hoặc sửa một entry cụ thể (ví dụ edit "port1").
  • set — gán giá trị cho một tham số bên trong entry đang chỉnh.
  • next — lưu entry hiện tại lại và quay về mức bảng, sẵn sàng edit entry tiếp theo.
  • end — đóng toàn bộ khối config, lưu lại toàn bộ bảng.
  • abort — hủy toàn bộ thao tác vừa gõ trong khối config hiện tại và thoát ra ngoài, không lưu bất kỳ thay đổi nào.

⚠️ Lưu ý kỹ thuật quan trọng từ chị Lan: "Khi thao tác trong các cấp config, các bạn cần phân biệt rõ: gõ next để lưu bảng cấu hình hiện tại và chuyển sang tạo bảng tiếp theo (vẫn ở trong config); gõ end để lưu toàn bộ và thoát hoàn toàn ra màn hình chính; gõ abort để thoát ra ngay lập tức và KHÔNG lưu các lệnh vừa gõ. Nhiều bạn hay lẫn next với end nên bị sót cấu hình khi thoát ra giữa chừng."

Ví dụ cấu hình IP cho hai cổng mạng:

config system interface
    edit "port1"
        set ip 10.0.0.1 255.255.255.0
        set allowaccess ping https
    next
    edit "port2"
        set ip 10.0.1.1 255.255.255.0
        set allowaccess ping
    next
end

Cấu trúc lệnh CLI: config → edit → set → next → end config system interface edit "port1" set ip 10.0.0.1 255.255.255.0 set allowaccess ping https next edit "port2" set ip 10.0.1.1 255.255.255.0 set allowaccess ping next end ← đóng khối config, lưu toàn bộ bảng "interface"

⚠️ Lưu ý quan trọng về set trên danh sách (list): nếu một tham số đang chứa nhiều giá trị (ví dụ nhóm thành viên user group gồm A, B, C), lệnh set member D sẽ thay thế toàn bộ bằng D chứ không phải thêm vào. Muốn giữ lại A, B, C và thêm D, phải gõ đầy đủ: set member A B C D.

Một vài lệnh điều hướng và tiện ích hữu dụng khi làm việc trong CLI:

  • ? — hiển thị các lựa chọn/tham số khả dụng tại vị trí hiện tại (tương tự autocomplete gợi ý).
  • Gõ tắt được, miễn không gây nhập nhằng — ví dụ get system status có thể gõ tắt thành g sy stat.
  • tree — hiển thị toàn bộ cây lệnh; tree system xem riêng nhánh systemtree diagnose hoặc tree execute xem riêng hai nhánh tương ứng.
  • | grep <từ khóa> — lọc output dài, ví dụ get hardware nic internal | grep Current_HWaddr chỉ để xem MAC address.

2.3 Bốn nhóm lệnh xem & thao tác: show, get, diagnose, execute

Ngoài nhóm lệnh cấu hình, FortiOS CLI chia các lệnh còn lại thành 4 nhóm chức năng riêng biệt — đây là điểm dễ gây nhầm lẫn nhất với người quen CLI kiểu Cisco (chỉ có show).

4 nhóm lệnh xem & thao tác trên FortiGate CLI show Xem cấu hình đã thay đổi (khác default) show full- configuration get Xem trạng thái hệ thống, session, runtime hiện tại get system status diagnose Chẩn đoán sâu, debug, sniffer, không đổi cấu hình diag sys top execute Thực thi hành động: reboot, backup, ping execute ping Mẹo tra nhanh: gõ "tree diagnose" hoặc "tree execute" để xem toàn bộ nhánh lệnh

show — hiển thị cấu hình hiện tại của một khối, nhưng chỉ những tham số đã bị đổi khác giá trị mặc định. Muốn xem toàn bộ kể cả giá trị mặc định, dùng show full-configuration.

get — hiển thị trạng thái/thông tin runtime của hệ thống hoặc một cấu hình cụ thể, ví dụ get system status (phiên bản FortiOS, model, uptime), get system interface physical (trạng thái interface vật lý), get system performance status (CPU/RAM hiện tại).

diagnose — nhóm lệnh chẩn đoán/debug chuyên sâu, dùng để soi log, bắt gói tin, xem tiến trình hệ thống... mà không làm thay đổi cấu hình đang chạy. Ví dụ diagnose sys top (xem tiến trình ngốn CPU), diagnose sniffer packet any (bắt gói tin).

execute — nhóm lệnh thực thi một hành động thay vì chỉ xem thông tin: khởi động lại thiết bị, sao lưu/khôi phục cấu hình, ping/traceroute, cập nhật firmware... Ví dụ execute rebootexecute backup config flashexecute ping 8.8.8.8.

🔄 Khác biệt version FortiOS: cấu trúc 4 nhóm lệnh này ổn định qua các phiên bản FortiOS gần đây (7.0 trở lên). Một số lệnh con cụ thể trong diagnose/execute có thể được thêm/đổi tên giữa các bản 7.0 → 7.2 → 7.4, nên khi thao tác trên thiết bị thật, luôn dùng ? hoặc tree để xác nhận lệnh còn tồn tại đúng như tài liệu.

2.4 Bảng tổng hợp nhanh

Nhóm lệnhMục đíchCó đổi cấu hình không?Ví dụ
config...end Tạo/sửa cấu hình config system interface
show Xem cấu hình khác mặc định Không show system interface
get Xem trạng thái/runtime Không get system status
diagnose Chẩn đoán, debug, sniffer Không diagnose sys top
execute Thực thi hành động Có (hành động, không phải config) execute ping 8.8.8.8

3. Hỏi & Đáp

Sao không dùng show để xem luôn trạng thái CPU/RAM cho tiện, cần gì phải nhớ thêm lệnh get? 

Vì show chỉ đọc phần cấu hình đã lưu (running-config), còn CPU/RAM là số liệu runtime thay đổi liên tục theo từng giây — thuộc phạm vi của get/diagnose, không nằm trong cấu hình. Đây là ranh giới cố định của FortiOS CLI: cấu hình (show) và trạng thái sống (getdiagnose) tách biệt nhau.

Nếu gõ nhầm edit một entry chưa tồn tại thì sao? 

FortiGate sẽ tự tạo mới entry đó với tên vừa gõ. Đây là hành vi "tạo hoặc sửa" (create-or-edit) mặc định của lệnh edit trong khối bảng — cần cẩn thận gõ đúng chính tả tên interface/policy, nếu không sẽ vô tình tạo ra entry rác.

diagnose có an toàn để chạy trên thiết bị đang chạy production không? 

Phần lớn lệnh diagnose chỉ đọc thông tin nên an toàn, nhưng một số lệnh debug (như diagnose debug application <daemon> mức cao) có thể sinh log lớn ảnh hưởng hiệu năng tạm thời. Nên tránh chạy sniffer bắt gói tin với bộ lọc quá rộng trên thiết bị đang tải cao, và luôn tắt debug (diagnose debug disable) sau khi xong việc.

Có bắt buộc phải gõ full câu lệnh không, hay được viết tắt? 

Được viết tắt miễn không gây nhập nhằng với lệnh khác — CLI sẽ tự nhận diện phần đủ để phân biệt. Tuy vậy, trong bài viết và tài liệu chia sẻ nội bộ, nên viết đầy đủ để người đọc sau dễ hiểu, chỉ gõ tắt khi thao tác trực tiếp cho nhanh.


4. Quiz

Câu 1: Lệnh nào dùng để đóng và lưu toàn bộ một khối config trên FortiGate CLI?

  • A. next
  • B. end
  • C. exit
  • D. save

Câu 2: Muốn xem toàn bộ cấu hình hiện tại của một khối, kể cả các tham số đang ở giá trị mặc định, dùng lệnh nào?

  • A. show
  • B. show full-configuration
  • C. get full-configuration
  • D. diagnose config full

Câu 3: Lệnh nào thuộc nhóm "thực thi hành động" (không chỉ xem thông tin) trên FortiGate CLI?

  • A. get system status
  • B. show system interface
  • C. execute backup config flash
  • D. diagnose sys top

Câu 4: Trong một user group đang có 3 thành viên A, B, C, lệnh set member D sẽ gây ra kết quả gì?

  • A. Thêm D vào, nhóm còn A, B, C, D
  • B. Thay thế toàn bộ nhóm chỉ còn lại D
  • C. Báo lỗi vì D đã tồn tại
  • D. Không có gì thay đổi

Câu 5: Muốn xem toàn bộ nhánh lệnh con thuộc nhóm diagnose, nên gõ lệnh nào?

  • A. get diagnose list
  • B. show diagnose
  • C. tree diagnose
  • D. diagnose tree

👉 Đáp án

Câu 1: B — end đóng khối config hiện tại và lưu lại toàn bộ thay đổi bên trong, trong khi next chỉ lưu một entry và chuyển sang entry kế tiếp trong cùng bảng. 

Câu 2: B — show mặc định chỉ hiện tham số khác mặc định; thêm full-configuration để thấy toàn bộ, kể cả giá trị mặc định. 

Câu 3: C — execute backup config flash thực thi hành động sao lưu, khác với get/show/diagnose vốn chỉ đọc thông tin. 

Câu 4: B — Lệnh set trên một danh sách sẽ ghi đè toàn bộ giá trị cũ; muốn giữ A, B, C và thêm D phải gõ đầy đủ set member A B C D

Câu 5: C — tree diagnose liệt kê toàn bộ cây lệnh con thuộc nhóm diagnose, tương tự tree execute cho nhóm execute.


📚 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 ➡️
Cài đặt ban đầu, đăng ký FortiCare & FortiGuard Mục lục khóa học FortiGate Quản lý Admin: profile, quyền hạn, Trusted Hosts, 2FA