Bài 66b: Thực hành NAT — Static NAT, Dynamic NAT và PAT (NAT Overload) trên router Cisco
Sơ đồ lab Bài 66b · ⬇️ Tải sơ đồ (SVG) · 🔍 Mở cỡ lớn
💡 Liên hệ thực tế
Công ty ABC dùng dải riêng 192.168.1.0/24 trong văn phòng. Nhà mạng cấp cho công ty một link 198.51.100.0/30 và một khối 8 địa chỉ công cộng 203.0.113.0/29. Ba yêu cầu:
- Máy chủ web nội bộ phải truy cập được từ Internet bằng một địa chỉ công cộng cố định.
- Nhân viên phải ra được Internet.
- Không đủ địa chỉ công cộng cho mỗi máy một cái.
Bạn sẽ làm cả ba loại NAT trên router biên R1 và thấy tận mắt vì sao PAT là thứ gần như mọi văn phòng đang dùng.
Quy tắc ghi nhớ: đánh dấu đúng chiều trước — ip nat inside ở cổng LAN, ip nat outside ở cổng ra nhà mạng. Static NAT: 1 địa chỉ riêng ↔ 1 địa chỉ công cộng, cố định. Dynamic NAT: mượn địa chỉ từ pool, hết pool là hết. PAT: nhiều máy dùng chung 1 địa chỉ, phân biệt bằng số port.
🎯 Mục tiêu bài lab
- Thấy vì sao địa chỉ riêng không đi ra Internet được nếu không có NAT.
- Cấu hình Static NAT để công bố máy chủ web ra ngoài.
- Cấu hình Dynamic NAT với pool nhỏ và quan sát khi pool bị dùng hết.
- Chuyển sang PAT dùng địa chỉ của interface ra ngoài.
- Đọc
show ip nat translationsvàshow ip nat statistics.
📋 Bảng địa chỉ và đấu nối
| Thiết bị | Interface | Địa chỉ IP | Ghi chú |
|---|---|---|---|
| R1 | G0/0 | 192.168.1.1/24 | LAN công ty — inside |
| G0/1 | 198.51.100.1/30 | Link tới nhà mạng — outside | |
| ISP | G0/0 | 198.51.100.2/30 | Router nhà mạng |
| G0/1 | 192.0.2.1/24 | Mạng "Internet" giả lập | |
| PC1 – PC3 | NIC | 192.168.1.11 – .13/24 | Gateway 192.168.1.1 |
| SRV-WEB | NIC | 192.168.1.100/24 | Gateway 192.168.1.1 · HTTP bật sẵn |
| PC-NGOAI | NIC | 192.0.2.10/24 | Người dùng Internet · Gateway 192.0.2.1 |
| Loại NAT | Địa chỉ riêng (inside local) | Địa chỉ công cộng (inside global) |
|---|---|---|
| Static NAT | SRV-WEB 192.168.1.100 | 203.0.113.1 |
| Dynamic NAT | 192.168.1.0/24 | Pool 203.0.113.2 – 203.0.113.3 (chỉ 2 địa chỉ) |
| PAT | 192.168.1.0/24 | 198.51.100.1 (địa chỉ G0/1) |
| Từ | Cổng | Đến | Cổng | Cáp |
|---|---|---|---|---|
| R1 | G0/0 | SW1 | Gi0/1 | Copper Straight-Through |
| SW1 | Fa0/1 – Fa0/3, Fa0/10 | PC1 – PC3, SRV-WEB | FastEthernet0 | Copper Straight-Through |
| R1 | G0/1 | ISP | G0/0 | Copper Cross-Over |
| ISP | G0/1 | PC-NGOAI | FastEthernet0 | Copper Cross-Over |
⚙️ Các bước thực hiện
⚙️ Bước 1 — Dựng sơ đồ và cấu hình nền
Kéo ra 2 router 2911, 1 switch 2960-24TT, 4 PC và 1 Server-PT. Nối cáp, đặt IP cho PC và máy chủ theo bảng. Dán cho hai router:
hostname R1
interface gigabitEthernet 0/0
ip address 192.168.1.1 255.255.255.0
no shutdown
interface gigabitEthernet 0/1
ip address 198.51.100.1 255.255.255.252
no shutdown
ip route 0.0.0.0 0.0.0.0 198.51.100.2
end
hostname ISP
interface gigabitEthernet 0/0
ip address 198.51.100.2 255.255.255.252
no shutdown
interface gigabitEthernet 0/1
ip address 192.0.2.1 255.255.255.0
no shutdown
ip route 203.0.113.0 255.255.255.248 198.51.100.1
end
Chú ý: ISP chỉ có route tới khối công cộng 203.0.113.0/29 của công ty — không có route nào tới 192.168.1.0/24. Ngoài thực tế cũng vậy: nhà mạng không định tuyến dải địa chỉ riêng.
⚙️ Bước 2 — Thử ra ngoài khi chưa có NAT
Từ PC1: ping 192.0.2.10 → thất bại. Gói đi tới PC-NGOAI được (R1 có default route), nhưng gói trả lời gửi về 192.168.1.11 thì ISP không biết đường nên bỏ. Muốn thấy rõ, chạy lại ở chế độ Simulation và theo dõi gói ICMP reply dừng ở ISP.
⚙️ Bước 3 — Đánh dấu inside / outside
R1(config)# interface gigabitEthernet 0/0
R1(config-if)# ip nat inside
R1(config-if)# interface gigabitEthernet 0/1
R1(config-if)# ip nat outside
⚙️ Bước 4 — Static NAT cho máy chủ web
R1(config)# ip nat inside source static 192.168.1.100 203.0.113.1
Trên PC-NGOAI: Desktop → Web Browser → http://203.0.113.1 → thấy trang mặc định của SRV-WEB. Người ngoài chỉ biết 203.0.113.1, không biết 192.168.1.100.
R1# show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 203.0.113.1:80 192.168.1.100:80 192.0.2.10:1025 192.0.2.10:1025
--- 203.0.113.1 192.168.1.100 --- ---
Dòng --- là ánh xạ tĩnh — luôn có trong bảng. Dòng tcp là phiên web vừa mở (số port nguồn 1025 trên máy bạn có thể khác).
⚙️ Bước 5 — Dynamic NAT với pool 2 địa chỉ
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)# ip nat pool CONGCONG 203.0.113.2 203.0.113.3 netmask 255.255.255.248
R1(config)# ip nat inside source list 1 pool CONGCONG
ACL 1 chọn ai được NAT; pool chọn dịch sang địa chỉ nào. Lần lượt ping 192.0.2.10 từ PC1, rồi PC2, rồi PC3:
- PC1 → thành công, được cấp 203.0.113.2.
- PC2 → thành công, được cấp 203.0.113.3.
- PC3 → thất bại: pool đã hết địa chỉ, router bỏ gói.
R1# show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 203.0.113.2:1 192.168.1.11:1 192.0.2.10:1 192.0.2.10:1
--- 203.0.113.2 192.168.1.11 --- ---
icmp 203.0.113.3:1 192.168.1.12:1 192.0.2.10:1 192.0.2.10:1
--- 203.0.113.3 192.168.1.12 --- ---
--- 203.0.113.1 192.168.1.100 --- ---
(Mỗi lần ping có 4 gói nên bạn sẽ thấy thêm các dòng icmp :2, :3, :4.) Xem thống kê:
R1# show ip nat statistics
...
Outside Interfaces: GigabitEthernet0/1
Inside Interfaces: GigabitEthernet0/0
...
Dynamic mappings:
-- Inside Source
access-list 1 pool CONGCONG refCount 2
pool CONGCONG: netmask 255.255.255.248
start 203.0.113.2 end 203.0.113.3
type generic, total addresses 2 , allocated 2 (100%), misses ...
Pool đã cấp hết 2/2 (100%); cột misses tăng mỗi khi có gói không xin được địa chỉ. Ánh xạ động mặc định giữ rất lâu (24 giờ nếu không dùng), nên PC3 sẽ phải chờ — trừ khi ta xoá bảng.
⚙️ Bước 6 — Chuyển sang PAT (NAT Overload)
Xoá các ánh xạ động đang có, gỡ quy tắc dynamic NAT, rồi khai báo PAT dùng địa chỉ của G0/1:
R1# clear ip nat translation *
R1# configure terminal
R1(config)# no ip nat inside source list 1 pool CONGCONG
R1(config)# ip nat inside source list 1 interface gigabitEthernet 0/1 overload
Ping 192.0.2.10 từ cả PC1, PC2, PC3 → tất cả thành công.
R1# show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 198.51.100.1:1 192.168.1.11:1 192.0.2.10:1 192.0.2.10:1
icmp 198.51.100.1:1024 192.168.1.12:1 192.0.2.10:1 192.0.2.10:1024
icmp 198.51.100.1:1025 192.168.1.13:1 192.0.2.10:1 192.0.2.10:1025
--- 203.0.113.1 192.168.1.100 --- ---
Cả ba PC cùng dùng 198.51.100.1. Router phân biệt bằng số port (với ICMP là mã định danh của gói ping): khi hai máy trùng số, router đổi sang một số khác còn trống. Số cụ thể trên máy bạn có thể khác. Static NAT của SRV-WEB vẫn giữ nguyên.
📎 Nếu muốn PAT trên chính pool công cộng thay vì địa chỉ interface: ip nat inside source list 1 pool CONGCONG overload. Khi đó 2 địa chỉ trong pool phục vụ được hàng nghìn phiên.
💾 Bước 7 — Lưu cấu hình
R1# copy running-config startup-config
ISP# copy running-config startup-config
🔍 Kiểm tra kết quả
| # | Kiểm tra | Lệnh / thao tác | Kết quả mong đợi |
|---|---|---|---|
| 1 | Inside / outside đúng cổng | show ip nat statistics |
Outside: G0/1 · Inside: G0/0 |
| 2 | Web công bố ra ngoài | PC-NGOAI mở http://203.0.113.1 |
Thấy trang của SRV-WEB |
| 3 | Dynamic NAT hết pool | Ping từ PC3 ở Bước 5 | Thất bại; pool allocated 2 (100%) |
| 4 | PAT | Ping 192.0.2.10 từ PC1–PC3 | Cả ba thành công |
| 5 | Bảng PAT | show ip nat translations |
Cả ba có Inside global 198.51.100.1, khác số port |
| 6 | ISP không biết dải riêng | show ip route trên ISP |
Chỉ có 203.0.113.0/29, không có 192.168.1.0 |
🛠️ 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ảng NAT trống, không ra được ngoài | Quên ip nat inside / ip nat outside, hoặc đặt ngược chiều |
show ip nat statistics → dòng Inside/Outside Interfaces |
| Có NAT nhưng một số máy không được dịch | ACL không bao trùm dải của máy đó (sai wildcard) | show access-lists; wildcard của /24 là 0.0.0.255 |
| Router báo mapping đang dùng khi gỡ lệnh NAT | Còn ánh xạ động trong bảng | clear ip nat translation * rồi gỡ lại |
| Người ngoài không vào được web dù có static NAT | ISP thiếu route về khối 203.0.113.0/29 | show ip route trên ISP |
| Máy thứ 3 trở đi không ra được ngoài | Dynamic NAT hết pool | Thêm overload hoặc mở rộng pool |
🏆 Thử thách mở rộng
- Từ PC-NGOAI ping
203.0.113.2sau khi đã chuyển sang PAT. Có thành công không? Vì sao? - Ở chế độ Simulation, cho PC2 ping 192.0.2.10 và mở PDU Details của gói ICMP trước và sau khi qua R1. Địa chỉ nguồn thay đổi thế nào? Gói trả lời từ PC-NGOAI mang địa chỉ đích nào?
👉 Gợi ý đáp án
Thử thách 1: Không. Sau khi xoá dynamic NAT, 203.0.113.2 không còn gắn với máy nào; R1 nhận gói nhưng không có ánh xạ để chuyển vào trong. Chỉ 203.0.113.1 (static) luôn mở từ ngoài vào.
Thử thách 2: Trước R1 (trong LAN), nguồn là 192.168.1.12. Sau R1 (trên link ISP), nguồn đã thành 198.51.100.1. Gói trả lời từ PC-NGOAI gửi tới 198.51.100.1; R1 tra bảng NAT theo số port rồi đổi đích lại thành 192.168.1.12 trước khi đẩy vào LAN.
💬 Hỏi & Đáp nhanh
❓ Inside local, inside global, outside local, outside global là gì?
✅ Inside là máy của mình, outside là máy bên ngoài. Local là địa chỉ nhìn từ phía trong, global là địa chỉ nhìn từ phía ngoài. Ví dụ PC1: inside local 192.168.1.11, inside global 198.51.100.1. Khi không NAT phía ngoài, outside local và outside global giống nhau.
❓ Tại sao SRV-WEB vẫn dùng 203.0.113.1 dù nằm trong ACL 1?
✅ Ánh xạ tĩnh được ưu tiên. Gói từ 192.168.1.100 khớp static NAT trước nên luôn ra ngoài với 203.0.113.1.
❓ Văn phòng nhỏ ngoài thực tế dùng loại nào?
✅ Hầu hết dùng PAT trên interface ra Internet, cộng vài static NAT (hoặc port forwarding) cho máy chủ cần truy cập từ ngoài.
📝 Bài tập đánh giá
Câu 1: Lệnh nào cho phép cả mạng 192.168.1.0/24 dùng chung địa chỉ của G0/1 để ra Internet?
- A.
ip nat inside source static 192.168.1.0 interface g0/1 - B.
ip nat inside source list 1 interface g0/1 overload - C.
ip nat outside source list 1 interface g0/1 - D.
ip nat pool 1 interface g0/1 overload
Câu 2: Pool dynamic NAT có 2 địa chỉ, không có overload. Máy thứ ba ra ngoài sẽ thế nào?
- A. Dùng chung địa chỉ với máy đầu tiên
- B. Ra ngoài bằng địa chỉ riêng
- C. Bị bỏ gói cho tới khi có địa chỉ trống
- D. Router tự chuyển sang PAT
👉 Đáp án
- Câu 1: B — PAT =
listchọn máy cần dịch +interfacelấy địa chỉ +overload. - Câu 2: C — Dynamic NAT là 1 đổi 1; hết pool thì gói bị bỏ.
💡 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 66: Dynamic NAT & PAT (NAT Overload) — cấu hình thực chiến | Mục lục khóa học CCNA | Bài 67: QoS cơ bản — vì sao video call cần ưu tiên hơn tải file |