VPC:subnet、firewall 与出口
VPC 全局,subnet 属于 Region,VM 位于 Zone;同 Region 的多个 Zone 可用同一 subnet。
推荐做法#
- 使用 Custom mode 明确规划地址;同 VPC 的主/次要范围不得重叠,互联网络提前协调。
- 同 VPC 跨 Region 自动具备 subnet 路由,访问再由 firewall 和应用监听决定。
- 普通互联网出口用外部 IP/NAT 等路径;Private Google Access 用于支持的 Google API。
常用操作#
替换为实际资源;本段不依赖 lab.env。
PROJECT_ID='REPLACE_PROJECT_ID'
NETWORK='REPLACE_NETWORK'
gcloud compute networks subnets list --project="$PROJECT_ID" --network="$NETWORK"
gcloud compute firewall-rules list --project="$PROJECT_ID" \
--filter="network:$NETWORK"
gcloud compute routes list --project="$PROJECT_ID" --filter="network:$NETWORK"容易踩的坑#
有路由不等于入站允许;Public NAT 也不提供主动入站。 VM 互访另查 firewall,管理入口使用 IAP 等明确路径。
- Peering 不传递;独立 VPC 地址可重复,但建立 Peering 时不能重叠。
通信与路由 · Region / Zone / CIDR · PSA / PSC
配置说明与完整示例(按需展开)
本页保留 VPC、防火墙和 Cloud NAT 的实验步骤。概念与通信配置按问题拆到子页:
| 你想了解什么 | 阅读位置 |
|---|---|
| 全局 VPC、Region / Zone、 subnet 地址规划与 AWS 差异 | VPC 与 subnet:AWS 对照 |
| subnet 互访、跨 Region、跨 VPC Peering、路由及防火墙配置 | VPC 通信与路由 |
理解与前置#
前置:环境篇。VPC 是全局资源,Subnet 属于区域;VM 网卡属于 subnet。防火墙控制流量,路由决定下一跳。Cloud NAT 提供出站地址转换,不提供主动入站访问。VPC
创建网络#
source lab.env
gcloud services enable compute.googleapis.com iap.googleapis.com
gcloud compute networks create lab-vpc --subnet-mode=custom
gcloud compute networks subnets create lab-subnet --network=lab-vpc --region="$REGION" --range=10.20.0.0/24 --enable-private-ip-google-access
gcloud compute firewall-rules create lab-iap-ssh --network=lab-vpc --allow=tcp:22 --source-ranges=35.235.240.0/20 --target-tags=iap-ssh
gcloud compute routers create lab-router --network=lab-vpc --region="$REGION"
gcloud compute routers nats create lab-nat --router=lab-router --region="$REGION" --nat-custom-subnet-ip-ranges=lab-subnet --auto-allocate-nat-external-ipsPrivate Google Access 用于无外部 IP 的实例访问受支持的 Google API;访问普通互联网仍需要 NAT 等出口。IAP 的 SSH 转发还需要 IAM,开放防火墙本身不授予登录权限。
验收与故障#
继续 VM 实验创建无公网 IP 实例。在 VM 内 curl -I https://example.com 应成功。删除 NAT 后重试公网请求,应无法建立连接;重新创建 NAT 恢复。
gcloud compute routers nats describe lab-nat --router=lab-router --region="$REGION"
gcloud compute routes list --filter='network:lab-vpc'
gcloud compute firewall-rules list --filter='network:lab-vpc'若 SSH 失败,分别检查 IAP 授权、35.235.240.0/20 → TCP 22、OS Login。不要直接开放 0.0.0.0/0:22。
清理#
先清理依赖网络的 VM、DNS、GKE、私有连接;若后续还要使用则保留,NAT 会持续计费。
gcloud compute routers nats delete lab-nat --router=lab-router --region="$REGION"
gcloud compute routers delete lab-router --region="$REGION"
gcloud compute firewall-rules delete lab-iap-ssh
gcloud compute networks subnets delete lab-subnet --region="$REGION"
gcloud compute networks delete lab-vpc