👉Troubleshooting NAT/PAT trên Cisco IOS – Vì sao Internet vẫn “chết” dù cấu hình NAT nhìn có vẻ đúng?
“Ping gateway được nhưng không ra Internet…”
Đây là một trong những lỗi kinh điển mà gần như bất kỳ Network Engineer nào cũng từng gặp khi triển khai NAT/PAT trên Cisco IOS.
Điều thú vị là trong rất nhiều case thực tế:
Và nguyên nhân đôi khi chỉ nằm ở đúng một dòng cấu hình:
ip nat inside
hoặc
ip nat outside
Hôm nay hãy cùng VnPro phân tích một case Troubleshooting NAT/PAT cực kỳ thực tế theo đúng tư duy của một CCIE Enterprise Infrastructure. NAT/PAT là gì?
NAT (Network Address Translation) là cơ chế cho phép chuyển đổi địa chỉ IP.
PAT (Port Address Translation) là dạng NAT phổ biến nhất hiện nay, cho phép:
Ví dụ thực tế:
Trong công ty:
192.168.1.10
192.168.1.11
192.168.1.12
đều có thể truy cập Internet thông qua:
203.113.10.5
PAT sẽ dùng số Port để phân biệt từng session.
Đây chính là lý do hàng trăm máy tính trong văn phòng vẫn có thể dùng Internet chỉ với một IP Public. Mô hình LAB
Trong bài LAB này có 3 thiết bị:
Mạng Inside:
192.168.12.0/24
Mạng Outside:
192.168.23.0/24
Vai trò:
Người dùng xác nhận:
Vậy bước đầu tiên của một Network Engineer nên làm gì?
Không phải kiểm tra NAT ngay.
Mà phải xác nhận kết nối cơ bản. Kiểm tra kết nối từ Router NAT
Đầu tiên thử ping Web Server:
NAT#ping 192.168.23.3
Kết quả:
Success rate is 100 percent
Điều này cho thấy:
Tiếp theo thử TCP kết nối port 80:
NAT#telnet 192.168.23.3 80
Kết quả:
Open
Điều này cực kỳ quan trọng.
Nó chứng minh rằng:
Tức là vấn đề không nằm ở routing hay application. Vậy lỗi nằm ở đâu?
Lúc này nghi ngờ lớn nhất chính là NAT.
Kiểm tra cấu hình NAT:
NAT#show running-config
Thoạt nhìn cấu hình có vẻ đúng:
ip nat inside source list 1 interface FastEthernet0/0 overload
ACL cũng đúng:
access-list 1 permit 192.168.12.0 0.0.0.255
Nhiều kỹ sư mới học sẽ dừng ở đây và nghĩ:
“NAT đúng rồi mà?”
Nhưng một CCIE sẽ kiểm tra tiếp:
Kiểm tra interface:
NAT#show running-config interface fa0/0
và
NAT#show running-config interface fa1/0
Phát hiện:
interface FastEthernet0/0
ip nat inside
và:
interface FastEthernet1/0
ip nat outside
Đây là lỗi nghiêm trọng.
Vì topology thực tế:
Nhưng inside/outside lại bị cấu hình ngược. Vì sao NAT Inside / Outside quan trọng đến vậy?
Trong Cisco IOS:
ip nat inside
xác định:
“Đây là phía mạng nội bộ.”
Còn:
ip nat outside
xác định:
“Đây là phía mạng bên ngoài.”
Nếu cấu hình sai:
Giống như bạn đưa nhầm cửa “IN” và “OUT” trong sân bay.
Hành khách vẫn tồn tại.
Nhưng luồng xử lý bị đảo ngược hoàn toàn. Cách khắc phục
Xóa cấu hình sai:
interface FastEthernet0/0
no ip nat inside
ip nat outside
Tiếp theo:
interface FastEthernet1/0
no ip nat outside
ip nat inside
Kiểm tra lại NAT Translation
Sau khi sửa:
NAT#show ip nat translations
Kết quả bắt đầu xuất hiện:
Inside global
Inside local
Outside local
Outside global
Điều này cho thấy NAT đã bắt đầu translation packet. Inside Local và Inside Global là gì?
Đây là phần khiến rất nhiều người học CCNA bị rối.
Ví dụ:
Máy người dùng:
192.168.12.10
Khi đi ra Internet bị NAT thành:
192.168.23.2
Lúc này:
Inside Local = 192.168.12.10
Inside Global = 192.168.23.2
Hiểu đơn giản:
Nếu nhiều máy dùng chung một Public IP thì Router phân biệt bằng cách nào?
PAT sẽ dùng:
Source Port
Ví dụ:
192.168.12.10:52311
192.168.12.11:52312
192.168.12.12:52313
đều có thể NAT ra:
203.113.10.5
Router sẽ thay đổi Port để theo dõi từng session.
Đây là lý do PAT còn được gọi là:
NAT Overload
Một điều rất quan trọng khi Troubleshoot NAT
Nếu NAT không hoạt động:
Đừng vội debug ACL hay firewall trước.
Hãy kiểm tra theo đúng thứ tự: Bước 1
Connectivity:
ping
telnet
Bước 2
Routing:
show ip route
Bước 3
NAT Translation:
show ip nat translations
Bước 4
Inside / Outside Interface
Đây là lỗi phổ biến nhất. Bước 5
ACL Match
Kiểm tra ACL có permit đúng subnet không. Cấu hình PAT hoàn chỉnh
access-list 1 permit 192.168.12.0 0.0.0.255
interface FastEthernet1/0
ip nat inside
interface FastEthernet0/0
ip nat outside
ip nat inside source list 1 interface FastEthernet0/0 overload
Vì sao NAT/PAT là chủ đề cực kỳ quan trọng?
NAT xuất hiện gần như ở mọi hệ thống:
Nếu không hiểu NAT sâu:
Bạn sẽ rất khó troubleshoot:
Điều quan trọng nhất khi học NAT/PAT không phải là học thuộc lệnh.
Mà là phải hiểu:
Đó mới là tư duy của một Network Engineer thực thụ.
Bạn đã từng gặp lỗi NAT/PAT nào “hack não” ngoài thực tế chưa?
Hãy chia sẻ cùng cộng đồng kỹ sư mạng VnPro nhé!
“Ping gateway được nhưng không ra Internet…”
Đây là một trong những lỗi kinh điển mà gần như bất kỳ Network Engineer nào cũng từng gặp khi triển khai NAT/PAT trên Cisco IOS.
Điều thú vị là trong rất nhiều case thực tế:
- Routing hoàn toàn đúng
- Interface UP
- Ping nội bộ OK
- ACL không chặn
- Nhưng người dùng vẫn không truy cập được Internet
Và nguyên nhân đôi khi chỉ nằm ở đúng một dòng cấu hình:
ip nat inside
hoặc
ip nat outside
Hôm nay hãy cùng VnPro phân tích một case Troubleshooting NAT/PAT cực kỳ thực tế theo đúng tư duy của một CCIE Enterprise Infrastructure. NAT/PAT là gì?
NAT (Network Address Translation) là cơ chế cho phép chuyển đổi địa chỉ IP.
PAT (Port Address Translation) là dạng NAT phổ biến nhất hiện nay, cho phép:
- Nhiều thiết bị nội bộ
- Dùng chung một địa chỉ Public IP
Ví dụ thực tế:
Trong công ty:
192.168.1.10
192.168.1.11
192.168.1.12
đều có thể truy cập Internet thông qua:
203.113.10.5
PAT sẽ dùng số Port để phân biệt từng session.
Đây chính là lý do hàng trăm máy tính trong văn phòng vẫn có thể dùng Internet chỉ với một IP Public. Mô hình LAB
Trong bài LAB này có 3 thiết bị:
- Host
- NAT Router
- Web Server
Mạng Inside:
192.168.12.0/24
Mạng Outside:
192.168.23.0/24
Vai trò:
- Host giả lập máy tính người dùng
- Web Server giả lập Internet/Web Service
- NAT Router thực hiện NAT/PAT
Người dùng xác nhận:
- IP Address đúng
- Default Gateway đúng
Vậy bước đầu tiên của một Network Engineer nên làm gì?
Không phải kiểm tra NAT ngay.
Mà phải xác nhận kết nối cơ bản. Kiểm tra kết nối từ Router NAT
Đầu tiên thử ping Web Server:
NAT#ping 192.168.23.3
Kết quả:
Success rate is 100 percent
Điều này cho thấy:
- Layer 3 hoạt động bình thường
- Routing OK
- Web Server reachable
Tiếp theo thử TCP kết nối port 80:
NAT#telnet 192.168.23.3 80
Kết quả:
Open
Điều này cực kỳ quan trọng.
Nó chứng minh rằng:
- Web Server đang hoạt động
- Không bị firewall chặn
- TCP session thiết lập thành công
Tức là vấn đề không nằm ở routing hay application. Vậy lỗi nằm ở đâu?
Lúc này nghi ngờ lớn nhất chính là NAT.
Kiểm tra cấu hình NAT:
NAT#show running-config
Thoạt nhìn cấu hình có vẻ đúng:
ip nat inside source list 1 interface FastEthernet0/0 overload
ACL cũng đúng:
access-list 1 permit 192.168.12.0 0.0.0.255
Nhiều kỹ sư mới học sẽ dừng ở đây và nghĩ:
“NAT đúng rồi mà?”
Nhưng một CCIE sẽ kiểm tra tiếp:
- Interface nào là inside?
- Interface nào là outside?
Kiểm tra interface:
NAT#show running-config interface fa0/0
và
NAT#show running-config interface fa1/0
Phát hiện:
interface FastEthernet0/0
ip nat inside
và:
interface FastEthernet1/0
ip nat outside
Đây là lỗi nghiêm trọng.
Vì topology thực tế:
- Fa1/0 nối LAN
- Fa0/0 nối Internet
Nhưng inside/outside lại bị cấu hình ngược. Vì sao NAT Inside / Outside quan trọng đến vậy?
Trong Cisco IOS:
ip nat inside
xác định:
“Đây là phía mạng nội bộ.”
Còn:
ip nat outside
xác định:
“Đây là phía mạng bên ngoài.”
Nếu cấu hình sai:
- Router không biết chiều translation
- NAT translation sẽ không hoạt động đúng
Giống như bạn đưa nhầm cửa “IN” và “OUT” trong sân bay.
Hành khách vẫn tồn tại.
Nhưng luồng xử lý bị đảo ngược hoàn toàn. Cách khắc phục
Xóa cấu hình sai:
interface FastEthernet0/0
no ip nat inside
ip nat outside
Tiếp theo:
interface FastEthernet1/0
no ip nat outside
ip nat inside
Kiểm tra lại NAT Translation
Sau khi sửa:
NAT#show ip nat translations
Kết quả bắt đầu xuất hiện:
Inside global
Inside local
Outside local
Outside global
Điều này cho thấy NAT đã bắt đầu translation packet. Inside Local và Inside Global là gì?
Đây là phần khiến rất nhiều người học CCNA bị rối.
Ví dụ:
Máy người dùng:
192.168.12.10
Khi đi ra Internet bị NAT thành:
192.168.23.2
Lúc này:
Inside Local = 192.168.12.10
Inside Global = 192.168.23.2
Hiểu đơn giản:
- Local = IP thật bên trong
- Global = IP đã bị NAT ra ngoài
Nếu nhiều máy dùng chung một Public IP thì Router phân biệt bằng cách nào?
PAT sẽ dùng:
Source Port
Ví dụ:
192.168.12.10:52311
192.168.12.11:52312
192.168.12.12:52313
đều có thể NAT ra:
203.113.10.5
Router sẽ thay đổi Port để theo dõi từng session.
Đây là lý do PAT còn được gọi là:
NAT Overload
Một điều rất quan trọng khi Troubleshoot NAT
Nếu NAT không hoạt động:
Đừng vội debug ACL hay firewall trước.
Hãy kiểm tra theo đúng thứ tự: Bước 1
Connectivity:
ping
telnet
Bước 2
Routing:
show ip route
Bước 3
NAT Translation:
show ip nat translations
Bước 4
Inside / Outside Interface
Đây là lỗi phổ biến nhất. Bước 5
ACL Match
Kiểm tra ACL có permit đúng subnet không. Cấu hình PAT hoàn chỉnh
access-list 1 permit 192.168.12.0 0.0.0.255
interface FastEthernet1/0
ip nat inside
interface FastEthernet0/0
ip nat outside
ip nat inside source list 1 interface FastEthernet0/0 overload
Vì sao NAT/PAT là chủ đề cực kỳ quan trọng?
NAT xuất hiện gần như ở mọi hệ thống:
- Enterprise Network
- Firewall
- SD-WAN
- VPN
- Internet Edge
- Data Center
- Cloud Connectivity
Nếu không hiểu NAT sâu:
Bạn sẽ rất khó troubleshoot:
- Internet access
- VPN
- Firewall policy
- Port forwarding
- Voice traffic
- DMZ
- Hybrid Cloud
Điều quan trọng nhất khi học NAT/PAT không phải là học thuộc lệnh.
Mà là phải hiểu:
- Packet thay đổi như thế nào
- Router xử lý translation ra sao
- Inside và Outside hoạt động thế nào
- PAT dùng Port để phân biệt session như thế nào
- Vì sao chỉ sai một interface mà toàn bộ Internet có thể “sập”
Đó mới là tư duy của một Network Engineer thực thụ.
Bạn đã từng gặp lỗi NAT/PAT nào “hack não” ngoài thực tế chưa?
Hãy chia sẻ cùng cộng đồng kỹ sư mạng VnPro nhé!