← Về danh sách
Mạng
#NAT#PAT#IPv4고갈#CGN#NAT64
Cập nhật lần cuối · 2026-10-28

NAT (Network Address Translation, Dịch địa chỉ mạng)

1. Tổng quan

A. Định nghĩa

NAT (Network Address Translation) là kỹ thuật, khi một gói tin IP đi qua thiết bị biên như router hay firewall, viết lại địa chỉ IP nguồn hoặc đích (và cổng) trong tiêu đề thành một giá trị khác, qua đó kết nối các không gian địa chỉ khác nhau (thường là mạng riêng và mạng công cộng). Thiết bị dịch ghi lại quan hệ tương ứng giữa địa chỉ gốc và địa chỉ đã dịch vào bảng dịch (NAT table), rồi khôi phục ngược lại địa chỉ của gói tin phản hồi trở về để trung gian hóa giao tiếp hai chiều.

NAT ban đầu được tạo ra để đối phó với ràng buộc thực tế là cạn kiệt địa chỉ IPv4, nhưng ngày nay nó đã trở thành phương tiện cốt lõi cho việc che giấu mạng nội bộ và bảo mật biên, vượt ra ngoài việc chỉ tiết kiệm địa chỉ. Vì có thể ẩn hàng trăm đến hàng nghìn host riêng sau một IP công cộng duy nhất, cả hộ gia đình, doanh nghiệp lẫn nhà mạng đều đạt đến một cấu trúc mà trên thực tế không thể truy cập Internet nếu thiếu NAT. RFC 2663 và 3022 đã chuẩn hóa khái niệm và thuật ngữ, và đặc biệt khi phương thức dịch cả cổng (NAPT/PAT) trở nên phổ biến, ràng buộc "một IP công cộng = một host" đã bị phá vỡ.

B. Bối cảnh ra đời và sự cần thiết

Lý do trực tiếp nhất khiến NAT trở nên cần thiết là sự cạn kiệt mang tính cấu trúc của địa chỉ IPv4. IPv4 chỉ biểu diễn được khoảng 4,3 tỷ địa chỉ (2³²), nhưng khi số thiết bị đầu cuối kết nối Internet bùng nổ, sự cạn kiệt đã được dự báo ngay từ thập niên 1990, và các khối địa chỉ cấp cao nhất của IANA đã cạn vào năm 2011. NAT đã giảm đáng kể mức tiêu thụ địa chỉ công cộng bằng cách tái sử dụng tự do trong nội bộ các dải địa chỉ riêng do RFC 1918 định nghĩa (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) và chỉ dịch sang một số ít IP công cộng khi ra ngoài.

Bối cảnh thứ hai là che giấu cấu trúc mạng nội bộ và kiểm soát biên. Khi lưu lượng đi qua NAT, bên ngoài không thấy được cấu trúc địa chỉ thực của các host nội bộ mà chỉ thấy một IP công cộng duy nhất của thiết bị dịch, khiến kẻ tấn công khó chỉ đích và quét trực tiếp các thiết bị đầu cuối nội bộ. Đặc biệt trong môi trường PAT, các phiên vào từ ngoài vào trong bị chặn trừ khi được mở tường minh, và tính chất "chặn theo mặc định" này cung cấp hiệu ứng biên tuyến đầu bổ trợ cho firewall.

Bối cảnh thứ ba là tính độc lập của hệ địa chỉ và sự dễ dàng di chuyển. Dùng địa chỉ riêng cho phép tổ chức giữ nguyên địa chỉ nội bộ bất kể thay đổi địa chỉ công cộng bên ngoài khi đổi ISP hay sáp nhập hai tổ chức, và ngược lại NAT có thể tránh xung đột địa chỉ khi kết nối hai mạng dùng dải riêng trùng nhau. Như vậy NAT đồng thời cung cấp ba giá trị tiết kiệm địa chỉ, bảo mật và linh hoạt vận hành, trở thành nền tảng ẩn của sự phát triển Internet.

C. Mục tiêu và phạm vi áp dụng

