Loading...

ARP, Neighbor table, MAC table trên FortiGate — xử lý Layer 2 và troubleshooting

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

Một máy chủ nội bộ báo không ping được tới FortiGate dù đã đặt đúng IP cùng subnet, cáp mạng vẫn sáng đèn. Anh Nam kiểm tra Firewall Policy, routing — mọi thứ trông đều đúng, nhưng ping vẫn timeout.

Chị Lan hỏi: "Anh đã xem ARP table trên FortiGate chưa? Timeout kiểu này với thiết bị cùng subnet thường không phải do Policy hay routing, mà là do FortiGate không phân giải được MAC address của máy chủ đó."

Anh Nam gõ get system arp, không thấy IP của máy chủ trong danh sách. Đổi sang diagnose ip arp list để xem chi tiết hơn — vẫn không có entry nào khớp.

Chị Lan: "Vậy là vấn đề nằm ở Layer 2 — có thể sai VLAN tag, sai cấu hình switch port, hoặc máy chủ đang ở nhầm subnet thực tế dù khai IP đúng. Không nắm được cách đọc ARP table thì rất dễ bị lạc hướng, cứ loay hoay kiểm tra Layer 3 mà bỏ qua gốc vấn đề ở Layer 2."

Bài này giới thiệu cách FortiGate xử lý phân giải địa chỉ ở Layer 2 — ARP table, khái niệm Neighbor table (IPv6), và MAC table trên switch tích hợp — cùng các lệnh chẩn đoán thường dùng nhất.


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

2.1 ARP table là gì và dùng để làm gì

ARP table dùng để xác định địa chỉ MAC đích của các node mạng, cũng như VLAN và cổng mà node đó có thể được tiếp cận. Khi FortiGate cần gửi gói tin tới một địa chỉ IP, nó phải biết địa chỉ MAC tương ứng — ARP table chính là nơi lưu ánh xạ IP ↔ MAC đã học được.

FortiGate phân giải MAC address theo loại đích Gói tin cần gửi đi Đích cùng subnet Gửi ARP Request trực tiếp -> đến chính IP đích Kết quả lưu vào ARP table Đích khác subnet Tra routing table tìm next-hop / default gateway Phân giải MAC của gateway đó get system arp: bảng dễ đọc | diagnose ip arp list: chi tiết state/timer để debug sâu

FortiGate học ARP theo nhu cầu (on-demand) — chỉ khi cần gửi gói tin tới một IP chưa có trong bảng, nó mới gửi ARP Request để hỏi. Vì vậy nếu chưa có traffic nào tới một thiết bị, IP của thiết bị đó sẽ không xuất hiện trong ARP table cho tới khi có gói tin thực sự cần gửi tới nó.

2.2 Hai lệnh xem ARP table: get vs diagnose

# get system arp
Address         Age(min)   Hardware Addr        Interface
10.10.1.3       1          50:b7:c3:75:ea:dd     internal7
192.168.0.190   0          28:f1:0e:03:2a:97     wan1

get system arp là bảng dễ đọc, đủ dùng cho hầu hết nhu cầu kiểm tra nhanh — hiển thị địa chỉ IP, thời gian tồn tại (phút), địa chỉ MAC, và interface tương ứng.

# diagnose ip arp list
index=14 ifname=internal7 10.10.1.3 50:b7:c3:75:ea:dd state=00000004 use=2494 confirm=1995 update=374 ref=3
index=5 ifname=wan1 192.168.0.190 28:f1:0e:03:2a:97 state=00000002 use=88 confirm=86 update=977639 ref=2

diagnose ip arp list truy xuất trực tiếp kernel ARP cache, hiển thị thêm các trường state (trạng thái entry), use/confirm/update(thời gian tính bằng centisecond kể từ các mốc liên quan), và ref (số lượng tham chiếu) — hữu ích khi cần debug entry bị "stale" (cũ, chưa cập nhật) hoặc "failed" (phân giải thất bại).

3 lệnh chẩn đoán Layer 2 thường dùng get system arp Bảng ARP dễ đọc: Address, Age, Hardware Addr, Interface Dùng để xem nhanh IP nào ứng MAC nào diagnose ip arp list Chi tiết kernel cache: state, use, confirm, update, ref Dùng khi cần debug sâu entry bị stale/failed execute clear system arp table Xóa toàn bộ ARP table ép thiết bị học lại từ đầu Gây gián đoạn tạm thời — cân nhắc trước khi chạy Muốn xóa 1 entry riêng lẻ: diagnose ip arp delete <interface> <IP>

