ARP là gì? Cơ chế hoạt động, các loại ARP và rủi ro bảo mật

Hai máy tính trong cùng mạng nội bộ muốn nói chuyện với nhau. Nhưng phần cứng mạng chỉ hiểu địa chỉ MAC (địa chỉ vật lý gắn cứng vào card mạng), không hiểu địa chỉ IP. ARP (Address Resolution Protocol) là giao thức tra ra địa chỉ MAC tương ứng với một địa chỉ IP, […]

ARP là gì? Cơ chế hoạt động, các loại ARP và rủi ro bảo mật

Hai máy tính trong cùng mạng nội bộ muốn nói chuyện với nhau. Nhưng phần cứng mạng chỉ hiểu địa chỉ MAC (địa chỉ vật lý gắn cứng vào card mạng), không hiểu địa chỉ IP. ARP (Address Resolution Protocol) là giao thức tra ra địa chỉ MAC tương ứng với một địa chỉ IP, theo chuẩn RFC 826 công bố năm 1982. Giao thức này đơn giản tới mức không có bước xác thực nào. Bất kỳ máy nào trong mạng cũng có thể tự nhận là chủ của một IP mà không bị kiểm tra. Đây là gốc rễ của ARP Spoofing, kỹ thuật tấn công len vào giữa hai máy đang trao đổi dữ liệu. Bài viết giải thích cơ chế hoạt động của ARP, cấu trúc gói tin, các loại ARP, và cách phát hiện, phòng chống khi bị khai thác.

ARP là gì?

ARP (Address Resolution Protocol) là giao thức ánh xạ địa chỉ IP (tầng Network, Layer 3) sang địa chỉ MAC (tầng Data Link, Layer 2) trong cùng một mạng LAN. Chuẩn này được định nghĩa trong RFC 826 từ năm 1982 và gần như không đổi kể từ đó.

Hình dung giống việc bạn biết tên người nhận nhưng cần tìm đúng địa chỉ nhà để giao hàng. IP giống cái tên, MAC giống địa chỉ nhà cụ thể. ARP là bước tra cứu ở giữa, biến một cái tên thành một địa chỉ giao hàng chính xác.

ARP là cầu nối giữa địa chỉ IP giống tên người nhận và địa chỉ MAC giống địa chỉ nhà cụ thể

Tại sao mạng cần ARP?

Mạng cần ARP vì địa chỉ IP và địa chỉ MAC thuộc hai bản chất khác nhau, còn card mạng chỉ giao tiếp được bằng MAC. Hai bản chất đó khác nhau ở điểm sau:

  • Địa chỉ IP là logic: bạn đổi được bất cứ lúc nào qua cấu hình.
  • Địa chỉ MAC là vật lý: gắn cứng vào card mạng lúc sản xuất, không đổi được.

Ở tầng Data Link, hai thiết bị chỉ gửi được khung dữ liệu (frame) cho nhau khi biết đúng địa chỉ MAC. Trong khi đó, phần mềm ứng dụng phía trên lại chỉ làm việc với IP. Nếu không có ARP, bạn phải tự tra và nhập tay bảng ánh xạ IP sang MAC cho toàn mạng mỗi khi một máy cần gửi dữ liệu. Việc này không thể duy trì thủ công khi mạng có vài chục thiết bị trở lên. ARP tự động hoá toàn bộ bước tra cứu đó, nên bạn không phải làm việc này bằng tay.

Cơ chế hoạt động của ARP theo từng bước

