Bài 58b: Thực hành ACL — Standard ACL, Extended ACL và giới hạn quyền Telnet vào router
Sơ đồ lab Bài 58b · ⬇️ Tải sơ đồ (SVG) · 🔍 Mở cỡ lớn
💡 Liên hệ thực tế
Ban giám đốc công ty ABC đưa ra ba yêu cầu bảo mật cho router R1:
- Phòng Kinh doanh không được truy cập vào mạng phòng Kế toán.
- Phòng Kinh doanh chỉ được xem web và ping máy chủ web; không được đụng tới máy chủ kế toán.
- Chỉ máy của quản trị viên được Telnet vào router.
Cả ba đều làm bằng ACL. Cái khó không nằm ở cú pháp mà ở chỗ chọn đúng loại ACL, đặt đúng cổng, đúng chiều.
Quy tắc ghi nhớ: Standard ACL chỉ lọc theo địa chỉ nguồn → đặt gần đích. Extended ACL lọc được nguồn, đích, giao thức, cổng → đặt gần nguồn. Cuối mọi ACL luôn có một dòng ẩn "deny any".
🎯 Mục tiêu bài lab
- Viết standard ACL đánh số và áp lên interface theo chiều
out. - Viết extended ACL có tên, lọc theo giao thức và cổng TCP, áp chiều
in. - Giới hạn Telnet vào router bằng
access-classtrên line VTY. - Kiểm tra bằng
show access-lists(bộ đếm match),show ip interface. - Sửa ACL có tên bằng số thứ tự dòng.
📋 Bảng địa chỉ và đấu nối
| Thiết bị | Interface | Địa chỉ IP | Ghi chú |
|---|---|---|---|
| R1 | G0/0 | 192.168.10.1/24 | LAN Kinh doanh |
| G0/1 | 192.168.20.1/24 | LAN Kế toán | |
| G0/2 | 192.168.100.1/24 | LAN Máy chủ | |
| PC-ADMIN | NIC | 192.168.10.10/24 | Máy quản trị (nằm trong LAN Kinh doanh) |
| PC-KD | NIC | 192.168.10.11/24 | Nhân viên Kinh doanh |
| PC-KT | NIC | 192.168.20.11/24 | Nhân viên Kế toán |
| SRV-WEB | NIC | 192.168.100.10/24 | Máy chủ web nội bộ |
| SRV-KT | NIC | 192.168.100.20/24 | Máy chủ kế toán |
Mọi PC và máy chủ đặt gateway là địa chỉ .1 của mạng mình.
| Từ | Cổng | Đến | Cổng | Cáp |
|---|---|---|---|---|
| R1 | G0/0 | SW-KD | Gi0/1 | Copper Straight-Through |
| SW-KD | Fa0/1, Fa0/2 | PC-ADMIN, PC-KD | FastEthernet0 | Copper Straight-Through |
| R1 | G0/1 | PC-KT | FastEthernet0 | Copper Cross-Over |
| R1 | G0/2 | SW-SRV | Gi0/1 | Copper Straight-Through |
| SW-SRV | Fa0/1, Fa0/2 | SRV-WEB, SRV-KT | FastEthernet0 | Copper Straight-Through |
⚙️ Các bước thực hiện
⚙️ Bước 1 — Dựng sơ đồ và cấu hình nền
Kéo ra 1 router 2911, 2 switch 2960-24TT, 3 PC và 2 Server-PT. Nối cáp, đặt IP cho PC và máy chủ theo bảng. Hai máy chủ để nguyên dịch vụ HTTP mặc định (tab Services → HTTP đang On). Dán cho R1:
hostname R1
enable secret class
interface gigabitEthernet 0/0
ip address 192.168.10.1 255.255.255.0
no shutdown
interface gigabitEthernet 0/1
ip address 192.168.20.1 255.255.255.0
no shutdown
interface gigabitEthernet 0/2
ip address 192.168.100.1 255.255.255.0
no shutdown
line vty 0 4
password cisco
login
end
Kiểm tra trước khi đặt ACL: mọi máy ping được nhau; PC-KD mở được web http://192.168.100.20 (Desktop → Web Browser); PC-KD Telnet được vào R1 (telnet 192.168.10.1, mật khẩu cisco). Ghi lại để so sánh sau.
⚙️ Bước 2 — Standard ACL: chặn Kinh doanh vào mạng Kế toán
Standard ACL chỉ xem địa chỉ nguồn, nên phải đặt gần đích — tức cổng đi ra mạng Kế toán (G0/1), chiều out. Đặt gần nguồn (G0/0 chiều in) sẽ chặn Kinh doanh đi mọi nơi.
R1(config)# access-list 10 deny 192.168.10.0 0.0.0.255
R1(config)# access-list 10 permit any
R1(config)# interface gigabitEthernet 0/1
R1(config-if)# ip access-group 10 out
⚠️ Quên dòng permit any thì dòng "deny any" ẩn ở cuối sẽ chặn luôn cả máy chủ và mọi mạng khác muốn vào Kế toán.
Kiểm tra: PC-KD ping 192.168.20.11 → thất bại. SRV-KT ping 192.168.20.11 → thành công.
⚙️ Bước 3 — Extended ACL có tên: Kinh doanh chỉ được xem web và ping SRV-WEB
Extended ACL lọc được cả đích và cổng dịch vụ, nên đặt gần nguồn — cổng G0/0, chiều in — để gói bị chặn ngay khi vào router, không đi lòng vòng tốn băng thông.
R1(config)# ip access-list extended KD-VAO-SERVER
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq 80
R1(config-ext-nacl)# permit icmp 192.168.10.0 0.0.0.255 host 192.168.100.10 echo
R1(config-ext-nacl)# deny ip 192.168.10.0 0.0.0.255 192.168.100.0 0.0.0.255
R1(config-ext-nacl)# permit ip any any
R1(config-ext-nacl)# exit
R1(config)# interface gigabitEthernet 0/0
R1(config-if)# ip access-group KD-VAO-SERVER in
📎 Giải thích từng dòng:
• Dòng 1: cho phép web (TCP cổng 80) tới đúng SRV-WEB.
• Dòng 2: cho phép ping (gói echo) tới SRV-WEB. Gói trả lời echo-reply đi chiều ngược lại, không qua ACL này.
• Dòng 3: chặn mọi thứ khác từ Kinh doanh vào mạng máy chủ (gồm cả SRV-KT).
• Dòng 4: cho mọi lưu lượng còn lại đi qua (vd tới gateway, Telnet router) — thiếu dòng này thì "deny any" ẩn chặn hết.
• ACL được xét từ trên xuống, gặp dòng khớp đầu tiên là dừng — vì vậy các dòngpermitriêng phải đứng trước dòngdenychung.
Kiểm tra từ PC-KD: mở web http://192.168.100.10 → được; ping 192.168.100.10 → được; mở web hoặc ping 192.168.100.20 → thất bại.
⚙️ Bước 4 — Chỉ PC-ADMIN được Telnet vào R1
Muốn giới hạn ai được truy cập chính router, áp ACL lên line VTY bằng access-class — không dùng ip access-group trên interface.
R1(config)# access-list 99 permit host 192.168.10.10
R1(config)# line vty 0 4
R1(config-line)# access-class 99 in
Kiểm tra: PC-ADMIN telnet 192.168.10.1 → vào được. PC-KD và PC-KT Telnet → bị từ chối kết nối, dù ping router vẫn được.
💾 Bước 5 — Lưu cấu hình
R1# copy running-config startup-config
🔍 Kiểm tra kết quả
| # | Từ | Thao tác | Kết quả mong đợi | ACL quyết định |
|---|---|---|---|---|
| 1 | PC-KD | ping 192.168.20.11 | ❌ Thất bại | ACL 10 (G0/1 out) |
| 2 | PC-KT | ping 192.168.100.20 | ✅ Thành công | — |
| 3 | PC-KD | Web http://192.168.100.10 | ✅ Mở được | KD-VAO-SERVER dòng 10 |
| 4 | PC-KD | ping 192.168.100.10 | ✅ Thành công | KD-VAO-SERVER dòng 20 |
| 5 | PC-KD | Web / ping 192.168.100.20 | ❌ Thất bại | KD-VAO-SERVER dòng 30 |
| 6 | PC-ADMIN | telnet 192.168.10.1 | ✅ Vào được | ACL 99 |
| 7 | PC-KD | telnet 192.168.10.1 | ❌ Bị từ chối | ACL 99 (deny ẩn) |
🔍 Output mẫu (số lần khớp trên máy bạn sẽ khác)
R1# show access-lists
Standard IP access list 10
10 deny 192.168.10.0, wildcard bits 0.0.0.255 (8 matches)
20 permit any (4 matches)
Standard IP access list 99
10 permit 192.168.10.10 (2 matches)
Extended IP access list KD-VAO-SERVER
10 permit tcp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq www (12 matches)
20 permit icmp 192.168.10.0 0.0.0.255 host 192.168.100.10 echo (4 matches)
30 deny ip 192.168.10.0 0.0.0.255 192.168.100.0 0.0.0.255 (8 matches)
40 permit ip any any (25 matches)
R1# show ip interface gigabitEthernet 0/0
(… rút gọn …)
Outgoing access list is not set
Inbound access list is KD-VAO-SERVER
📎 Bộ đếm matches là công cụ xử lý sự cố tốt nhất của ACL: thao tác lại một lần rồi xem dòng nào tăng — đó là dòng đã quyết định số phận gói tin. Xoá bộ đếm bằng clear access-list counters.
🛠️ 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 |
|---|---|---|
| Áp ACL xong mọi thứ qua cổng đó đều bị chặn | Thiếu dòng permit ở cuối — "deny any" ẩn chặn hết |
show access-lists; thêm dòng permit phù hợp |
| ACL có vẻ không tác dụng | Áp sai cổng hoặc sai chiều in/out | show ip interface g0/x xem dòng Inbound/Outgoing access list |
| Dòng permit riêng không bao giờ tăng bộ đếm | Một dòng deny chung đứng trước đã khớp gói | Sắp lại thứ tự bằng số dòng (xem Thử thách 2) |
| Chặn Kinh doanh vào Kế toán xong, Kế toán cũng không ping được Kinh doanh | Gói trả lời từ Kinh doanh đi ra G0/1 bị ACL 10 chặn | Đúng tính chất standard ACL — xem Hỏi & Đáp |
| Telnet bị chặn cả máy quản trị | Sai địa chỉ trong ACL 99, hoặc dùng ip access-group thay vì access-class |
show running-config | section line vty |
🏆 Thử thách mở rộng
- Từ PC-KT ping PC-KD. Kết quả thế nào? Dòng nào trong
show access-liststăng bộ đếm? Giải thích. - Cho phép riêng PC-ADMIN mở web máy chủ kế toán (192.168.100.20), mà không gõ lại toàn bộ ACL KD-VAO-SERVER.
- Viết lại yêu cầu ở Bước 2 bằng extended ACL đặt ở G0/0 chiều in. So sánh với cách dùng standard ACL.
👉 Gợi ý đáp án
Thử thách 1: Thất bại. Gói echo từ PC-KT tới được PC-KD, nhưng gói echo-reply có nguồn 192.168.10.11 đi ra G0/1 và khớp dòng deny 192.168.10.0 của ACL 10 — bộ đếm dòng 10 tăng. Standard ACL không phân biệt gói "khởi tạo" hay gói "trả lời".
! Thử thách 2 — chèn dòng 25, nằm trước dòng deny 30
R1(config)# ip access-list extended KD-VAO-SERVER
R1(config-ext-nacl)# 25 permit tcp host 192.168.10.10 host 192.168.100.20 eq 80
! Thử thách 3 — chặn chính xác Kinh doanh → Kế toán ngay tại nguồn
R1(config)# ip access-list extended KD-VAO-SERVER
R1(config-ext-nacl)# 5 deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
Với cách dùng extended ACL, có thể bỏ ACL 10 trên G0/1 (no ip access-group 10 out). Ưu điểm: gói bị chặn ngay khi vào router, và chỉ chặn đúng cặp nguồn–đích.
💬 Hỏi & Đáp nhanh
❓ Mỗi interface đặt được bao nhiêu ACL?
✅ Mỗi interface, mỗi chiều (in/out), mỗi giao thức (IPv4/IPv6) chỉ một ACL. Áp ACL mới cùng chiều sẽ thay thế ACL cũ.
❓ ACL outbound có lọc gói do chính router tạo ra không?
✅ Không. ACL outbound không áp cho lưu lượng do router tự sinh (vd Hello của OSPF, ping từ chính router).
❓ Wildcard mask và subnet mask khác nhau thế nào?
✅ Wildcard: bit 0 là "phải khớp", bit 1 là "bỏ qua" — ngược với subnet mask. host 192.168.10.10 là viết tắt của 192.168.10.10 0.0.0.0; any là 0.0.0.0 255.255.255.255.
📝 Bài tập đánh giá
Câu 1: Cần chặn mạng 10.1.1.0/24 truy cập server 10.3.3.10 bằng giao thức HTTP, các dịch vụ khác vẫn dùng bình thường. Chọn cách phù hợp nhất.
- A. Standard ACL đặt gần nguồn
- B. Standard ACL đặt gần đích
- C. Extended ACL đặt gần nguồn
- D. Extended ACL đặt trên line VTY
Câu 2: ACL chỉ có một dòng access-list 5 deny host 10.1.1.5, áp chiều in trên cổng G0/0. Điều gì xảy ra với gói từ 10.1.1.6 vào G0/0?
- A. Được cho qua vì không khớp dòng deny
- B. Bị chặn bởi dòng deny any ẩn ở cuối ACL
- C. Được cho qua vì ACL chỉ có một dòng
- D. Router báo lỗi và gỡ ACL
👉 Đáp án
- Câu 1: C — Cần lọc theo đích và cổng TCP 80 nên phải dùng extended ACL; đặt gần nguồn để chặn sớm.
- Câu 2: B — Gói không khớp dòng nào sẽ gặp dòng "deny any" ẩn ở cuối mọi ACL.
💡 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 58: Extended ACL — cấu hình chi tiết theo port, protocol | Mục lục khóa học CCNA | Bài 59: Named ACL & Troubleshooting ACL thường gặp |