Mục tiêu triển khai NAT là, thứ nhất, tiết kiệm và chia sẻ địa chỉ IPv4 công cộng; thứ hai, củng cố bảo mật biên thông qua che giấu cấu trúc nội bộ; thứ ba, bảo đảm độc lập vận hành dựa trên địa chỉ riêng. Phạm vi áp dụng trải khắp gần như mọi điểm có tồn tại biên riêng/công cộng — router gia đình, firewall biên doanh nghiệp, cổng đi ra (outbound gateway) của trung tâm dữ liệu và cloud, cho tới thiết bị chia sẻ quy mô lớn của nhà mạng (CGN). Tuy nhiên, NAT làm hỏng tính trong suốt đầu-cuối (end-to-end transparency) và gây lỗi cho P2P, VoIP và một số giao thức, nên chỉ có thể áp dụng đúng khi hiểu đầy đủ cả giới hạn lẫn kỹ thuật vượt qua (traversal) của nó.

2. Nguyên lý hoạt động và thành phần của NAT

A. Cấu trúc tổng thể

Cấu trúc tổng thể của NAT được tóm lược thành luồng trong đó gói tin từ mạng riêng được dịch sang địa chỉ công cộng tại thiết bị biên và gửi ra Internet, còn phản hồi được khôi phục về host gốc thông qua bảng dịch. Thiết bị dịch có giao diện trong (inside) và ngoài (outside), và với mỗi phiên đăng ký vào bảng một cặp (IP·cổng nội bộ ↔ IP·cổng công cộng).

flowchart LR
    subgraph INSIDE["Mạng riêng (Inside, RFC 1918)"]
        H1["Host A(192.168.0.10)"]
        H2["Host B(192.168.0.11)"]
    end
    H1 --> NAT
    H2 --> NAT
    NAT["Thiết bị NAT(router/firewall biên)"]
    TBL[("Bảng dịch(ánh xạ phiên)")] -.->|"tra cứu·khôi phục ánh xạ"| NAT
    NAT -->|"thay IP nguồn bằng IP công cộng"| INET["Internet(Outside)"]
    INET -->|"gói tin phản hồi"| NAT
    NAT -.->|"khôi phục đích về host gốc"| H1

Việc đặt bảng dịch (ánh xạ phiên) ở trung tâm là điểm cốt lõi. Là thiết bị duy trì trạng thái (stateful), NAT phải tạo ánh xạ khi thấy gói tin đi ra đầu tiên và có thể khôi phục phản hồi, nên vòng đời, kích thước và chính sách của bảng này chi phối hiệu năng và bảo mật của NAT.

B. Vòng đời xử lý dịch và thành phần

Vòng đời của một phiên đi qua NAT, trình bày dưới dạng chuỗi lấy PAT (dịch cổng) làm ví dụ, như sau. Ngay cả khi các host nội bộ khác nhau, việc gán cổng khác nhau để chia sẻ một IP công cộng duy nhất chính là bản chất của PAT.

sequenceDiagram
    participant A as Host A(192.168.0.10:3500)
    participant N as Thiết bị NAT/PAT
    participant S as Máy chủ Web(203.0.113.9:443)
    A->>N: "SYN nguồn=192.168.0.10:3500"
    N->>N: "tạo ánh xạ: nội bộ 10:3500 -> công cộng 1.1.1.1:40001"
    N->>S: "SYN nguồn được thay bằng 1.1.1.1:40001"
    S-->>N: "SYN-ACK đích=1.1.1.1:40001"
    N->>N: "nhận diện host gốc qua tra cứu bảng"
    N-->>A: "SYN-ACK đích=192.168.0.10:3500 được khôi phục"
    Note over N: "ánh xạ được thu hồi khi phiên đóng·hết thời gian chờ"

Có bốn thành phần cốt lõi. Giao diện trong/ngoài (inside/outside) là biên làm chuẩn cho việc dịch, còn nhóm địa chỉ (NAT pool) là tập hợp địa chỉ công cộng dùng cho việc dịch. Bảng dịch (translation table) là kho trạng thái lưu các ánh xạ và bộ định thời theo từng phiên, còn ALG (Application Layer Gateway) là mô-đun bổ trợ viết lại cả phần thân cho các giao thức mang IP·cổng bên trong payload như FTP và SIP.

