NAT/PAT Troubleshooting – 10 Vấn Đề Thường Gặp Mà Kỹ Sư Mạng Cần Biết
Trường hợp người dùng báo rằng:
PAT là gì và vì sao nó quan trọng?
NAT truyền thống không mở rộng tốt trong môi trường có nhiều thiết bị nội bộ truy cập Internet cùng lúc. Nếu mỗi địa chỉ private cần một địa chỉ public riêng thì doanh nghiệp sẽ nhanh chóng cạn kiệt địa chỉ IPv4. Để giải quyết vấn đề này, Cisco sử dụng Port Address Translation (PAT). PAT cho phép:
Máy tính A:
10.1.1.10:65500
Máy tính B:
10.1.1.20:65520
Sau khi đi qua router NAT:
203.0.113.1:65500
203.0.113.1:65520
Cả hai đều sử dụng chung địa chỉ public:
203.0.113.1
Router sẽ theo dõi các port trong bảng NAT để biết gói tin phản hồi thuộc về thiết bị nào, máy tính A hay máy tính B (nhờ vào giá trị port kèm theo).
4 Thuật Ngữ NAT Mà CCNA/CCNP Bắt Buộc Phải Thuộc
Inside Local
Địa chỉ thật của thiết bị bên trong mạng. Ví dụ: 10.1.1.10
Đây là địa chỉ mà PC đang sử dụng trong mạng LAN.
Inside Global
Địa chỉ public mà NAT dịch sang. Ví dụ: 203.0.113.1
Đây là địa chỉ mà Internet nhìn thấy.
Outside Global
Địa chỉ thật của máy chủ bên ngoài. Ví dụ: 192.0.2.1
Có thể là Web Server trên Internet.
Outside Local
Địa chỉ của thiết bị bên ngoài khi nhìn từ phía mạng nội bộ.
Trong đa số trường hợp: Outside Local = Outside Global
Do phía ngoài thường không thực hiện NAT.
6 Lỗi Cấu Hình NAT/PAT Thường Gặp
1. Cấu hình sai Inside và Outside Interface
Một lỗi rất phổ biến. Ví dụ:
ip nat inside
ip nat outside
Nếu đặt nhầm vai trò cho interface, NAT sẽ không hoạt động dù mọi thứ khác đều đúng.
2. NAT Pool cấu hình sai
Ví dụ:
ip nat pool OUTSIDE_POOL 203.0.113.3 203.0.113.6
Nếu dải địa chỉ không đúng hoặc subnet mask sai thì việc dịch địa chỉ sẽ thất bại.
3. Public IP không được quảng bá ra Internet
NAT có thể hoạt động cục bộ nhưng lưu lượng phản hồi không quay trở lại. Nguyên nhân có thể là do hai nguyên nhân sau:
4. ACL chọn sai địa chỉ cần NAT
ACL dùng để xác định các địa chỉ private được phép dịch. Ví dụ:
access-list 1 permit 10.1.1.0 0.0.0.255
Nếu ACL không khớp với subnet thực tế thì sẽ không có bản dịch nào được tạo.
5. ACL và NAT Pool ghép sai
Lệnh sau kết nối ACL với Pool:
ip nat inside source list 1 pool OUTSIDE_POOL
Nếu tham chiếu nhầm ACL hoặc Pool, NAT sẽ không hoạt động đúng.
6. Quên từ khóa Overload
Đây là lỗi kinh điển của người mới học NAT.
Cấu hình Sai:
ip nat inside source list 1 pool OUTSIDE_POOL
Cấu hình Đúng:
ip nat inside source list 1 pool OUTSIDE_POOL overload
Nếu trong cấu hình không có từ khóa overload thì PAT sẽ không hoạt động.
4 Sự Cố NAT Thường Gặp Trong Thực Tế
NAT và VPN xung đột với nhau
Một số giao thức VPN như IPsec kiểm tra checksum để xác thực tính toàn vẹn dữ liệu. Khi NAT thay đổi địa chỉ IP: giá trị Checksum của gói tin IP bị thay đổi. Lúc này VPN trên router có thể coi gói tin đã bị sửa đổi và từ chối xử lý. Đây là lý do NAT-T (NAT Traversal) được sinh ra. (Sẽ trình bày về NAT-T trong dịp khác).
NAT che giấu địa chỉ IP thật
Điều này giúp tiết kiệm địa chỉ IPv4 nhưng gây khó khăn khi troubleshooting. Ví dụ Log Web Server chỉ nhìn thấy địa chỉ 203.0.113.1 thay vì địa chỉ 10.1.1.10. Một trong những lệnh đầu tiên cần thực hiện để kiểm tra là:
show ip nat translations
để xác nhận bản dịch có tồn tại hay không.
Ứng dụng không tương thích NAT
Một số ứng dụng VoIP, SIP, RTP, Ứng dụng nhúng IP vào payload
có thể gặp sự cố khi đi qua NAT. Lý do là NAT chỉ thay đổi phần Header, còn địa chỉ IP nằm trong Payload vẫn giữ nguyên.
Thiết bị ở đầu xa có thể cố gắng phản hồi tới địa chỉ private và kết nối thất bại.
NAT làm tăng độ trễ
Mỗi gói tin đi qua NAT phải được router Kiểm tra, Tra cứu bảng NAT, Sửa đổi địa chỉ, Cập nhật phiên dịch... Khi router phải xử lý hàng trăm nghìn phiên đồng thời thì CPU tăng, độ trễn của mạng Latency tăng. Độ trễ này đặc biệt dễ nhận thấy trên các thiết bị đang thực hiện số lượng lớn bản dịch NAT.
Checklist Troubleshooting NAT Nhanh
Khi NAT/PAT không hoạt động, hãy kiểm tra theo thứ tự:
Trường hợp người dùng báo rằng:
- Ping được Gateway nhưng không vào Internet được.
- VPN kết nối nhưng không truyền dữ liệu.
- Một số ứng dụng hoạt động, một số ứng dụng lại lỗi.
- NAT đã cấu hình nhưng bảng dịch địa chỉ không xuất hiện.
PAT là gì và vì sao nó quan trọng?
NAT truyền thống không mở rộng tốt trong môi trường có nhiều thiết bị nội bộ truy cập Internet cùng lúc. Nếu mỗi địa chỉ private cần một địa chỉ public riêng thì doanh nghiệp sẽ nhanh chóng cạn kiệt địa chỉ IPv4. Để giải quyết vấn đề này, Cisco sử dụng Port Address Translation (PAT). PAT cho phép:
- Nhiều địa chỉ private dùng chung một địa chỉ public.
- Phân biệt các kết nối bằng số hiệu cổng (Port Number).
- Tiết kiệm đáng kể địa chỉ IPv4 công cộng.
Máy tính A:
10.1.1.10:65500
Máy tính B:
10.1.1.20:65520
Sau khi đi qua router NAT:
203.0.113.1:65500
203.0.113.1:65520
Cả hai đều sử dụng chung địa chỉ public:
203.0.113.1
Router sẽ theo dõi các port trong bảng NAT để biết gói tin phản hồi thuộc về thiết bị nào, máy tính A hay máy tính B (nhờ vào giá trị port kèm theo).
4 Thuật Ngữ NAT Mà CCNA/CCNP Bắt Buộc Phải Thuộc
Inside Local
Địa chỉ thật của thiết bị bên trong mạng. Ví dụ: 10.1.1.10
Đây là địa chỉ mà PC đang sử dụng trong mạng LAN.
Inside Global
Địa chỉ public mà NAT dịch sang. Ví dụ: 203.0.113.1
Đây là địa chỉ mà Internet nhìn thấy.
Outside Global
Địa chỉ thật của máy chủ bên ngoài. Ví dụ: 192.0.2.1
Có thể là Web Server trên Internet.
Outside Local
Địa chỉ của thiết bị bên ngoài khi nhìn từ phía mạng nội bộ.
Trong đa số trường hợp: Outside Local = Outside Global
Do phía ngoài thường không thực hiện NAT.
6 Lỗi Cấu Hình NAT/PAT Thường Gặp
1. Cấu hình sai Inside và Outside Interface
Một lỗi rất phổ biến. Ví dụ:
ip nat inside
ip nat outside
Nếu đặt nhầm vai trò cho interface, NAT sẽ không hoạt động dù mọi thứ khác đều đúng.
2. NAT Pool cấu hình sai
Ví dụ:
ip nat pool OUTSIDE_POOL 203.0.113.3 203.0.113.6
Nếu dải địa chỉ không đúng hoặc subnet mask sai thì việc dịch địa chỉ sẽ thất bại.
3. Public IP không được quảng bá ra Internet
NAT có thể hoạt động cục bộ nhưng lưu lượng phản hồi không quay trở lại. Nguyên nhân có thể là do hai nguyên nhân sau:
- ISP không biết đường đến dải IP đó.
- Route quảng bá bị thiếu.
4. ACL chọn sai địa chỉ cần NAT
ACL dùng để xác định các địa chỉ private được phép dịch. Ví dụ:
access-list 1 permit 10.1.1.0 0.0.0.255
Nếu ACL không khớp với subnet thực tế thì sẽ không có bản dịch nào được tạo.
5. ACL và NAT Pool ghép sai
Lệnh sau kết nối ACL với Pool:
ip nat inside source list 1 pool OUTSIDE_POOL
Nếu tham chiếu nhầm ACL hoặc Pool, NAT sẽ không hoạt động đúng.
6. Quên từ khóa Overload
Đây là lỗi kinh điển của người mới học NAT.
Cấu hình Sai:
ip nat inside source list 1 pool OUTSIDE_POOL
Cấu hình Đúng:
ip nat inside source list 1 pool OUTSIDE_POOL overload
Nếu trong cấu hình không có từ khóa overload thì PAT sẽ không hoạt động.
4 Sự Cố NAT Thường Gặp Trong Thực Tế
NAT và VPN xung đột với nhau
Một số giao thức VPN như IPsec kiểm tra checksum để xác thực tính toàn vẹn dữ liệu. Khi NAT thay đổi địa chỉ IP: giá trị Checksum của gói tin IP bị thay đổi. Lúc này VPN trên router có thể coi gói tin đã bị sửa đổi và từ chối xử lý. Đây là lý do NAT-T (NAT Traversal) được sinh ra. (Sẽ trình bày về NAT-T trong dịp khác).
NAT che giấu địa chỉ IP thật
Điều này giúp tiết kiệm địa chỉ IPv4 nhưng gây khó khăn khi troubleshooting. Ví dụ Log Web Server chỉ nhìn thấy địa chỉ 203.0.113.1 thay vì địa chỉ 10.1.1.10. Một trong những lệnh đầu tiên cần thực hiện để kiểm tra là:
show ip nat translations
để xác nhận bản dịch có tồn tại hay không.
Ứng dụng không tương thích NAT
Một số ứng dụng VoIP, SIP, RTP, Ứng dụng nhúng IP vào payload
có thể gặp sự cố khi đi qua NAT. Lý do là NAT chỉ thay đổi phần Header, còn địa chỉ IP nằm trong Payload vẫn giữ nguyên.
Thiết bị ở đầu xa có thể cố gắng phản hồi tới địa chỉ private và kết nối thất bại.
NAT làm tăng độ trễ
Mỗi gói tin đi qua NAT phải được router Kiểm tra, Tra cứu bảng NAT, Sửa đổi địa chỉ, Cập nhật phiên dịch... Khi router phải xử lý hàng trăm nghìn phiên đồng thời thì CPU tăng, độ trễn của mạng Latency tăng. Độ trễ này đặc biệt dễ nhận thấy trên các thiết bị đang thực hiện số lượng lớn bản dịch NAT.
Checklist Troubleshooting NAT Nhanh
Khi NAT/PAT không hoạt động, hãy kiểm tra theo thứ tự:
- Interface đã khai báo ip nat inside và ip nat outside chưa?
- ACL có match đúng subnet không?
- NAT Pool có đúng địa chỉ public không?
- Pool có được route/quảng bá ra Internet không?
- ACL và Pool đã liên kết đúng chưa?
- Có thiếu từ khóa overload không?
- Kiểm tra bảng NAT bằng:
- Kiểm tra thống kê NAT:
- Nếu có VPN, kiểm tra NAT-T.
- Nếu là VoIP hoặc ứng dụng đặc biệt, xem xét khả năng không tương thích với NAT.