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:
- Andromeda match packet với NAT rule.
- Source IP (10.0.x.x) được translated sang NAT pool IP (100.64.x.x).
- Packet forward đến VPC B với translated source.
- 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ạnh | Cloud NAT | Private NAT |
|---|---|---|
| Use case | Private → Public internet | Private → Private (trong GCP hoặc on-prem) |
| Public IP cần thiết | Có (NAT IP pool) | Không |
| Internet involvement | Có | Không |
| Data path | Andromeda SDN | Andromeda SDN |
| Overlapping IP handling | Khô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:
# 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