Giả sử máy A (192.168.1.10) muốn gửi dữ liệu tới máy B (192.168\.1.20) trong cùng mạng LAN. ARP xử lý việc này qua bốn bước sau:

  • Kiểm tra cache: trước tiên, máy A kiểm tra ARP cache, tức bảng ánh xạ IP sang MAC lưu tạm trong bộ nhớ. Nếu đã có mapping của máy B, máy A dùng luôn mà không cần hỏi lại mạng.
  • Gửi Request: nếu chưa có, máy A gửi một gói ARP Request theo kiểu broadcast, nghĩa là gửi tới toàn bộ thiết bị trong mạng LAN cùng lúc.
  • Nhận Reply: chỉ máy B nhận ra đúng IP của mình trong gói tin, nên chỉ máy B gửi lại ARP Reply. Bản tin này theo kiểu unicast, tức gửi thẳng về đúng máy A kèm địa chỉ MAC thật.
  • Lưu cache và gửi dữ liệu: máy A nhận Reply, lưu cặp IP-MAC này vào ARP cache, rồi mới bắt đầu gửi dữ liệu thật.

Bốn bước ARP Request và Reply giữa máy A và máy B: kiểm tra cache, gửi Request broadcast, nhận Reply unicast, lưu cache và gửi dữ liệu thật

Thời gian một entry (một dòng ánh xạ IP-MAC) tồn tại trong ARP cache chênh lệch rất lớn giữa các nền tảng. Dưới đây là mức mặc định trên ba nền tảng phổ biến:

  • Linux: giữ khoảng 60 giây trước khi kiểm tra lại.
  • Windows từ Vista trở đi (tức mọi bản Windows desktop và server hiện hành): chỉ giữ khoảng 15-45 giây cho một entry còn dùng được. Con số “2 phút, tối đa 10 phút” chỉ đúng với Windows XP và Server 2003, hai bản đã ngừng hỗ trợ từ lâu.
  • Cisco IOS: mặc định tới 4 giờ, cao hơn hẳn hai nền tảng còn lại.

Vì mức chênh lệch này, khi bạn đổi card mạng hay đổi router, kết nối đôi khi gián đoạn tạm thời. Tình trạng này kéo dài cho tới khi cache cũ hết hạn, hoặc được cập nhật qua một gói ARP tự phát, loại gói ARP sẽ nói rõ ở mục sau.

Toàn bộ Request và Reply ở trên thực chất là hai dạng của cùng một loại gói tin ARP. Mục tiếp theo mổ xẻ chính xác bên trong gói tin đó chứa gì.

Cấu trúc gói tin ARP: các trường dữ liệu cụ thể

Một gói tin ARP có cấu trúc cố định gồm các trường sau, minh hoạ lại đúng ví dụ máy A gửi tới máy B ở mục trên. Giá trị Hardware Type trong bảng ứng với Ethernet, chuẩn kết nối vật lý phổ biến nhất trong mạng LAN hiện nay:

Trường

Ý nghĩa

Ví dụ giá trị

Hardware Type

Loại mạng vật lý

1 (Ethernet)

Protocol Type

Loại giao thức lớp mạng

0x0800 (IPv4)

Opcode

Loại bản tin

1 = Request, 2 = Reply

Sender MAC / IP

Địa chỉ của bên gửi (máy A)

AA:BB:CC:00:00:01 / 192.168.1.10

Target MAC / IP

Địa chỉ của bên nhận là máy B

00:00:00:00:00:00 / 192.168.1.20

Ở Request, Target MAC luôn để trống vì máy A chưa biết. Khác biệt duy nhất giữa hai loại bản tin nằm ở giá trị Opcode (1 hoặc 2) và việc Target MAC có được điền hay không. Ngoài 5 trường chính này, gói tin ARP còn 2 trường phụ mà bạn ít khi cần quan tâm khi đọc gói tin:

  • HLEN (Hardware Address Length): khai báo độ dài địa chỉ phần cứng, bằng 6 byte cho MAC.
  • PLEN (Protocol Address Length): khai báo độ dài địa chỉ giao thức, bằng 4 byte cho IPv4.

Điểm mấu chốt là không trường nào trong toàn bộ gói tin dùng để xác thực danh tính bên gửi.

Các loại ARP phổ biến

ARP có bốn biến thể chính, mỗi loại phục vụ một tình huống khác nhau:

Loại

Chức năng

Proxy ARP

Một thiết bị, thường là router, trả lời ARP Request thay cho thiết bị khác, dùng khi hai mạng con khác nhau cần giao tiếp như cùng một LAN