2.3 Thao tác với ARP table

Xóa một entry cụ thể (khi nghi ngờ entry đó sai/cũ):

diagnose ip arp delete internal 192.168.50.8

Xóa toàn bộ ARP table, ép thiết bị học lại từ đầu:

execute clear system arp table

Khai báo một entry ARP tĩnh (dùng khi cần cố định ánh xạ IP–MAC, ví dụ chống ARP spoofing cho thiết bị quan trọng):

config system arp-table
    edit 1
        set interface "internal"
        set ip 192.168.50.8
        set mac bc:14:01:e9:77:02
    next
end

⚠️ Lưu ý: execute clear system arp table xóa toàn bộ bảng ARP, gây gián đoạn tạm thời cho mọi kết nối đang hoạt động vì thiết bị phải học lại từ đầu — chỉ nên dùng khi thực sự cần, ưu tiên diagnose ip arp delete để xóa từng entry riêng lẻ nếu chỉ nghi ngờ một thiết bị cụ thể.

2.4 Neighbor table (IPv6) và Proxy ARP — hai khái niệm dễ nhầm

Neighbor table là khái niệm tương đương ARP nhưng dành cho IPv6, dùng giao thức NDP (Neighbor Discovery Protocol) thay vì ARP truyền thống của IPv4. Cấu trúc và mục đích tương tự ARP table — ánh xạ địa chỉ IPv6 sang MAC — nhưng được xem/quản lý bằng bộ lệnh riêng dành cho IPv6.

Proxy ARP là cơ chế khác biệt — khi FortiGate trả lời thay cho một dải địa chỉ IP không thực sự thuộc về chính nó, thường dùng trong các kịch bản NAT/VIP đặc thù. Proxy ARP có bảng riêng, không được lẫn với ARP table thông thường — khi cần debug hành vi Proxy ARP, dùng đúng lệnh chẩn đoán dành riêng cho Proxy ARP thay vì diagnose ip arp list.

⚠️ Lưu ý: Nhầm lẫn giữa ARP cache thông thường và bảng Proxy ARP là lỗi phổ biến khi troubleshoot — hai bảng độc lập nhau, xem nhầm bảng sẽ dẫn tới kết luận sai về nguyên nhân sự cố.

2.5 MAC table trên switch tích hợp (Software Switch / Hardware Switch)

Với các model FortiGate có switch tích hợp (Hardware Switch hoặc Software Switch), ngoài ARP table ở Layer 3, còn có MAC table ở Layer 2 — ghi nhận địa chỉ MAC nào học được trên cổng switch nào. Khi thiết bị đầu cuối không ping được dù ARP table đã đúng, nên kiểm tra thêm MAC table và trạng thái cổng switch vật lý (VLAN tag đúng chưa, cổng có bị shutdown không) trước khi tiếp tục nghi ngờ ở Layer 3.

Xem MAC address hiện tại của một cổng vật lý cụ thể:

diagnose hardware deviceinfo nic wan2 | grep HWaddr

2.6 Quy trình gợi ý khi troubleshoot lỗi kết nối Layer 2

BướcViệc cần làm
1 get system arp — kiểm tra IP đích có xuất hiện trong bảng không
2 Nếu không có, tạo traffic thử (ping) để kích hoạt việc học ARP, kiểm tra lại
3 diagnose ip arp list — xem chi tiết state nếu nghi ngờ entry bị stale/failed
4 Kiểm tra VLAN tag, cổng switch, cấu hình subnet của thiết bị đầu cuối
5 Nếu vẫn không được, thử diagnose ip arp delete cho entry nghi vấn rồi tạo lại traffic
6 Trường hợp phức tạp hơn, mới tiếp tục kiểm tra routing, Firewall Policy ở Layer 3

3. Hỏi & Đáp

Vì sao một IP đã ping thành công trước đó lại biến mất khỏi ARP table sau một thời gian? 

ARP entry có thời gian tồn tại (age) giới hạn — nếu không có traffic sử dụng entry đó trong một khoảng thời gian, hệ thống sẽ để nó hết hạn và xóa khỏi bảng, buộc phải học lại khi có nhu cầu mới. Đây là hành vi bình thường, không phải lỗi.

Đặt ARP tĩnh (config system arp-table) có luôn tốt hơn để ARP học tự động không? 

