Skip to content

Private NAT — Egress An Toàn Trong Nội Bộ GCP

Tại sao quan trọng trong production

Cloud NAT giải quyết bài toán egress ra public internet (private VM gửi traffic ra internet mà không cần public IP). Nhưng một bài toán khác phổ biến trong enterprise: private-to-private translation — hai networks có overlapping IP ranges cần communicate, hoặc traffic cần egress sang on-premises qua Interconnect/VPN mà không có internet involvement.

Private NAT là giải pháp GCP cho bài toán này: NAT translation xảy ra trong GCP's Andromeda SDN, không cần internet, không cần public IP.


Internal Model — Cơ Chế Private-to-Private NAT

Hai Use Cases Chính

1. Cross-VPC NAT (qua NCC): Hai VPC spokes trong cùng NCC hub có overlapping IP ranges cần communicate. Private NAT translate source IP của traffic giữa các spokes.

2. Hybrid NAT (qua Interconnect/VPN): Traffic từ on-premises đến GCP resources, hoặc ngược lại, cần NAT để resolve IP conflict giữa on-premises và VPC. Áp dụng cho Dedicated Interconnect, Partner Interconnect, và HA VPN.

Nơi NAT Xảy Ra

Private NAT không chạy trên data plane (không phải VM, không phải proxy). NAT logic được thực hiện trong Andromeda SDN khi packet traverse. Điều này có nghĩa:

  • Latency overhead minimal — NAT là part of packet processing pipeline, không phải hop thêm.
  • Không có single point of failure — Andromeda distributed architecture.
  • Throughput không bị giới hạn bởi single VM.

NAT Rule Model

Private NAT sử dụng NAT rules để define translation:

Source: 10.0.0.0/24 (VPC A)
Translated source: 100.64.0.0/24 (NAT pool)
Destination: 172.16.0.0/16 (VPC B)

Khi VPC A send traffic đến VPC B:

  1. Andromeda match packet với NAT rule.
  2. Source IP (10.0.x.x) được translated sang NAT pool IP (100.64.x.x).
  3. Packet forward đến VPC B với translated source.
  4. Return traffic từ VPC B đến 100.64.x.x được translated back đến 10.0.x.x.

Phân Biệt với Cloud NAT

Khía cạnhCloud NATPrivate NAT
Use casePrivate → Public internetPrivate → Private (trong GCP hoặc on-prem)
Public IP cần thiếtCó (NAT IP pool)Không
Internet involvementKhông
Data pathAndromeda SDNAndromeda SDN
Overlapping IP handlingKhông applicableĐây là use case chính

Cloud NAT và Private NAT có thể coexist trên cùng VPC — Cloud NAT cho internet egress, Private NAT cho cross-private connectivity.


Constraints

Overlapping IP Ranges

Chính xác thì Private NAT giải quyết overlapping IP — nhưng NAT pool (translated IP range) không được overlap với bất kỳ subnet nào đang dùng trong VPCs tham gia.

Connection Directionality

Private NAT protect inbound unsolicited connections: NAT chỉ cho phép connections được khởi tạo từ source side. Reply traffic được allow tự động (connection tracking). Traffic khởi tạo từ destination đến NAT pool IP bị block mặc định.

Không Phải Bidirectional Transparent Routing

Hai VPCs với overlapping IPs không thể "see" nhau transparently. Communication phải được design với NAT in mind: service A ở VPC A phải configure endpoint của service B là NAT pool IP, không phải IP gốc.


GCP-native Implementation Guidance

Tạo Private NAT cho cross-VPC communication qua NCC:

bash
# Tạo NAT policy
gcloud network-connectivity internal-ranges create nat-pool \
  --network=my-vpc \
  --ip-cidr-range=100.64.0.0/24 \
  --peering=FOR_SELF

# Tạo Private NAT với NCC spoke
gcloud compute routers create my-router \
  --network=my-vpc \
  --region=us-central1

gcloud compute routers nats create private-nat \
  --router=my-router \
  --region=us-central1 \
  --type=PRIVATE \
  --nat-all-subnet-ip-ranges \
  --auto-allocate-nat-external-ips

References