Gratuitous ARP

Thiết bị tự gửi ARP Reply dù không có Request nào trước đó, dùng để thông báo IP-MAC của mình hoặc phát hiện IP trùng lặp khi vừa khởi động

Reverse ARP (RARP)

Tìm IP từ MAC, tức chiều ngược của ARP thông thường; đã lỗi thời, được thay thế bởi DHCP

Inverse ARP (InARP)

Dùng trong mạng Frame Relay để ánh xạ DLCI (Data Link Connection Identifier) sang địa chỉ IP

Cơ chế “tự thông báo mà không cần ai hỏi” của Gratuitous ARP chính là kẽ hở kẻ tấn công lợi dụng nhiều nhất. Mục tiếp theo nói rõ cách khai thác.

ARP Spoofing (ARP Poisoning) là gì và nguy hiểm thế nào?

ARP Spoofing khai thác đúng một điểm yếu: ARP không có cơ chế xác thực. Vì vậy, thiết bị nhận một ARP Reply không kiểm tra được nó có thực sự đến từ đúng chủ sở hữu IP hay không. Điều này đúng kể cả khi thiết bị đó chưa từng gửi Request. Kẻ tấn công lợi dụng chính Gratuitous ARP, loại bản tin hợp lệ dùng để tự thông báo, để gửi thông tin giả.

Quy trình tấn công về cơ bản gồm ba giai đoạn theo mô tả của Veracode. Ba giai đoạn đó là: chọn mục tiêu trong mạng, gửi gói ARP giả để đầu độc cache, rồi khai thác vị trí trung gian vừa chiếm được. Cụ thể hơn, kẻ tấn công thực hiện theo trình tự sau:

  • Chọn mục tiêu: kẻ tấn công quét mạng để xác định IP của nạn nhân và của gateway (thiết bị định tuyến ra ngoài mạng, thường là router).
  • Gửi gói giả: kẻ tấn công gửi ARP Reply giả mạo tới cả hai bên. Nạn nhân tin máy attacker chính là gateway, còn gateway tin máy attacker chính là nạn nhân.
  • Đầu độc cache: cả hai bên cập nhật sai vào ARP cache của mình sau khi nhận gói giả.
  • Khai thác vị trí trung gian: toàn bộ traffic (lưu lượng dữ liệu) giữa nạn nhân và gateway đi qua máy attacker trước khi tới đích thật.

Sơ đồ ARP Spoofing với máy attacker chen giữa nạn nhân và gateway, khiến traffic thật đi vòng qua máy attacker trước khi tới đích

ARP Spoofing dẫn tới bốn hậu quả cụ thể:

  • Đọc trộm dữ liệu: kẻ tấn công xem được nội dung traffic chưa mã hoá, trừ phần đã bảo vệ bằng HTTPS.
  • Chèn nội dung độc hại: kẻ tấn công chèn mã hoặc nội dung giả vào traffic chưa mã hoá trước khi chuyển tiếp.
  • Chiếm session: nếu session ID (mã định danh phiên đăng nhập) bị lộ trong traffic, kẻ tấn công dùng lại để giả danh người dùng.
  • Làm bàn đạp cho DDoS: kẻ tấn công dùng vị trí trung gian này để tấn công từ chối dịch vụ nhắm vào thiết bị khác trong mạng.

Cách phát hiện và phòng chống ARP Spoofing

Bạn phát hiện ARP Spoofing thủ công bằng cách xem ARP cache trên máy. Nếu hai địa chỉ IP khác nhau cùng trỏ về một địa chỉ MAC, đây là dấu hiệu rõ ràng của việc bị đầu độc (poisoning). Ví dụ minh hoạ:

IP

MAC

192.168.1.1 (gateway)

AA:BB:CC:11:22:33

192.168.1.20 (máy khác)

AA:BB:CC:11:22:33

Cùng một MAC xuất hiện cho hai IP khác nhau là bất thường, vì mỗi card mạng chỉ có đúng một MAC.

