SNAT là gì? Cấp quyền truy cập Internet cho Private Subnet

SNAT hay Source Network Address Translation là kỹ thuật thay đổi địa chỉ IP nguồn của gói tin khi nó đi qua router hoặc firewall, thường được dùng để cho phép các thiết bị trong mạng nội bộ truy cập ra mạng công cộng bằng một địa chỉ Public IP duy nhất.

Trong DevOps và Cloud Infrastructure, SNAT đóng vai trò sống còn cho bảo mật. Nó cho phép các server đặt trong Private Subnet có thể tải patch, gọi API bên thứ ba hoặc gửi log ra ngoài Internet mà không cần phơi bày trực tiếp ra môi trường công cộng. Tuy nhiên, SNAT cũng là một điểm nghẽn tiềm tàng về hiệu năng nếu số lượng kết nối đồng thời vượt quá giới hạn port của bộ định tuyến.

Ví dụ: Khi EC2 instance có IP 10.0.1.5 gửi request đến google.com, NAT Gateway sẽ thay thế IP nguồn 10.0.1.5 bằng Public IP của nó ví dụ 203.0.113.1 trước khi gửi ra Internet. Khi Google trả lời, NAT Gateway sẽ dịch ngược lại để chuyển gói tin về đúng instance ban đầu.

Trên Linux, SNAT thường được thực hiện thông qua iptables với target MASQUERADE hoặc SNAT.

SNAT cho biết điều gì?

Hiểu về SNAT giúp bạn kiểm soát luồng Outbound Traffic của hệ thống:

  • Identity: Đối tác bên ngoài nhìn thấy traffic của bạn đến từ IP nào để thực hiện Whitelist.
  • Security: Đảm bảo instance không thể bị truy cập trực tiếp từ Internet (inbound) nhưng vẫn có thể chủ động kết nối ra ngoài (outbound).
  • Scalability: Một Public IP có thể đại diện cho hàng nghìn Private Instance, giúp tiết kiệm không gian địa chỉ IPv4.

SNAT khác DNAT ra sao?

Hai khái niệm này đối lập nhau về hướng đi của traffic:

  • SNAT hay Source NAT: Thay đổi IP nguồn. Dùng cho traffic đi từ trong ra ngoài như truy cập Internet từ mạng LAN.
  • DNAT hay Destination NAT: Thay đổi IP đích. Dùng cho traffic đi từ ngoài vào trong như Port Forwarding từ Public IP vào Web Server nội bộ.

Trong một hệ thống router gia đình đơn giản, cả SNAT và DNAT thường diễn ra đồng thời nhưng phục vụ các mục đích khác nhau.

Vấn đề SNAT Port Exhaustion

Đây là cơn ác mộng của các hệ thống High Traffic. Mỗi kết nối TCP/UDP đi qua SNAT cần một ephemeral port trên thiết bị NAT để theo dõi state.

Do số lượng port giới hạn tối đa là 65535, nếu hệ thống mở quá nhiều kết nối ra ngoài cùng lúc hoặc kết nối không được đóng đúng cách, NAT Gateway sẽ hết port trống.

Hậu quả là các kết nối mới sẽ bị drop ngay lập tức, gây ra lỗi connection timeout ngẫu nhiên dù server đích vẫn hoạt động bình thường.

SNAT trong môi trường Cloud

Trên AWS, Azure hay GCP, SNAT được quản lý dưới dạng dịch vụ:

  • AWS NAT Gateway: Một managed service có khả năng scale tốt nhưng vẫn có giới hạn cứng về port per destination.
  • GCP Cloud NAT: Cho phép map nhiều Public IP vào một Gateway để tăng lượng port available.

Khi thiết kế hệ thống lớn, bạn cần tính toán số lượng concurrent connection để quyết định số lượng Public IP cần gắn cho NAT Gateway.

Masquerading là gì?

Trong thế giới Linux và Container, Masquerading là một dạng đặc biệt của SNAT.

  • SNAT standard: Map IP nguồn thành một IP cố định.
  • Masquerading: Tự động chọn IP nguồn dựa trên interface đầu ra.

Kubernetes sử dụng Masquerading rất nhiều để đảm bảo traffic từ Pod khi đi ra khỏi Node sẽ mang IP của Node đó, giúp hạ tầng mạng vật lý hiểu và định tuyến được gói tin.

Checklist quản lý SNAT cho Production

  • Đã tính toán số lượng kết nối Outbound tối đa để sizing NAT Gateway chưa?
  • Đã cấu hình keepalive cho các kết nối dài để tránh bị NAT device cắt kết nối do idle chưa?
  • Nếu gặp Port Exhaustion, đã cân nhắc gắn thêm Public IP cho NAT Gateway chưa?
  • Đã kiểm tra xem ứng dụng có tái sử dụng connection connection pooling hiệu quả để giảm tải cho SNAT chưa?
  • Đã whitelist chính xác Public IP của NAT Gateway trên firewall của đối tác chưa?

Kết luận

SNAT là cơ chế không thể thiếu để bảo vệ Private Network trong khi vẫn duy trì kết nối ra thế giới bên ngoài.

Để vận hành ổn định, bạn cần giám sát chặt chẽ metric ErrorPortAllocation trên Cloud NAT, tối ưu hóa việc sử dụng connection pool trong code ứng dụng và hiểu rõ giới hạn vật lý của bảng NAT connection tracking.

Thông tin nổi bật

Sự kiện phát trực tiếp​

Event Thumbnail

Báo cáo quan trọng

Article Thumbnail
Article Thumbnail
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Tiêu điểm chuyên gia