Bài 79b: Thực hành DHCP Snooping — Chặn DHCP server giả mạo trên switch Cisco (kèm cấu hình DAI tham khảo)
Sơ đồ lab Bài 79b · ⬇️ Tải sơ đồ (SVG) · 🔍 Mở cỡ lớn
💡 Liên hệ thực tế
Sáng thứ Hai, vài máy trong phòng Kinh doanh vẫn có IP nhưng mọi trang web đều chậm bất thường. Kiểm tra thì thấy gateway của các máy đó là 192.168.1.66 — không phải router của công ty. Ai đó đã cắm một thiết bị chạy dịch vụ DHCP vào mạng: máy nào nhận IP từ nó sẽ gửi toàn bộ lưu lượng qua máy kẻ tấn công trước khi ra ngoài (tấn công man-in-the-middle).
DHCP Snooping chia cổng switch thành hai loại: trusted (nối tới DHCP server thật hoặc uplink) và untrusted (mọi cổng còn lại). Gói trả lời của DHCP server (OFFER, ACK) đi vào từ cổng untrusted sẽ bị switch bỏ.
Quy tắc ghi nhớ: bật snooping thì mọi cổng mặc định là untrusted. Chỉ trust cổng hướng về DHCP server thật. Client trên cổng untrusted vẫn xin IP bình thường — chỉ "lời mời" từ cổng untrusted bị chặn.
🎯 Mục tiêu bài lab
- Thấy tác hại của DHCP server giả mạo: PC nhận sai gateway, sai DNS.
- Bật DHCP Snooping, đặt cổng trusted.
- Quan sát switch chặn DHCP OFFER từ cổng untrusted ở chế độ Simulation.
- Đọc bảng binding của DHCP Snooping — nền tảng cho DAI và IP Source Guard.
- Biết cấu hình DAI trên switch thật.
📋 Bảng địa chỉ và đấu nối
| Thiết bị | Nối vào SW1 | Địa chỉ IP | Vai trò |
|---|---|---|---|
| R1 | Gi0/1 | 192.168.1.1/24 (G0/0) | Gateway thật |
| SRV-DHCP | Fa0/24 | 192.168.1.10/24 | DHCP server thật — cổng trusted |
| ROGUE | Fa0/10 | 192.168.1.66/24 | DHCP server giả mạo (Server-PT) |
| PC1, PC2 | Fa0/1, Fa0/2 | Nhận qua DHCP | Nhân viên |
| Pool | Default Gateway | DNS Server | Start IP |
|---|---|---|---|
| SRV-DHCP (thật) | 192.168.1.1 | 192.168.1.10 | 192.168.1.100 |
| ROGUE (giả) | 192.168.1.66 | 192.168.1.66 | 192.168.1.200 |
Mọi máy cùng VLAN 1. Mọi cáp là Copper Straight-Through.
⚙️ Các bước thực hiện
⚙️ Bước 1 — Dựng sơ đồ và DHCP server thật
- Kéo ra 1 router 2911, 1 switch 2960-24TT, 2 Server-PT (SRV-DHCP, ROGUE), 2 PC. Nối cáp theo bảng.
- R1:
interface g0/0→ip address 192.168.1.1 255.255.255.0→no shutdown. - SRV-DHCP: IP tĩnh 192.168.1.10/24, gateway 192.168.1.1. Services → DHCP → On. Sửa pool mặc định serverPool: Default Gateway 192.168.1.1, DNS Server 192.168.1.10, Start IP 192.168.1.100, Subnet Mask 255.255.255.0, Maximum Users 50 → Save.
- ROGUE: IP tĩnh 192.168.1.66/24. Services → DHCP: sửa pool thành gateway 192.168.1.66, DNS 192.168.1.66, Start IP 192.168.1.200 → Save, nhưng để Off.
- PC1, PC2: IP Configuration → DHCP. Cả hai nhận địa chỉ 192.168.1.10x, gateway 192.168.1.1.
⚙️ Bước 2 — Giả lập tấn công
Ngoài thực tế, DHCP server giả thường thắng vì trả lời nhanh hơn. Để kết quả lab ổn định, ta tạm tắt server thật:
- SRV-DHCP → DHCP → Off. ROGUE → DHCP → On.
- Trên PC1 chọn Static rồi chọn lại DHCP để xin IP mới.
- PC1 nhận 192.168.1.200, gateway 192.168.1.66, DNS 192.168.1.66 — mọi gói ra mạng khác của PC1 giờ đi qua máy kẻ tấn công.
⚙️ Bước 3 — Bật DHCP Snooping
SW1(config)# ip dhcp snooping
SW1(config)# ip dhcp snooping vlan 1
SW1(config)# no ip dhcp snooping information option
SW1(config)# interface fastEthernet 0/24
SW1(config-if)# ip dhcp snooping trust
- Cần cả hai lệnh: bật toàn cục và bật cho từng VLAN.
no ip dhcp snooping information option: mặc định switch chèn option 82 vào gói DHCP của client. Nhiều DHCP server (ví dụ router Cisco làm DHCP server) bỏ những gói có option 82 do switch chèn vào, khiến client không nhận được IP. Khi switch không làm relay, nên tắt.- Chỉ Fa0/24 được trust. Fa0/10 (ROGUE), Fa0/1–2 (PC) và Gi0/1 (R1) giữ mặc định untrusted.
⚙️ Bước 4 — Thử lại tấn công
- SRV-DHCP vẫn Off, ROGUE vẫn On. Chuyển sang Simulation, Edit Filters chỉ giữ DHCP.
- PC1 chọn Static rồi DHCP. Bấm Capture/Forward: DHCP DISCOVER của PC1 đi tới ROGUE; ROGUE gửi DHCP OFFER về, nhưng gói bị bỏ ngay tại SW1 (dấu X đỏ ở cổng Fa0/10).
- PC1 không nhận được IP nào (báo DHCP failed, địa chỉ 169.254.x.x) — vẫn tốt hơn nhận IP từ kẻ tấn công.
⚙️ Bước 5 — Bật lại DHCP server thật
Về Realtime. SRV-DHCP → DHCP → On. PC1 và PC2 xin lại IP → nhận 192.168.1.10x, gateway 192.168.1.1. ROGUE vẫn bật nhưng vô hại.
SW1# show ip dhcp snooping
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
1
...
Interface Trusted Rate limit (pps)
----------------------- ------- ----------------
FastEthernet0/24 yes unlimited
SW1# show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
00:01:64:00:11:11 192.168.1.101 86400 dhcp-snooping 1 FastEthernet0/1
00:02:4A:00:22:22 192.168.1.102 86400 dhcp-snooping 1 FastEthernet0/2
Bảng binding ghi lại "MAC nào nhận IP nào, ở cổng nào". MAC, IP và thời gian thuê trên máy bạn sẽ khác. Đây là dữ liệu mà DAI dùng để kiểm tra ARP.
💾 Bước 6 — Lưu cấu hình
SW1# copy running-config startup-config
📎 Mở rộng: Dynamic ARP Inspection (DAI) trên switch thật
DHCP Snooping chặn được server giả, nhưng kẻ tấn công vẫn có thể gửi ARP giả ("192.168.1.1 là MAC của tôi") để chen vào giữa. DAI kiểm tra mọi gói ARP đi vào từ cổng untrusted: cặp IP–MAC trong gói phải khớp với bảng binding của DHCP Snooping, nếu không thì bỏ.
SW1(config)# ip arp inspection vlan 1
SW1(config)# interface fastEthernet 0/24
SW1(config-if)# ip arp inspection trust
SW1(config-if)# interface gigabitEthernet 0/1
SW1(config-if)# ip arp inspection trust
SW1(config-if)# end
SW1# show ip arp inspection vlan 1
Máy đặt IP tĩnh (như SRV-DHCP, R1) không có trong bảng binding, nên hoặc nằm trên cổng trust, hoặc phải khai báo bằng ARP ACL — nếu không ARP của chúng sẽ bị chặn.
⚠️ Bài lab không thực hành DAI trên Packet Tracer: phiên bản cũ không có lệnh ip arp inspection, còn ở phiên bản mới, người dùng trên Cisco Community báo tính năng này chạy không ổn định. Hãy thử DAI trên thiết bị thật hoặc trình giả lập chạy IOS thật (CML, GNS3).
🔍 Kiểm tra kết quả
| # | Kiểm tra | Lệnh / thao tác | Kết quả mong đợi |
|---|---|---|---|
| 1 | Tấn công khi chưa có snooping | Bước 2 | PC1 nhận gateway 192.168.1.66 |
| 2 | Snooping đã bật cho VLAN 1 | show ip dhcp snooping |
enabled; VLAN 1; Fa0/24 trusted |
| 3 | OFFER giả bị chặn | Simulation, Bước 4 | Gói OFFER từ ROGUE bị bỏ tại SW1 |
| 4 | Client vẫn nhận IP từ server thật | PC1, PC2 xin lại IP | 192.168.1.10x, gateway 192.168.1.1 |
| 5 | Bảng binding | show ip dhcp snooping binding |
Có dòng cho PC1 và PC2 |
🛠️ Lỗi thường gặp & cách xử lý
| Triệu chứng | Nguyên nhân thường gặp | Cách kiểm tra & sửa |
|---|---|---|
| Bật snooping xong không máy nào nhận được IP | Quên trust cổng về DHCP server thật (hoặc uplink tới nó) |
show ip dhcp snooping → danh sách cổng trusted |
| Đã trust đúng cổng mà vẫn không nhận IP | DHCP server bỏ gói có option 82 | no ip dhcp snooping information option |
Bật ip dhcp snooping nhưng không có tác dụng |
Thiếu ip dhcp snooping vlan <id> |
Bật cho đúng VLAN |
| Server giả vẫn cấp IP được | Cổng của server giả bị trust nhầm | Gỡ ip dhcp snooping trust khỏi cổng đó |
📎 Packet Tracer có một số lỗi với DHCP Snooping khi dùng nhiều VLAN (đã được người dùng báo trên Cisco Community). Bài này dùng một VLAN để kết quả ổn định.
🏆 Thử thách mở rộng
- Nếu SRV-DHCP nằm sau một switch khác (SW2) nối lên SW1 qua Gi0/2, cần trust những cổng nào trên SW1 và SW2?
- Kẻ tấn công không cắm server giả mà gửi liên tục hàng nghìn DHCP DISCOVER với MAC giả để làm cạn pool (DHCP starvation). Tính năng nào của DHCP Snooping giúp hạn chế?
👉 Gợi ý đáp án
Thử thách 1: Trên SW2: cổng nối SRV-DHCP và cổng uplink lên SW1 (nếu SW2 cũng bật snooping). Trên SW1: Gi0/2 — cổng hướng về phía DHCP server thật. Nguyên tắc: trust mọi cổng nằm trên đường từ client tới DHCP server thật.
Thử thách 2: Giới hạn tốc độ gói DHCP trên cổng untrusted, ví dụ trên switch thật:
SW1(config)# interface range fastEthernet 0/1 - 2
SW1(config-if-range)# ip dhcp snooping limit rate 10
Vượt ngưỡng 10 gói/giây, cổng sẽ bị err-disabled. Kết hợp thêm Port Security (Bài 78b) để giới hạn số MAC trên mỗi cổng.
💬 Hỏi & Đáp nhanh
❓ Bật snooping rồi, PC trên cổng untrusted xin IP có bị chặn không?
✅ Không. DISCOVER và REQUEST của client đi qua bình thường. Thứ bị chặn trên cổng untrusted là các gói chỉ server mới được gửi: OFFER, ACK, NAK.
❓ Cổng nối router gateway có cần trust không?
✅ Chỉ cần nếu router đó là DHCP server hoặc DHCP relay (đường DHCP thật đi qua nó). Trong bài, R1 không làm DHCP nên để untrusted.
❓ DAI có chạy được nếu không bật DHCP Snooping?
⚠️ Được, nhưng khi đó chỉ kiểm tra theo ARP ACL khai báo tay. Với máy nhận IP động, DAI dựa vào bảng binding của DHCP Snooping — nên thực tế hai tính năng đi cùng nhau.
📝 Bài tập đánh giá
Câu 1: Đã bật DHCP Snooping cho VLAN 10. Cổng nào nên cấu hình ip dhcp snooping trust?
- A. Mọi cổng access nối PC
- B. Cổng nối tới DHCP server hợp lệ hoặc uplink dẫn tới nó
- C. Mọi cổng trong VLAN 10
- D. Không cổng nào
Câu 2: DAI dùng nguồn dữ liệu nào để quyết định một gói ARP là hợp lệ (với máy nhận IP qua DHCP)?
- A. Bảng MAC của switch
- B. Bảng ARP của router
- C. Bảng binding của DHCP Snooping
- D. Bảng định tuyến
👉 Đáp án
- Câu 1: B — Trust cổng nối PC là mở cửa cho server giả.
- Câu 2: C — Bảng binding ghi lại cặp IP–MAC hợp lệ theo từng cổng, VLAN.
💡 Output trong bài là output mẫu trên Packet Tracer, trên máy bạn có thể khác một chút (ví dụ địa chỉ MAC).
📚 Bài viết thuộc khóa học CCNA của VNExperts
🧭 Điều hướng
| ⬅️ Bài trước | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| Bài 79: DHCP Snooping & Dynamic ARP Inspection — chống tấn công Layer 2 | Mục lục khóa học CCNA | Bài 80: VPN cơ bản: Site-to-site, Remote-access — khái niệm & use case |