Văn phòng bạn có nhiều máy tính, điện thoại, camera, máy in. Tất cả đều dùng Internet qua cùng một đường truyền. Nhưng nếu kiểm tra IP mà các website bên ngoài nhìn thấy, chỉ có một địa chỉ duy nhất. Cơ chế đó là NAT, viết tắt của Network Address Translation.
NAT không phải chỉ là tính năng của router gia đình. NAT là kiến trúc mạng nền tảng có mặt trong mọi văn phòng, trung tâm dữ liệu và hệ thống cloud production. Bài này giải thích NAT là gì, NAT hoạt động ra sao, các loại NAT thực tế gặp nhiều nhất, và khi nào nên (hoặc không nên) dùng NAT.
Contents
NAT là kỹ thuật dịch địa chỉ mạng, cho phép thiết bị dùng IP private trong mạng nội bộ giao tiếp với Internet thông qua một hoặc một nhóm IP public. Thay vì mỗi thiết bị cần một địa chỉ IP public riêng, NAT giúp nhiều thiết bị chia sẻ cùng một IP public.

Vấn đề cốt lõi nằm ở giới hạn địa chỉ. Không gian địa chỉ IPv4 chỉ có 2³² = 4.294.967.296 địa chỉ (khoảng 4,3 tỷ), nhưng số thiết bị kết nối Internet đã vượt con số đó từ lâu. IANA, cơ quan quản lý địa chỉ IP toàn cầu, đã phân phối hết pool trung tâm vào tháng 2/2011; các tổ chức quản lý khu vực (RIR) lần lượt cạn kiệt từ 2011 (châu Á) đến 2015 (Bắc Mỹ).
NAT ra đời để kéo dài tuổi thọ của địa chỉ IPv4, cho phép hàng triệu thiết bị dùng IP private mà vẫn truy cập được Internet thông qua một pool IP public ít hơn nhiều.
Cụ thể, NAT xử lý bốn vấn đề chính:
NAT không tạo ra Internet, mà là lớp dịch thuật đứng giữa, cho phép mạng private và Internet giao tiếp với nhau.
|
Thuật ngữ |
Ý nghĩa |
Ví dụ |
|
Inside Local |
IP private của thiết bị trong mạng nội bộ |
192.168.1.10 |
|
Inside Global |
IP public mà thiết bị đó được dịch sang khi ra Internet |
203.x.x.x |
|
Outside Local |
IP của thiết bị bên ngoài nhìn từ góc mạng nội bộ |
8.8.8.8 |
|
Outside Global |
IP thực của thiết bị bên ngoài trên Internet |
8.8.8.8 |
Trong hầu hết các trường hợp thực tế, Outside Local và Outside Global giống nhau. Hai khái niệm quan trọng nhất cần nhớ là Inside Local (IP private nguồn) và Inside Global (IP public sau khi NAT dịch).
Mạng gồm:
Khi laptop truy cập một website:
Cùng lúc đó, điện thoại 192.168.1.11 cũng đang xem video. Router dùng port khác nhau để phân biệt kết nối của hai thiết bị, dù cả hai đều đi qua cùng một IP public.

Bảng NAT là nơi router lưu lại thông tin ánh xạ giữa IP/port nội bộ và IP/port public. Không có bảng này, router không biết phản hồi từ Internet phải trả về thiết bị nào.
|
Thiết bị nội bộ |
Port nội bộ |
IP public sau NAT |
Port sau NAT |
|
192.168.1.10 |
52341 |
203.x.x.x |
61001 |
|
192.168.1.11 |
52342 |
203.x.x.x |
61002 |
Tùy tình huống, NAT có thể dịch các thông tin sau:
Trong mạng gia đình và văn phòng nhỏ, NAT thường đi cùng PAT (Port Address Translation). PAT là kỹ thuật dùng port để phân biệt kết nối, cho phép hàng chục thiết bị chia sẻ một IP public duy nhất mà không bị xung đột.