C. Hoạt động chi tiết của dịch địa chỉ·cổng

Các trường mà NAT thay đổi bao gồm không chỉ địa chỉ trong tiêu đề IP mà còn checksum cần tính lại tương ứng, và với PAT là cả số cổng trong tiêu đề TCP/UDP. Vì checksum IP và checksum TCP/UDP được tính bao gồm địa chỉ và cổng, thiết bị NAT phải tính lại (hoặc cập nhật gia tăng) chúng sau khi dịch, nếu không gói tin sẽ bị loại bỏ. Việc gán cổng thường được chọn từ các cổng khả dụng trên 1024, và một IP công cộng về lý thuyết có thể phân biệt số phiên đồng thời tương đương khoảng hơn 60.000 cổng của nó, song trên thực tế ít hơn do bộ định thời, xung đột và cổng dành riêng.

Các giao thức không có cổng như ICMP dùng Query ID làm định danh thay cho cổng để ánh xạ, chính vì vậy ping và traceroute cũng hoạt động đúng trong môi trường PAT. Trong khi đó, mỗi ánh xạ có một thời gian chờ nhàn rỗi (idle timeout) và bị thu hồi khi không có lưu lượng trong một khoảng thời gian; nếu giá trị này quá ngắn thì các phiên nhàn rỗi bị ngắt, còn quá dài thì bảng bị bão hòa, nên điều chỉnh phù hợp theo từng loại TCP/UDP là mấu chốt vận hành.

3. Các loại NAT

A. NAT tĩnh và NAT động

NAT được chia lớn theo phương thức ánh xạ thành tĩnh, động và PAT. NAT tĩnh (Static NAT) cố định một IP nội bộ với một IP công cộng theo quan hệ 1:1 vĩnh viễn, dùng khi bên ngoài phải luôn truy cập máy chủ nội bộ bằng cùng một địa chỉ công cộng (công bố máy chủ Web·mail). Nó không tiết kiệm được địa chỉ, nhưng vì ánh xạ cố định và luồng vào có thể dự đoán, đây là phương thức chuẩn để công bố máy chủ DMZ.

NAT động (Dynamic NAT) đặt một nhóm địa chỉ công cộng và mượn tạm thời một địa chỉ theo 1:1 từ nhóm mỗi khi host nội bộ ra ngoài. Nó chỉ cần số địa chỉ công cộng bằng số host ra ngoài đồng thời nên hiệu quả hơn tĩnh, nhưng một khi nhóm cạn thì không thể kết nối thêm, và vì ánh xạ thay đổi mỗi lần nên bên ngoài không thể chỉ đích một host nội bộ cụ thể để truy cập.

B. PAT (NAPT) và chia sẻ giữa nhiều host

PAT (Port Address Translation, NAPT) là phương thức phổ biến nhất ngày nay, ánh xạ đồng thời nhiều host nội bộ bằng cách gán cổng khác nhau trên một IP công cộng duy nhất. Việc router gia đình kết nối hàng chục thiết bị đầu cuối ra Internet qua một IP công cộng duy nhất do ISP cấp chính là PAT, còn gọi là "quá tải IP (IP overloading)". Hiệu quả tiết kiệm địa chỉ của nó lớn nhất, nhưng vì các phiên vào từ ngoài vào trong bị chặn theo mặc định, công bố máy chủ đòi hỏi cấu hình riêng chuyển tiếp cổng (ánh xạ tĩnh).