Không hẳn — ARP tĩnh giúp cố định ánh xạ IP–MAC cho các thiết bị quan trọng (chống giả mạo), nhưng nếu thiết bị đó đổi card mạng hoặc đổi IP mà quên cập nhật entry tĩnh, sẽ gây mất kết nối và khó chẩn đoán hơn ARP học tự động. Chỉ nên dùng ARP tĩnh cho số ít thiết bị thực sự cần kiểm soát chặt.

MAC table trên switch tích hợp có tự động đồng bộ với ARP table không? 

Không đồng bộ trực tiếp — đây là hai bảng ở hai layer khác nhau (MAC table ở Layer 2 trên switch, ARP table ở Layer 3 trên phần định tuyến của FortiGate). Một thiết bị có thể xuất hiện đúng trong MAC table (switch thấy được về mặt vật lý) nhưng chưa chắc đã có entry tương ứng trong ARP table nếu chưa có traffic Layer 3 nào kích hoạt việc phân giải.

Nếu nghi ngờ có tấn công ARP spoofing trong mạng, nên làm gì trước tiên? 

Kiểm tra ARP table tìm dấu hiệu bất thường — nhiều IP khác nhau cùng trỏ về một địa chỉ MAC, hoặc MAC của gateway/thiết bị quan trọng bị đổi khác thường lệ. Sau đó cân nhắc dùng ARP tĩnh cho các thiết bị trọng yếu (gateway, server) để cố định ánh xạ, kết hợp thêm các biện pháp giám sát Layer 2 khác trên switch nếu có.


4. Quiz

Câu 1: ARP table trên FortiGate dùng để lưu thông tin gì?

  • A. Ánh xạ tên miền sang địa chỉ IP
  • B. Ánh xạ địa chỉ IP sang địa chỉ MAC cùng interface tương ứng
  • C. Danh sách các Firewall Policy đang hoạt động
  • D. Bảng định tuyến tĩnh

Câu 2: Lệnh nào hiển thị thông tin chi tiết nhất (state, use, confirm, ref) của ARP cache, phù hợp cho debug sâu?

  • A. get system arp
  • B. diagnose ip arp list
  • C. show system arp
  • D. execute arp detail

Câu 3: Khi FortiGate cần gửi gói tin tới một địa chỉ IP khác subnet, nó phân giải MAC address của đối tượng nào?

  • A. MAC của chính IP đích đó
  • B. MAC của DNS server
  • C. MAC của next-hop/default gateway theo routing table
  • D. FortiGate không cần phân giải MAC trong trường hợp này

Câu 4: Proxy ARP khác gì so với ARP table thông thường?

  • A. Không có gì khác biệt, là cùng một bảng
  • B. Proxy ARP là khi FortiGate trả lời ARP thay cho một dải IP không thuộc về chính nó, có bảng riêng
  • C. Proxy ARP chỉ áp dụng cho IPv6
  • D. Proxy ARP thay thế hoàn toàn ARP table từ FortiOS 7.0 trở lên

Câu 5: Lệnh nào xóa toàn bộ ARP table, cần cân nhắc vì gây gián đoạn tạm thời?

  • A. diagnose ip arp delete
  • B. execute clear system arp table
  • C. get system arp clear
  • D. config system arp-table reset

👉 Đáp án

Câu 1: B — ARP table ánh xạ địa chỉ IP sang địa chỉ MAC tương ứng, cùng với VLAN/interface nơi node đó được tiếp cận. 

Câu 2: B — diagnose ip arp list truy xuất trực tiếp kernel ARP cache với các trường chi tiết state, use, confirm, update, ref — phù hợp debug sâu hơn get system arp

Câu 3: C — Với đích khác subnet, FortiGate tra routing table tìm next-hop/default gateway, sau đó phân giải MAC của chính gateway đó chứ không phải MAC của IP đích cuối cùng. 

Câu 4: B— Proxy ARP là cơ chế FortiGate trả lời thay cho một dải IP không thực sự thuộc về nó (thường dùng trong NAT/VIP), có bảng theo dõi riêng biệt với ARP table thông thường. 

Câu 5: B — execute clear system arp table xóa toàn bộ ARP table, ép thiết bị học lại từ đầu, gây gián đoạn tạm thời nên cần cân nhắc trước khi chạy.


📚 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 ➡️
Zone và cách nhóm interface Mục lục khóa học FortiGate Routing tĩnh: Distance, Priority, Blackhole Route, Policy Route