Static NAT ánh xạ cố định một IP private với một IP public. Ví dụ: server nội bộ 192.168.1.20 luôn được dịch thành IP public 203.x.x.10.
Static NAT phù hợp khi server nội bộ cần được truy cập ổn định từ bên ngoài, ví dụ web server, mail server, hoặc camera IP cần xem từ xa. Bên ngoài biết địa chỉ cố định để kết nối vào.
Hạn chế là tốn IP public theo tỷ lệ 1:1. Static NAT không phù hợp khi có nhiều thiết bị cần ra Internet nhưng không cần nhận traffic từ ngoài vào.
Dynamic NAT không ánh xạ cố định. Khi một thiết bị nội bộ cần truy cập Internet, nó được cấp tạm thời một IP public từ pool có sẵn. Khi kết nối kết thúc, IP đó quay lại pool để thiết bị khác dùng.
Dynamic NAT phù hợp với môi trường có nhiều thiết bị nhưng không phải tất cả đều cần Internet cùng lúc. Tuy nhiên, nếu pool cạn IP trong giờ cao điểm, các thiết bị còn lại phải chờ.
Trên thực tế, Dynamic NAT vẫn cần số lượng IP public tương đối lớn. Trong hầu hết môi trường hiện đại, PAT hiệu quả hơn nhiều.
PAT, còn gọi là NAT Overload, là loại phổ biến nhất trong thực tế. PAT cho phép hàng chục hoặc hàng trăm thiết bị cùng dùng một IP public bằng cách phân biệt kết nối qua port nguồn.
Mỗi thiết bị trong mạng khi ra Internet được router gán một port riêng trên IP public. Router theo dõi ánh xạ này trong bảng NAT và dùng nó để định tuyến phản hồi về đúng thiết bị.
Router gia đình, văn phòng nhỏ, và phần lớn gateway doanh nghiệp đều chạy PAT. Trong hầu hết trường hợp, “NAT” không có thêm thông tin nghĩa là PAT.
SNAT và DNAT phân loại NAT theo hướng dịch địa chỉ:
Trong tài liệu Linux/iptables và một số hệ thống tường lửa, SNAT và DNAT là cách chia NAT phổ biến hơn Static/Dynamic/PAT.
Mọi thiết bị trong mạng LAN (laptop, điện thoại, TV, camera) đều dùng IP private. Router đứng ở ranh giới, chạy PAT để giúp tất cả thiết bị đó ra Internet qua một IP public do ISP cấp.
NAT hoạt động hoàn toàn ngầm. Mỗi lần truy cập web, xem video, gửi email hay dùng app, NAT đã dịch địa chỉ trước khi gói tin rời router.
Doanh nghiệp có hàng trăm thiết bị kết nối Internet: máy tính, máy chủ, camera giám sát, máy in, thiết bị IoT, điện thoại VoIP. NAT giúp toàn bộ hệ thống đó dùng chung một dải IP public nhỏ mà không cần cấp phát riêng cho từng thiết bị.
Một số hệ thống doanh nghiệp còn dùng NAT kết hợp với firewall, VPN và access control list để kiểm soát luồng traffic ra ngoài. NAT tập trung điểm ra Internet, tạo điều kiện để ghi log và kiểm soát toàn bộ outbound traffic ở một chỗ.

Trong kiến trúc cloud, server backend thường đặt trong private subnet để giảm bề mặt tấn công. Server trong private subnet không có IP public, nên traffic từ Internet không thể kết nối trực tiếp vào. Đây là thiết kế đúng, nhưng chính các server đó thường cần kết nối ra ngoài: gọi API thanh toán, tải package cập nhật, gửi webhook, kết nối dịch vụ bên thứ ba. Nếu không có cơ chế NAT, chúng không làm được điều này.
NAT Gateway giải quyết bài toán đó. Trên AWS, NAT Gateway đặt trong public subnet và có Elastic IP (IP public cố định). Route table của private subnet cấu hình để mọi traffic ra Internet đi qua NAT Gateway này. Kết quả là server backend có thể gọi ra ngoài, nhưng Internet không thể kết nối ngược vào.
Một EC2 trong private subnet cần gọi API của cổng thanh toán hoặc chạy apt-get update. Thay vì gắn public IP trực tiếp cho EC2, hệ thống route outbound traffic qua NAT Gateway ở public subnet. EC2 có Internet outbound nhưng không có inbound từ Internet.
Theo tài liệu chính thức của AWS VPC, để đảm bảo high availability, nên tạo NAT Gateway ở mỗi Availability Zone chứa tài nguyên cần Internet outbound, tránh để một NAT Gateway trở thành single point of failure.
NAT dịch địa chỉ IP và port. Firewall kiểm soát traffic được phép đi qua hay bị chặn, dựa trên rule về IP, port, giao thức hoặc trạng thái kết nối.
Hai kỹ thuật thường triển khai song song trên cùng một thiết bị, nhưng chúng làm việc khác nhau. NAT chỉ dịch địa chỉ, không chặn traffic nguy hiểm. Muốn chặn, phải có firewall với policy rõ ràng.
NAT hoạt động ở tầng mạng và transport, trong suốt với người dùng. Ứng dụng không cần cấu hình gì để đi qua NAT.
Proxy hoạt động ở tầng ứng dụng và đóng vai trò trung gian rõ ràng. Proxy có thể đọc, lọc, cache hoặc ghi log request ở mức HTTP. Ứng dụng thường cần cấu hình để biết dùng proxy.
NAT thay địa chỉ IP, proxy thay mặt ứng dụng.
DHCP là giao thức cấp IP tự động cho thiết bị khi gia nhập mạng. NAT dùng IP đó để dịch khi thiết bị truy cập Internet.
Ví dụ thực tế: điện thoại kết nối Wi-Fi, router cấp IP 192.168.1.11 thông qua DHCP. Sau đó khi điện thoại truy cập YouTube, NAT trên router dịch IP 192.168.1.11 thành IP public. Hai kỹ thuật bổ sung nhau, không thay thế nhau.
Port forwarding là cách cấu hình để traffic từ bên ngoài đi vào đúng thiết bị hoặc dịch vụ trong mạng nội bộ. Ví dụ: trỏ port 8080 trên IP public về web server nội bộ 192.168.1.20:80.
Port forwarding là một trường hợp của DNAT: router dịch địa chỉ đích của traffic đến port cụ thể trên IP public thành IP:port của server nội bộ.