flowchart TB
    START["nhận gói tin đi ra"] --> Q1{"đích có phải máy chủ nội bộ được công bố?"}
    Q1 -->|"có(vào·tĩnh)"| STATIC["áp dụng ánh xạ tĩnh/chuyển tiếp cổng"]
    Q1 -->|"không(ra)"| Q2{"phương thức dịch?"}
    Q2 -->|"1:1 cố định"| SNAT["ánh xạ NAT tĩnh"]
    Q2 -->|"1:1 tạm từ nhóm"| DNAT["cấp phát NAT động"]
    Q2 -->|"1 IP + nhiều cổng"| PAT["gán cổng PAT"]
    SNAT --> WRITE["ghi vào bảng·tính lại checksum"]
    DNAT --> WRITE
    PAT --> WRITE
    STATIC --> WRITE
    WRITE --> OUT["gửi ra mạng công cộng"]

C. So sánh các phân loại chi tiết của NAT

PAT hành xử khác nhau tùy mức độ ràng buộc ánh xạ vào địa chỉ·cổng bên ngoài, và khác biệt này chi phối khả năng vượt qua của P2P·VoIP. Bảng dưới đây tổ chức đặc tính của từng loại theo các góc nhìn tiết kiệm địa chỉ, luồng vào và ứng dụng tiêu biểu.

Phân loại NAT tĩnh NAT động PAT (NAPT)
Quan hệ ánh xạ 1:1 cố định 1:1 tạm(nhóm) N:1(phân biệt bằng cổng)
Tiết kiệm địa chỉ không trung bình rất lớn
Truy cập vào luôn có thể chỉ khi đang ánh xạ chặn mặc định(cần chuyển tiếp)
Ứng dụng tiêu biểu công bố máy chủ·DMZ truy cập ngoài ngắt quãng chia sẻ gia đình·doanh nghiệp
Dịch cổng không không có

Khác biệt cốt lõi là NAT tĩnh phù hợp với "máy chủ phải công bố" còn PAT phù hợp với "nhiều thiết bị đầu cuối cần gửi ra trong khi vẫn ẩn". NAT động nằm ở giữa, nhưng vì không có chia sẻ cổng nên không tiết kiệm nhiều như PAT, nên trong thực tế cấu hình kết hợp tĩnh cho máy chủ và PAT cho mạng người dùng là phổ biến.

4. Giới hạn của NAT và kỹ thuật vượt qua (Traversal)

Vì NAT làm hỏng tính kết nối đầu-cuối, nó gây lỗi căn bản trong các ứng dụng mà bên ngoài khởi xướng kết nối vào trong trước. Đặc biệt với chia sẻ tệp P2P, VoIP (SIP/RTP), game trực tuyến và hội nghị truyền hình — nơi cả hai phía phải thiết lập phiên trực tiếp — nếu cả hai đều ở sau PAT thì không thể biết địa chỉ·cổng thực của đối phương và kết nối không hình thành được. Các kỹ thuật chuẩn để giải quyết điều này là STUN, TURN và ICE.

STUN (Session Traversal Utilities for NAT) cho phép host nội bộ truy vấn một máy chủ STUN bên ngoài để biết "IP·cổng công cộng mà tôi được nhìn thấy từ bên ngoài", nhờ đó báo địa chỉ ấy cho đối phương và thử kết nối trực tiếp. Tuy nhiên, trong các môi trường như NAT đối xứng (symmetric) gán cổng khác nhau theo từng đích, địa chỉ biết được qua STUN không được dùng trong giao tiếp thực tế và sẽ thất bại; khi đó một máy chủ TURN (Traversal Using Relays around NAT) chuyển tiếp (relay) lưu lượng để vòng tránh. ICE (Interactive Connectivity Establishment) là khung thu thập tất cả ứng viên — kết nối trực tiếp, STUN và TURN — rồi tự động chọn đường khả thi; WebRTC đã áp dụng nó để cho phép giao tiếp thời gian thực giữa các trình duyệt.

Trong khi đó, các giao thức mang IP·cổng trong payload ở tầng ứng dụng như FTP (chế độ chủ động) và SIP đòi hỏi ALG viết lại cả phần thân mới hoạt động, còn router gia đình tự động hóa việc vượt qua bằng các giao thức như UPnP IGD·NAT-PMP·PCP cho phép thiết bị đầu cuối tự yêu cầu chuyển tiếp cổng. Như vậy, việc vượt qua NAT phải được hiểu như một cấu trúc trong đó "ứng dụng và các giao thức bổ trợ khôi phục tính trong suốt mà NAT đã phá vỡ".

