Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • NAT Troubleshooting

    NAT Troubleshooting – Những lỗi “kinh điển” khiến NAT/PAT hoạt động sai và cách xử lý


    NAT là một trong những công nghệ mà gần như kỹ sư mạng nào cũng từng cấu hình. Nhìn qua thì có vẻ đơn giản: ánh xạ địa chỉ private sang public để thiết bị nội bộ đi ra Internet. Nhưng khi hệ thống không hoạt động, NAT lại trở thành một trong những thành phần gây đau đầu nhất trong quá trình troubleshooting.

    Chỉ cần sai một dòng lệnh nhỏ, thiếu một keyword, hoặc quảng bá route chưa đúng là traffic có thể “đi mà không về”.

    Dựa trên tài liệu gốc , chúng ta cùng phân tích cách troubleshooting NAT theo góc nhìn thực chiến.
    1. Cấu hình NAT/PAT mẫu


    Ví dụ một cấu hình Dynamic NAT kết hợp PAT:
    R1# show run

    interface FastEthernet1/0
    ip address 10.1.1.1 255.255.255.0
    ip nat inside
    !

    interface GigabitEthernet0/0
    ip address 203.0.113.1 255.255.255.248
    ip nat outside
    !

    ip nat pool OUTSIDE_POOL 203.0.113.3 203.0.113.6 netmask 255.255.255.248

    ip nat inside source list 1 pool OUTSIDE_POOL overload

    access-list 1 permit 10.1.1.0 0.0.0.255

    Ý nghĩa:
    • Mạng nội bộ: 10.1.1.0/24
    • Router inside interface: 10.1.1.1
    • Router outside interface: 203.0.113.1
    • NAT pool: 203.0.113.3 → 203.0.113.6
    • ACL 1 xác định host nào được NAT
    • overload cho phép PAT

    Thoạt nhìn đơn giản. Nhưng rất nhiều lỗi có thể xảy ra.
    2. Những lỗi cấu hình NAT phổ biến

    2.1 Inside/Outside interface cấu hình sai


    NAT hoạt động dựa trên việc router biết:
    • đâu là inside
    • đâu là outside

    Ví dụ đúng:
    ip nat inside


    ip nat outside

    Nếu đảo ngược:
    inside thành outside
    outside thành inside

    thì translation sẽ không bao giờ hoạt động đúng.

    Triệu chứng:
    • ping ra Internet thất bại
    • không thấy translation entry
    • routing vẫn đúng nhưng traffic fail

    Kiểm tra:
    show ip nat statistics
    2.2 NAT Pool cấu hình sai


    Ví dụ:
    ip nat pool OUTSIDE_POOL 203.0.113.3 203.0.113.6 netmask 255.255.255.248

    Nếu nhập sai:
    203.0.113.30

    hoặc netmask không đúng:
    255.255.255.0

    thì NAT mapping sẽ lỗi.

    Router vẫn nhận cấu hình nhưng translation không đúng như mong đợi.
    2.3 Public IP không reachable


    Đây là lỗi cực kỳ phổ biến.

    NAT chỉ đổi địa chỉ.

    Nó không tự động làm cho Internet biết đường quay lại.

    Ví dụ host nội bộ:
    10.1.1.10

    được NAT thành:
    203.0.113.4

    Remote server sẽ reply về:
    203.0.113.4

    Nhưng nếu ISP không biết route tới subnet này thì gói phản hồi bị drop.

    Triệu chứng:
    • translation xuất hiện
    • packet đi ra
    • không có return traffic

    Kiểm tra:
    show ip route

    và xác minh ISP đã quảng bá subnet public.
    2.4 ACL xác định sai inside local addresses


    ACL quyết định host nào được NAT.

    Ví dụ đúng:
    access-list 1 permit 10.1.1.0 0.0.0.255

    Nếu cấu hình nhầm:
    access-list 1 permit 10.1.2.0 0.0.0.255

    thì host thật:
    10.1.1.10

    sẽ không match ACL.

    Kết quả:

    Không NAT.
    2.5 Mapping ACL với pool sai


    Lệnh quan trọng:
    ip nat inside source list 1 pool OUTSIDE_POOL overload

    Đây là nơi “ghép đôi”:
    • ACL
    • NAT pool

    Nếu:
    • ACL sai
    • pool sai tên
    • mapping sai list number

    thì NAT fail.

    Ví dụ:
    ip nat inside source list 10 pool OUTSIDE_POOL overload

    trong khi ACL thật là:
    access-list 1 ...

    => mismatch.
    2.6 Thiếu keyword overload


    Nếu muốn PAT mà quên:
    overload

    thì router chỉ làm Dynamic NAT.

    Khác biệt:

    Dynamic NAT:
    • 1 private IP → 1 public IP

    PAT:
    • nhiều private IP → 1 hoặc vài public IP qua port translation

    Nếu số lượng host lớn mà không overload:

    pool sẽ nhanh chóng hết IP.

    Triệu chứng:
    • một vài host ra được
    • host còn lại fail

    3. Những vấn đề troubleshooting thực tế với NAT

    NAT over VPN


    Một số giao thức VPN kiểm tra checksum để đảm bảo packet integrity.

    Ví dụ IPsec.

    Trước NAT:
    Source IP = 10.1.1.10

    Sau NAT:
    Source IP = 203.0.113.4

    Checksum thay đổi.

    VPN peer có thể hiểu packet đã bị chỉnh sửa và reject.

    Đây là lý do NAT traversal (NAT-T) tồn tại.
    NAT che giấu IP thật


    Ví dụ:

    Client:
    10.1.1.25

    bị NAT thành:
    203.0.113.5

    Firewall log chỉ thấy:
    203.0.113.5

    Không thấy IP private gốc.

    Điều này làm troubleshooting end-to-end khó hơn rất nhiều.

    Lệnh hữu ích:
    show ip nat translations
    Ứng dụng không tương thích NAT


    Một số ứng dụng nhúng IP address vào payload.

    Ví dụ:
    • SIP
    • H.323
    • FTP active mode
    • một số VoIP protocol

    NAT chỉ sửa header Layer 3/4.

    Nếu payload vẫn chứa:
    10.1.1.10

    remote peer sẽ cố reply về địa chỉ private.

    => fail.
    NAT tạo thêm độ trễ


    NAT không miễn phí về mặt xử lý.

    Router phải:
    • kiểm tra translation table
    • tạo mapping
    • sửa packet header
    • tính lại checksum

    Nếu router xử lý hàng triệu flows:

    latency tăng rõ rệt.

    Đặc biệt với router CPU yếu.
    4. Các lệnh troubleshooting NAT quan trọng

    show ip nat translations


    Lệnh số 1.
    show ip nat translations

    Ví dụ:
    Pro Inside global Inside local Outside local Outside global
    tcp 192.168.1.27:23 192.168.0.27:23 192.168.1.50:1158 192.168.1.50:1158

    Ý nghĩa:
    • Inside local = IP private gốc
    • Inside global = IP sau NAT
    • Outside global = destination thật

    Nếu không thấy entry động:

    host chưa được NAT.
    clear ip nat translation *


    Xóa toàn bộ dynamic translations:
    clear ip nat translation *

    Hữu ích khi:
    • test lại từ đầu
    • reset stale sessions
    • xác minh translation mới

    Lưu ý:

    Không xóa static NAT entries.
    show ip nat statistics


    Rất hữu ích.
    show ip nat statistics

    Ví dụ:
    Total active translations : 4
    Outside interfaces:
    FastEthernet0/0
    Inside interfaces:
    FastEthernet0/1
    Hits: 10
    Misses: 0

    Quan sát:
    • interface inside/outside đúng chưa?
    • có translation không?
    • hits tăng không?

    Nếu misses tăng mạnh:

    traffic không match NAT rule.
    debug ip nat


    Lệnh mạnh nhưng nguy hiểm.
    debug ip nat

    Ví dụ:
    NAT: s=192.168.1.11->192.168.1.27

    Nghĩa là:
    192.168.1.11

    được dịch thành:
    192.168.1.27

    Nhược điểm:

    debug có thể làm router CPU tăng mạnh.

    Theo tài liệu, cần dùng cực kỳ cẩn thận vì có thể làm router crash

    Trong production:

    chỉ bật ngắn hạn.
    5. Quy trình troubleshooting NAT thực chiến


    Khi NAT lỗi, nên đi theo thứ tự:

    Bước 1:

    Kiểm tra routing
    show ip route

    Bước 2:

    Kiểm tra inside/outside
    show ip nat statistics

    Bước 3:

    Kiểm tra ACL
    show access-lists

    Bước 4:

    Kiểm tra translation
    show ip nat translations

    Bước 5:

    Clear translation
    clear ip nat translation *

    Bước 6:

    Debug nếu cần
    debug ip nat
    Kết luận cho bài NAT Troubleshooting


    NAT nhìn đơn giản nhưng khi sự cố xảy ra, nguyên nhân có thể nằm ở nhiều lớp:
    • interface role
    • ACL matching
    • NAT pool
    • overload
    • routing
    • ứng dụng
    • VPN interaction
    • performance bottleneck

    Một nguyên tắc thực chiến rất đáng nhớ:

    Nếu routing đúng mà traffic vẫn không đi, hãy kiểm tra NAT ngay lập tức.
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X