NAT có hỗ trợ bảo mật ở mức “ẩn IP nội bộ”, nhưng đó không phải bảo mật thật sự. Muốn bảo vệ hệ thống, cần firewall với rule rõ ràng, security group, access policy và giám sát liên tục.
Bảng chi tiết:
|
Tình huống |
Có cần NAT không? |
Ghi chú |
|
Thiết bị trong LAN truy cập Internet |
Có |
Router thường xử lý sẵn |
|
Server private subnet gọi API bên ngoài |
Có |
Thường dùng NAT Gateway trong cloud |
|
Website public cần nhận traffic từ Internet |
Không chỉ NAT |
Cần public IP, load balancer và firewall rule |
|
Nhiều thiết bị chia sẻ một IP public |
Có |
Thường dùng PAT/NAT Overload |
|
Muốn chặn tấn công mạng |
Không đủ |
Cần firewall, security group và chính sách bảo mật |
NAT là kỹ thuật dịch địa chỉ mạng giúp thiết bị dùng IP private giao tiếp với Internet qua IP public. Trong mạng gia đình, NAT hoạt động ngầm và không cần can thiệp.
Khi thiết kế hệ thống doanh nghiệp hoặc cloud, việc hiểu rõ loại NAT nào đang dùng và NAT Gateway đặt ở AZ nào có thể là sự khác biệt giữa một hệ thống ổn định và một hệ thống có điểm nghẽn ẩn.
Tóm lại, có ba điều quan trọng bạn cần nắm:
Không. NAT dịch địa chỉ mạng, còn firewall kiểm soát traffic được phép đi qua hay bị chặn dựa trên rule cụ thể. NAT có thể ẩn IP nội bộ, nhưng không lọc traffic độc hại và không thay thế firewall.
Có thể, nếu thiết bị NAT yếu hoặc lưu lượng rất lớn. Trong mạng gia đình và văn phòng thông thường, overhead của NAT nhỏ và không ảnh hưởng rõ rệt. Với hệ thống xử lý throughput cao, cần chọn thiết bị NAT phù hợp với tải thực tế.
Hai thuật ngữ chỉ cùng một kỹ thuật trong hầu hết tài liệu: nhiều thiết bị private chia sẻ một IP public bằng cách dùng port để phân biệt kết nối. “NAT Overload” là thuật ngữ của Cisco; “PAT” phổ biến hơn trong tài liệu kỹ thuật chung.
NAT Gateway là dịch vụ hoặc thiết bị NAT thường dùng trong cloud để tài nguyên trong private subnet gửi traffic ra ngoài mà không cần public IP riêng. Trên AWS, NAT Gateway là dịch vụ managed, đặt trong public subnet, có Elastic IP cố định và hỗ trợ scale tự động theo bandwidth.
IPv6 có không gian địa chỉ đủ lớn để mỗi thiết bị có một địa chỉ public riêng, nên nhu cầu dùng NAT để tiết kiệm địa chỉ giảm đi đáng kể. Tuy nhiên trong thực tế hiện nay, NAT vẫn xuất hiện trong nhiều hệ thống vì lý do kiến trúc bảo mật (muốn giữ private subnet), tương thích hạ tầng cũ, hoặc trong môi trường chuyển đổi từ IPv4 sang IPv6 chưa hoàn tất.
SNAT (Source NAT) thay đổi địa chỉ nguồn của gói tin, dùng khi thiết bị nội bộ ra Internet. DNAT (Destination NAT) thay đổi địa chỉ đích, dùng khi cần chuyển traffic từ bên ngoài vào server nội bộ cụ thể. Port forwarding là trường hợp phổ biến nhất của DNAT.