5. Chuyên sâu: NAT quy mô lớn (CGN) và xu hướng chuyển đổi IPv6

A. CGN cấp nhà mạng (Carrier-Grade NAT)

Khi cạn kiệt IPv4 trầm trọng hơn và nhà mạng không còn có thể cấp IP công cộng cho thuê bao, họ đã triển khai CGN (hoặc LSN, Large Scale NAT), đặt một lớp NAT thứ hai bên trong ISP. Đây là cấu trúc NAT kép trong đó CGN của ISP (NAT thứ hai) lại dịch lưu lượng đã được router nhà thuê bao (NAT thứ nhất) dịch, và tại đây thuê bao được cấp dải chia sẻ 100.64.0.0/10 mà RFC 6598 phân bổ riêng cho mục đích này. CGN cho phép hàng chục nghìn thuê bao chia sẻ một số ít IP công cộng, tiết kiệm địa chỉ đến mức cực hạn, nhưng khiến luồng vào theo từng thuê bao trở nên bất khả thi và, do nhiều bên chia sẻ một IP công cộng, sinh ra tác dụng phụ là truy vết hành vi lạm dụng (ghi nhật ký) và chặn·quản lý uy tín dựa trên IP trở nên khó khăn. Vì vậy CGN đòi hỏi cấp phát theo đơn vị khối cổng cùng với ghi nhật ký chi tiết, và RFC 6888 quy định các yêu cầu CGN này.

B. Chuyển đổi IPv6 và NAT64/DNS64

NAT là một giải pháp tạm thời thành công đã kéo dài tuổi thọ của IPv4, nhưng lời giải căn bản là chuyển đổi sang IPv6, với không gian địa chỉ trên thực tế vô hạn (2¹²⁸). IPv6 có thể cấp địa chỉ công cộng cho mọi thiết bị đầu cuối nên về nguyên tắc NAT là không cần thiết, nhưng trong giai đoạn chuyển đổi nảy sinh tình huống hỗn hợp trong đó thiết bị chỉ IPv6 phải giao tiếp với máy chủ chỉ IPv4. Thứ trung gian hóa điều này là NAT64 (RFC 6146), vốn dịch gói tin IPv6 sang IPv4 và thường được dùng cùng DNS64 (RFC 6147) để tổng hợp một địa chỉ IPv4 thành địa chỉ IPv6 trả về cho thiết bị. Dù vậy, vì có nhu cầu dùng NAT ngay cả trong IPv6 nhằm mục đích che giấu cấu trúc nội bộ, dịch tiền tố không trạng thái như NPTv6 (RFC 6296) đã được định nghĩa, nhưng IETF khuyến nghị đạt được bảo mật bằng firewall thay vì dịch địa chỉ trong IPv6, nên NAT đang có xu hướng hội tụ thành một công nghệ di sản của IPv4.

C. Hướng ra đề dự kiến và chiến lược cấu trúc bài làm

Dưới góc nhìn Kỹ sư chuyên nghiệp, NAT có thể được ra đề như một phần giải thích khái niệm về "đối phó cạn kiệt IPv4 và cơ chế tiết kiệm địa chỉ", hoặc mở rộng thành câu hỏi phân tích về "so sánh các loại NAT và thiết kế bảo mật·vượt qua". Bài làm không nên dừng ở định nghĩa đơn giản mà cần triển khai ① khác biệt ánh xạ và tiêu chí áp dụng của tĩnh·động·PAT, ② các hoạt động dịch chi tiết như checksum·cổng·ALG, và ③ các kỹ thuật vượt qua STUN·TURN·ICE cùng bối cảnh chuyển đổi của CGN·NAT64, đan kết theo trục đánh đổi tiết kiệm địa chỉ – bảo mật – suy giảm tính trong suốt đầu-cuối. Bổ sung triển vọng về chuyển đổi IPv6 sẽ thể hiện tầm nhìn tổng hợp ở cấp Kỹ sư chuyên nghiệp.