Với mạng lớn hơn, bạn có thêm hai công cụ chuyên dụng để phát hiện sớm hơn:

  • Wireshark (công cụ bắt và phân tích gói tin mạng): bạn lọc gói ARP để tìm những ARP Reply xuất hiện mà không có Request tương ứng trước đó. Đây là dấu hiệu điển hình của Gratuitous ARP giả mạo.
  • Dynamic ARP Inspection (DAI) trên switch layer 2 doanh nghiệp: DAI thống kê số gói ARP hợp lệ và không hợp lệ theo từng cổng, theo tài liệu của Juniper Networks. Trên switch Cisco, DAI còn ghi log chi tiết hơn, kèm IP và MAC của gói bị chặn. Nhờ vậy, bạn khoanh vùng chính xác cổng nào đang phát tán gói giả.

Vì bản thân ARP không thể vá, các biện pháp dưới đây đều là lớp phòng thủ đặt bên ngoài giao thức. Chúng không loại bỏ được lỗ hổng gốc, nhưng giảm đáng kể rủi ro bị khai thác. Bạn nên triển khai theo thứ tự từ dễ tới khó:

Bốn bước ARP Request và Reply giữa máy A và máy B: kiểm tra cache, gửi Request broadcast, nhận Reply unicast, lưu cache và gửi dữ liệu thật

  • Static ARP entry: bạn cấu hình cố định ánh xạ IP-MAC cho các thiết bị quan trọng như gateway. Nhờ vậy, máy không tự động ghi đè khi nhận Gratuitous ARP giả.
  • Dynamic ARP Inspection: bạn bật DAI trên switch layer 2 doanh nghiệp. DAI chặn gói ARP không khớp với bảng DHCP snooping (bảng theo dõi IP hợp lệ do máy chủ DHCP cấp phát).
  • VPN: bạn dùng VPN (mạng riêng ảo) để mã hoá traffic, giảm thiệt hại ngay cả khi kẻ tấn công đã chen được vào giữa.
  • Packet Filtering: với hạ tầng lớn, bạn triển khai lọc gói tin để chặn hẳn các gói ARP có nguồn xung đột trước khi chúng lan ra toàn mạng.

Thực hành: xem ARP cache trên máy của bạn

Bạn tự kiểm tra ARP cache ngay trên máy mà không cần cài thêm công cụ. Lệnh arp -a dùng được trên cả Windows và Linux/macOS, dù đây là lệnh cũ. Trên Linux, lệnh hiện đại hơn để xem cùng thông tin là ip neigh show.

Mockup cửa sổ terminal chạy lệnh arp -a hiển thị bảng ARP cache với các cột địa chỉ IP, địa chỉ MAC và loại entry

Khi nghi ngờ cache đang chứa dữ liệu cũ hoặc sai, bạn xoá cache theo cách sau:

  • Trên Windows: bạn xoá một entry cụ thể bằng arp -d <IP>.
  • Trên Linux: bạn xoá toàn bộ cache bằng sudo ip neigh flush all.

Ngay sau khi đọc mục phát hiện Spoofing ở trên, bạn nên tự chạy arp -a trên máy mình một lần. Việc này giúp bạn quen mặt bảng ARP cache bình thường, nên nhận ra bất thường nhanh hơn nếu gặp lại sau này.

ARP có còn dùng trong IPv6 không?

Không. IPv6 dùng Neighbor Discovery Protocol (NDP) chạy trên ICMPv6 thay cho ARP, đảm nhiệm cùng công việc ánh xạ địa chỉ IP sang MAC nhưng theo cơ chế khác.

Điểm khác biệt cốt lõi nằm ở khả năng xác thực. NDP có thể kết hợp thêm SEND (Secure Neighbor Discovery), dùng chữ ký số để xác thực bên gửi trước khi thiết bị khác chấp nhận thông tin ánh xạ. Ngược lại, ARP không có bất kỳ cơ chế xác thực nào ở tầng giao thức, kể cả tùy chọn.