6. Cân nhắc và hàm ý

  • Không quá tin vào hiệu quả bảo mật: Việc NAT chặn luồng vào theo mặc định chỉ là hiệu ứng biên phụ trợ, không phải một kiểm soát bảo mật được thiết kế. Một khi các lỗ hổng được mở qua chuyển tiếp cổng·UPnP thì các host bị phơi bày nguyên trạng, nên không được coi NAT là vật thay thế cho firewall mà phải cấu thành theo nhiều lớp cùng firewall trạng thái·IPS. Đặc biệt trong chuyển đổi IPv6, không được rơi vào ngộ nhận rằng "thiếu NAT là nguy hiểm" mà phải thiết kế tường minh kiểm soát biên bằng chính sách firewall.
  • Suy giảm tính trong suốt đầu-cuối và tương thích ứng dụng: NAT phá vỡ các giao thức giả định kết nối trực tiếp đầu-cuối. Khi triển khai VoIP·hội nghị truyền hình·P2P, phải thiết kế đồng thời với việc có hỗ trợ STUN/TURN/ICE hay không và băng thông·chi phí của máy chủ chuyển tiếp TURN, đồng thời đưa vào danh mục kiểm tra cả việc biến dạng payload ngoài dự kiến do ALG gây ra (các trường hợp ngược lại gây ra lỗi).
  • Hiệu năng·khả năng mở rộng và quản lý bảng trạng thái: Vì NAT là thiết bị duy trì trạng thái, số phiên đồng thời tác động trực tiếp đến kích thước bảng dịch và CPU. Trong môi trường quy mô lớn, bão hòa bảng·cạn cổng dẫn đến sự cố dịch vụ, nên phải phản ánh vào thiết kế việc tinh chỉnh thời gian chờ·giới hạn phiên·dự phòng (đồng bộ trạng thái giữa các thiết bị), và CGN phải quản lý cân bằng khối lượng nhật ký và khả năng truy vết bằng cấp phát khối cổng.
  • Khả năng truy vết·ứng phó pháp lý và thế lưỡng nan của CGN: Trong CGN, nơi nhiều thuê bao chia sẻ một IP công cộng, việc nhận diện một thuê bao cụ thể khi xảy ra sự cố là khó khăn, tạo ra khó khăn chung trong hợp tác điều tra·chặn lạm dụng·quản lý uy tín. Cần một thể chế vận hành bắt buộc ghi nhật ký theo đơn vị dải cổng và đồng bộ thời gian chính xác (NTP) để bảo đảm khả năng truy vết.
  • Triển vọng — hội tụ thành công nghệ di sản của IPv4: NAT đã kéo dài tuổi thọ IPv4 hơn 20 năm, nhưng khi tỷ lệ phổ cập IPv6 tăng lên, triển vọng dài hạn là chuyển đổi, qua NAT64·dual-stack, sang một "Internet đầu-cuối không NAT". Vì sự cùng tồn tại IPv4/IPv6 là không thể tránh khỏi trong thời gian tới, việc tổ chức lấy dual-stack làm nền tảng và chỉ vận hành NAT như phương tiện trung chuyển·tiết kiệm địa chỉ trong giai đoạn chuyển đổi là chiến lược thực tế.

Tài liệu tham khảo


Tóm tắt một câu: NAT là kỹ thuật dịch địa chỉ IP·cổng tại thiết bị biên để nối mạng riêng và mạng công cộng; nó tiết kiệm địa chỉ nhằm đối phó cạn kiệt IPv4 và che giấu mạng nội bộ, nhưng chỉ khi hiểu đầy đủ cả khác biệt ánh xạ của tĩnh·động·PAT, bối cảnh chuyển đổi của CGN·NAT64, và các kỹ thuật vượt qua STUN·TURN·ICE bù đắp cho suy giảm tính trong suốt đầu-cuối thì mới có thể thiết kế·vận hành đúng — một công nghệ hạ tầng cốt lõi mang tính quá độ đang hội tụ về kỷ nguyên IPv6.