Đây chính là lý do ARP Spoofing tồn tại suốt hơn 40 năm mà gần như không thể vá triệt để trong bản thân giao thức. Ngược lại, NDP khi bật SEND khó bị giả mạo hơn hẳn. Tuy vậy, bạn cần biết thêm một điều: SEND không bật mặc định và ít được triển khai trong thực tế. Vì vậy, phần lớn mạng IPv6 hiện nay vẫn dùng NDP thuần và cũng có nguy cơ bị giả mạo tương tự ARP.

So sánh ARP của IPv4 và NDP của IPv6 về khả năng xác thực, ARP không có cơ chế xác thực còn NDP có thể kết hợp SEND dùng chữ ký số

Tổng kết

ARP là cầu nối bắt buộc giữa địa chỉ IP và địa chỉ MAC trong mạng LAN. Cơ chế hoạt động của nó đơn giản. Nhưng chính sự đơn giản đó là lý do giao thức này không có bước xác thực, dẫn tới rủi ro ARP Spoofing. Khi bạn hiểu đúng cơ chế Request/Reply và biết cách đọc ARP cache, bạn đã nắm kiến thức nền về mạng. Nắm thêm thứ tự ưu tiên các biện pháp phòng chống giúp bạn chủ động bảo vệ hệ thống trước một lỗ hổng đã tồn tại từ khi giao thức ra đời.

Câu hỏi thường gặp về ARP

ARP hoạt động ở tầng nào trong mô hình OSI?

ARP hoạt động giữa tầng Network (Layer 3) và tầng Data Link (Layer 2) trong mô hình OSI (khung 7 tầng mô tả cách dữ liệu di chuyển qua mạng). Nó lấy địa chỉ IP ở Layer 3 làm đầu vào và trả về địa chỉ MAC ở Layer 2. Vì vậy, tài liệu kỹ thuật thường xếp ARP vào Layer 2.5.

ARP có hoạt động được giữa hai mạng con (subnet) khác nhau không?

Không trực tiếp. ARP chỉ hoạt động trong phạm vi một mạng LAN, vì gói ARP Request gửi theo kiểu broadcast không vượt qua được router. Giữa hai subnet khác nhau, dữ liệu đi qua router bằng địa chỉ MAC của router, không phải ARP xuyên subnet. Proxy ARP là ngoại lệ có kiểm soát: router trả lời ARP Request thay cho thiết bị ở subnet khác, nên tạo cảm giác hai subnet dùng chung một LAN. Nhưng bản thân gói ARP thật vẫn không vượt qua router.

ARP và RARP khác nhau như thế nào?

ARP tra địa chỉ MAC từ một địa chỉ IP đã biết. RARP làm ngược lại, tra địa chỉ IP từ một địa chỉ MAC đã biết. RARP đã lỗi thời và được thay thế hoàn toàn bởi DHCP từ nhiều năm nay.

Tắt ARP trên máy tính có được không, có ảnh hưởng gì?

Không nên tắt. ARP là bắt buộc để thiết bị giao tiếp trong mạng LAN bằng IP. Tắt ARP khiến máy không tra được địa chỉ MAC của bất kỳ thiết bị nào, dẫn tới mất kết nối mạng nội bộ hoàn toàn.

Trần Đức Tâm
Trần Đức Tâm
Giám đốc Khối Kinh doanh Hạ tầng Internet

Trần Đức Tâm là chuyên gia về hạ tầng Internet, Domain, Hosting, Cloud và chuyển đổi số, với nhiều năm kinh nghiệm phát triển các dịch vụ Internet tại Việt Nam và Nhật Bản. Ông hiện là Giám đốc Khối Kinh doanh Hạ tầng Internet tại GMO-Z.com RUNSYSTEM, từng giữ các vị trí lãnh đạo tại Onamae.com, Tenten.vn và Z.com Việt Nam. Các bài viết của ông tập trung vào tên miền, hosting, VPS, email doanh nghiệp, SSL và hạ tầng Internet.