Skip to content
Article
June 20, 2026

云服务网络架构指南

当你在云厂商(阿里云、AWS、腾讯云、DigitalOcean)购买一台 ECS/EC2/Droplet 时,你获得的不仅是一台虚拟机,更是一个完整虚拟网络中的节点。理解这个虚拟网络的架构,是排查连接问题、设计高可用架构、控制成本的基础。

前置知识:本文假设你已了解 IPv4IPv6DNS 的基本概念。


第一部分:全局视图——云网络的分层结构

1.1 一张图看懂

互联网


┌─────────────────────────────────────────────────────┐
│                   云厂商全球骨干网                    │
│           (光缆、路由器、BGP、CDN 节点)              │
└─────────────────────────────────────────────────────┘
    │                        │
    ▼                        ▼
┌──────────┐           ┌──────────┐
│  地域 A   │           │  地域 B   │
│ Region    │           │ Region    │
│ cn-hangzhou│          │ us-east-1 │
└──────────┘           └──────────┘


┌─────────────────────────────────────────────────────┐
│                      VPC(虚拟私有云)                 │
│  CIDR: 172.16.0.0/12(你的私有网络)                   │
│                                                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │
│  │  vSwitch A   │  │  vSwitch B   │  │  vSwitch C   │ │
│  │  可用区 A     │  │  可用区 B     │  │  可用区 A     │ │
│  │  172.16.1.0/24│  │ 172.16.2.0/24│  │ 172.16.3.0/24│ │
│  │              │  │              │  │              │ │
│  │  ┌─────┐    │  │  ┌─────┐    │  │  ┌─────┐    │ │
│  │  │ ECS │    │  │  │ ECS │    │  │  │ RDS │    │ │
│  │  │ .10 │    │  │  │ .11 │    │  │  │ .12 │    │ │
│  │  └─────┘    │  │  └─────┘    │  │  └─────┘    │ │
│  └─────────────┘  └─────────────┘  └─────────────┘ │
│                                                      │
│  路由表 → 安全组 → NAT 网关 → 互联网                  │
└─────────────────────────────────────────────────────┘

1.2 关键概念层级关系

地域(Region)
  └── 可用区(Availability Zone)
       └── VPC(虚拟私有云)
            └── vSwitch / 子网(Subnet)
                 └── 云资源(ECS、RDS、SLB、Redis...)
概念类比说明
Region城市物理数据中心位置(杭州、北京、新加坡)
AZ同一城市的不同机房同一 Region 内独立电力/网络的机房
VPC你自己的公司网络逻辑隔离的虚拟网络,资源之间互通
vSwitch公司内不同楼层的交换机VPC 内的子网,绑定到特定 AZ
ECS一台服务器虚拟机,必须有 vSwitch 才能创建

第二部分:VPC(虚拟私有云)

2.1 VPC 是什么

VPC(Virtual Private Cloud)是你在云上的一块逻辑隔离的网络空间。你决定:

  • 用什么 IP 地址段(CIDR)
  • 怎么划分子网(vSwitch)
  • 路由怎么走(路由表)
  • 谁可以访问谁(安全组)

2.2 VPC 的 CIDR 选择

VPC 必须使用 RFC 1918 私有地址段:

地址段CIDR 范围最大地址数适用场景
10.0.0.0/8/8 ~ /2416,777,216大型企业,多 VPC 互联
172.16.0.0/12/12 ~ /241,048,576中型企业(推荐)
192.168.0.0/16/16 ~ /2465,536小型项目、个人

选择原则

❌ 不要用太大(/8),留给未来 VPC 互联用
❌ 不要用太小(/24),vSwitch 划分不够用
✅ 推荐 /12 或 /16,预留扩展空间

如果你需要和线下 IDC 互联:
  → VPC CIDR 不能和 IDC 的网段冲突
  → 提前规划,否则后期改 CIDR 极其痛苦

2.3 多 VPC 互联

互联方式场景特点
VPC Peering同 Region 两个 VPC 互通免费、低延迟、需手动配路由
CEN / Transit Gateway跨 Region / 多 VPC 互通付费、集中式路由管理
VPN 网关VPC 与线下 IDC 互通IPsec 隧道
云企业网全球多 Region 互联阿里云特有,基于骨干网
VPC-A (172.16.0.0/16) ←──VPC Peering──→ VPC-B (172.17.0.0/16)
     │                                        │
     └── 注意:两个 VPC 的 CIDR 不能冲突! ──┘

第三部分:vSwitch(虚拟交换机)

3.1 vSwitch 是什么

vSwitch(阿里云叫法)= Subnet(AWS/腾讯云叫法)= 子网。

它是 VPC 内的一个 IP 地址段,绑定到特定可用区,ECS 等资源必须放在某个 vSwitch 中。

VPC: 172.16.0.0/16(65536 个 IP)

  ├── vSwitch-AZ-a: 172.16.1.0/24(254 个可用 IP)
  │     └── ECS-1: 172.16.1.10
  │     └── ECS-2: 172.16.1.11

  ├── vSwitch-AZ-b: 172.16.2.0/24(254 个可用 IP)
  │     └── ECS-3: 172.16.2.10

  └── vSwitch-AZ-a: 172.16.3.0/24(254 个可用 IP)
        └── RDS:   172.16.3.10

3.2 为什么 vSwitch 要绑定可用区

                    VPC(跨可用区)
                  ┌──────────────────┐
可用区 A          │   vSwitch-A      │     可用区 B
┌─────────┐      │   172.16.1.0/24  │    ┌─────────┐
│ ECS-1   │──────│                  │────│ ECS-3   │
│ ECS-2   │      └──────────────────┘    │         │
└─────────┘                              └─────────┘
     │         ┌──────────────────┐           │
     └─────────│   vSwitch-B      │───────────┘
               │   172.16.2.0/24  │
               └──────────────────┘

关键设计

  • vSwitch 绑定 AZ,意味着该 vSwitch 中的 ECS 只能在该 AZ 创建
  • 跨 AZ 的 ECS 通信通过 VPC 路由(延迟约 1-2ms)
  • 同 AZ 的 ECS 通信通过底层虚拟交换机(延迟 < 1ms)

3.3 vSwitch 的隐藏 IP

每个 vSwitch 会占用几个 IP 地址(你不能用):

偏移用途以 172.16.1.0/24 为例
.0网络地址172.16.1.0
.1VPC 网关(虚拟路由器)172.16.1.1
.2DNS 服务器(云内部)172.16.1.2
.3保留172.16.1.3
.255广播地址172.16.1.255

这就是为什么你在 ECS 里看不到 vSwitch 的网关——它是虚拟的,不存在于物理设备上。ECS 的路由表中默认路由指向 .1,由底层虚拟路由器处理。

bash
# 在 ECS 中查看路由
ip route show
# default via 172.16.1.1 dev eth0    ← 这个 .1 是虚拟网关
# 172.16.1.0/24 dev eth0 proto kernel scope link src 172.16.1.10

3.4 vSwitch 规划建议

推荐策略:按功能和可用区划分

VPC: 172.16.0.0/16

├── 172.16.0.0/20   → Web 层(AZ-a)     4096 IP
├── 172.16.16.0/20  → Web 层(AZ-b)     4096 IP
├── 172.16.32.0/20  → App 层(AZ-a)     4096 IP
├── 172.16.48.0/20  → App 层(AZ-b)     4096 IP
├── 172.16.64.0/20  → DB 层(AZ-a)      4096 IP
├── 172.16.80.0/20  → DB 层(AZ-b)      4096 IP
└── 172.16.96.0/20  → 管理/跳板机         4096 IP

优势:
  - 安全组可以按子网限制(如 DB 层只允许 App 层访问)
  - 路由表可以按子网配置
  - 跨 AZ 容灾时资源在对应 vSwitch 中创建即可

第四部分:IPv4 在云中的运作方式

4.1 私有 IP 和公网 IP

                    ECS 实例
              ┌──────────────────┐
              │ eth0: 172.16.1.10│  ← 私有 IP(VPC 内部)
              │                  │
              │ 公网出口方式:     │
              │ ① 绑定 EIP       │  ← 弹性公网 IP(独立计费)
              │ ② NAT 网关       │  ← 多 ECS 共享出口
              │ ③ 固定公网 IP    │  ← 创建时分配(不可解绑)
              └──────────────────┘
公网访问方式特点适用场景
EIP(弹性公网 IP)独立资源,可绑定/解绑/转移需要灵活管理公网 IP
固定公网 IP创建 ECS 时分配,不可解绑简单的单台服务器
NAT 网关 + SNAT多 ECS 共享公网出口私有子网中的 ECS 需要出网
SLB/ALB负载均衡器绑定 EIP多台 ECS 对外提供服务

4.2 EIP 的本质

EIP 不直接配置在 ECS 的网卡上。它是一个 NAT 映射

互联网用户 → EIP (203.0.113.1)


              云厂商 NAT 设备
              203.0.113.1:80 → 172.16.1.10:80


              ECS (172.16.1.10)
              网卡上只有私有 IP
bash
# 在 ECS 中你看不到 EIP
ip addr show eth0
# inet 172.16.1.10/24    ← 只有私有 IP
# EIP 在云厂商的 NAT 设备上

# 查看公网 IP(通过外部服务)
curl ifconfig.me
# 203.0.113.1            ← 这才是你的公网出口 IP

4.3 NAT 网关

NAT 网关让没有公网 IP 的 ECS 也能访问互联网:

私有子网(无公网 IP)
  ┌─────────┐
  │ ECS-1   │──┐
  │ 172.16.1.10│ │         ┌──────────┐         互联网
  └─────────┘ │         │ NAT 网关  │        ┌──────────┐
  ┌─────────┐ ├────路由──→│ EIP:     │──────→│ 目标服务器│
  │ ECS-2   │ │         │ 203.0.113.1│       └──────────┘
  │ 172.16.1.11│ │         └──────────┘
  └─────────┘ ─┘

配置步骤

  1. 创建 NAT 网关(选择 VPC 和 vSwitch)
  2. 绑定 EIP 到 NAT 网关
  3. 配置 SNAT 规则:172.16.1.0/24 → NAT 网关 → EIP
  4. 修改路由表:0.0.0.0/0 → NAT 网关

SNAT vs DNAT

类型方向用途
SNAT内 → 外私有 ECS 访问互联网
DNAT外 → 内互联网访问私有 ECS(端口映射)

4.4 路由表

每个 VPC 有默认路由表,你也可以创建自定义路由表:

默认路由表:
目标              下一跳              类型
172.16.0.0/16    local               系统(VPC 内部互通)
0.0.0.0/0        natgw-xxx           NAT 网关(出互联网)
10.0.0.0/8       peering-xxx         VPC Peering(跨 VPC)

路由优先级:最长前缀匹配(和传统路由器一样)

目标 172.16.1.50:
  172.16.0.0/16 → local ✅(匹配,/16)
  0.0.0.0/0     → NAT   ❌(不匹配,/0 更短)

目标 8.8.8.8:
  172.16.0.0/16 → local ❌(不匹配)
  0.0.0.0/0     → NAT   ✅(默认路由)

第五部分:IPv6 在云中的运作方式

5.1 云上的 IPv6 现状

绝大多数云服务的 IPv6 默认是关闭的。你需要手动开启。

5.2 为什么 IPv6 默认关闭?

这是云服务中最常见的疑问之一。原因是多方面的:

原因说明
① 历史包袱云厂商的网络栈最初全部基于 IPv4 设计,IPv6 是后来加入的
② 基础设施未就绪SLB、RDS、Redis 等托管服务可能不支持 IPv6,开了也没用
③ 计费复杂度IPv6 公网带宽需要额外的计费模型(按流量或按带宽)
④ 用户需求低大多数用户只用 IPv4,开 IPv6 反而增加困惑
⑤ 安全考量IPv6 绕过 IPv4 的安全组和 NAT 规则,需要独立的 IPv6 安全组
⑥ 运维成本双栈意味着两套路由、两套安全规则、两套监控
现实情况:
  IPv4 生态:100% 的服务都支持
  IPv6 生态:ECS 支持 ✅、SLB 部分支持 ⚠️、RDS 部分支持 ⚠️、
            OSS 支持 ✅、CDN 支持 ✅、很多小众服务不支持 ❌

5.3 云上的 IPv6 地址分配

VPC: 172.16.0.0/16(IPv4)
     2408:xxxx:xxxx::/56(IPv6,开启后分配)

vSwitch: 172.16.1.0/24(IPv4)
         2408:xxxx:xxxx:1::/64(IPv6)

ECS: 172.16.1.10(IPv4 私有)
     2408:xxxx:xxxx:1::10(IPv6 私有/公网,取决于 VPC 配置)

关键区别

  • IPv4 私有地址不可公网路由 → 必须通过 NAT 或 EIP
  • IPv6 地址天然全球可路由 → 不需要 NAT,但需要配置 IPv6 公网带宽

5.4 IPv6 公网出口

方式 1:IPv6 公网带宽(直接分配公网 IPv6)
  ECS: 2408:xxxx:xxxx:1::10 ← 直接是公网地址
  需要:购买 IPv6 公网带宽包

方式 2:IPv6 NAT 网关(阿里云部分地域支持)
  ECS: fd00::10(私有 IPv6)
  NAT: fd00::10 → 2408:xxxx::1(公网 IPv6)
  类似 IPv4 的 NAT,但在 IPv6 世界中不推荐

5.5 ECS 能同时拥有 IPv4 和 IPv6 公网地址吗?

可以!这就是「双栈」模式。

一台 ECS 可以同时拥有:

私有 IPv4:  172.16.1.10     ← VPC 内部通信
公网 IPv4:  203.0.113.1     ← 通过 EIP 或固定公网 IP
私有 IPv6:  2408:xxxx::10   ← VPC 内部通信(全球可路由)
公网 IPv6:  2408:xxxx::10   ← 同地址!IPv6 不需要 NAT

DNS 配置:
  A    记录 → 203.0.113.1    (IPv4 用户访问)
  AAAA 记录 → 2408:xxxx::10  (IPv6 用户访问)

实际配置步骤(以阿里云为例):

1. VPC 开启 IPv6 CIDR(创建 VPC 时勾选,或后期添加)
2. vSwitch 分配 IPv6 CIDR
3. ECS 创建时选择「分配 IPv6 地址」
4. 购买 IPv6 公网带宽包(否则 IPv6 只能在 VPC 内部通信)
5. 安全组添加 IPv6 入站规则
6. DNS 添加 AAAA 记录

验证

bash
# 在 ECS 中检查
ip -6 addr show eth0
# inet6 2408:xxxx:xxxx:1::10/64 scope global   ← 已分配

# 从外部测试
ping6 2408:xxxx:xxxx:1::10   # 如果购买了公网带宽,应该能通
curl -6 https://your-domain.com  # 如果 DNS AAAA 已配置

5.6 IPv6 安全组陷阱

这是最常见的坑:IPv4 安全组规则不会自动复制到 IPv6。

你以为的安全状态:
  IPv4 安全组:只允许 22, 80, 443 端口 ✅

实际状态:
  IPv4 安全组:只允许 22, 80, 443 端口 ✅
  IPv6 安全组:所有端口开放 ❌(默认规则可能不同!)

正确做法

安全组入站规则:

# IPv4 规则
协议    端口    源地址       策略
TCP     22      0.0.0.0/0   允许
TCP     80      0.0.0.0/0   允许
TCP     443     0.0.0.0/0   允许

# IPv6 规则(需要单独添加!)
协议    端口    源地址       策略
TCP     22      ::/0         允许
TCP     80      ::/0         允许
TCP     443     ::/0         允许
ICMPv6  全部    ::/0         允许    ← 别忘了 ICMPv6!

第六部分:DNS 在云中的运作方式

6.1 云中的 DNS 层次

ECS 内部查询 example.com


① /etc/resolv.conf → nameserver 100.100.2.136(阿里云内部 DNS)


② 云内部 DNS 解析器

    ├── 私有域名?→ PrivateZone(内网 DNS 服务)
    │   例:db.internal.example.com → 172.16.3.10

    └── 公网域名?→ 递归解析器 → 公网 DNS
        例:google.com → 142.250.80.46

6.2 云内部 DNS 地址

云厂商内部 DNS 服务器
阿里云100.100.2.136, 100.100.2.138
AWSVPC CIDR 的 .2 地址(如 172.16.0.2)
腾讯云183.60.83.19, 183.60.82.98
Azure168.63.129.16
GCP169.254.169.254(Metadata)
DigitalOcean67.207.67.2, 67.207.67.3
bash
# 在 ECS 中查看
cat /etc/resolv.conf
# nameserver 100.100.2.136    ← 阿里云内部 DNS
# nameserver 100.100.2.138

6.3 PrivateZone(内网 DNS)

当你需要在 VPC 内部使用自定义域名时:

场景:ECS 访问内网 RDS 不想用长串的连接地址

PrivateZone 配置:
  db.internal → 172.16.3.10(RDS 私有 IP)

ECS 中:
  mysql -h db.internal -u root -p
  # 内部 DNS 解析 db.internal → 172.16.3.10

与公网 DNS 的区别

特性公网 DNS(如 Cloudflare)PrivateZone
解析范围全球互联网仅关联的 VPC 内部
记录可见性所有人可查仅 VPC 内 ECS 可查
典型用途网站、API 对外域名内部服务发现
费用通常免费按 Zone 数量收费

6.4 云 DNS 与自建 DNS 的协作

                    公网 DNS(Cloudflare / 阿里云 DNS)
                    www.example.com → 203.0.113.1
                    api.example.com → 203.0.113.2


互联网用户                     │    VPC 内部 ECS
    │                         │         │
    ▼                         │         ▼
访问 www.example.com           │    查询 db.internal
→ 203.0.113.1(公网)          │    → 172.16.3.10(内网)
                              │         │
                              │         ▼
                              │    查询 www.example.com
                              │    → 203.0.113.1(公网,走公网 DNS)

6.5 ECS 中的 DNS 配置建议

bash
# /etc/resolv.conf(推荐保持默认)
nameserver 100.100.2.136    # 阿里云内部 DNS
nameserver 100.100.2.138    # 备份

# 如果需要自定义(如使用自建 DNS)
# 修改 /etc/systemd/resolved.conf
[Resolve]
DNS=172.16.1.5 100.100.2.136    # 自建 DNS 优先,云 DNS 兜底
Domains=internal.example.com     # 搜索域

第七部分:安全组和网络 ACL

7.1 安全组(Security Group)

安全组是实例级别的虚拟防火墙,绑定到 ECS 的网卡:

            安全组
        ┌─────────────┐
        │ 入站规则     │
互联网 ──→│ TCP 80  允许 │──→ ECS
        │ TCP 443 允许 │
        │ TCP 22  IP限制│
        │ 其他    拒绝  │
        │             │
        │ 出站规则     │
        │ 全部    允许  │──→ 互联网
        └─────────────┘

安全组 vs 传统防火墙

特性安全组iptables
位置云底层(hypervisor 层)操作系统内
性能几乎无开销有 CPU 开销
粒度实例级别包级别
状态有状态(出站自动允许返回)需手动配置 conntrack
可绕过❌ 不能(在 ECS 之前生效)可以被 root 修改

7.2 网络 ACL(Network ACL)

网络 ACL 是 vSwitch 级别的无状态防火墙:

vSwitch 172.16.1.0/24
  ┌──────────────────┐
  │ 网络 ACL          │
  │ 允许 10.0.0.0/8  │──→ vSwitch 内的所有 ECS
  │ 拒绝 0.0.0.0/0   │
  └──────────────────┘
特性安全组网络 ACL
级别ECS 实例vSwitch 子网
状态有状态无状态(需分别配入站和出站)
默认默认拒绝所有入站默认允许所有
推荐用途精细化控制单台 ECS粗粒度控制整个子网

7.3 安全组最佳实践

推荐分层安全组:

Web 层安全组:
  入站:80/443 来自 0.0.0.0/0
  入站:22 来自管理 IP
  出站:全部允许

App 层安全组:
  入站:8080 来自 Web 层安全组 ID    ← 安全组之间引用!
  入站:22 来自管理 IP
  出站:全部允许

DB 层安全组:
  入站:3306 来自 App 层安全组 ID
  出站:全部允许

效果:互联网无法直接访问 DB 层,必须经过 Web → App → DB

第八部分:一次完整的请求旅程

8.1 用户访问你的网站

用户浏览器输入 https://www.example.com


① DNS 解析(用户的 Local Resolver)
   www.example.com → A 记录 → 203.0.113.1(EIP)
   www.example.com → AAAA → 2408:xxxx::1(IPv6 公网)
   → 优先使用 IPv6(Happy Eyeballs)


② 到达云厂商的边缘路由器
   目标 IP: 203.0.113.1
   → 查找 EIP 映射表
   → 203.0.113.1 → NAT → 172.16.1.10:443


③ 安全组检查(入站规则)
   源 IP: 用户 IP,目标端口: 443
   → 安全组规则:TCP 443 允许 ✅


④ 网络 ACL 检查(如果配置了)
   vSwitch 级别过滤


⑤ 到达 ECS 网卡
   eth0: 172.16.1.10
   目标端口: 443
   → Nginx 处理请求


⑥ Nginx 反向代理到后端
   → 172.16.2.10:8080(App 层 ECS)
   → 这次是 VPC 内部通信,不需要经过 NAT
   → 安全组:App 层允许来自 Web 层的 8080 ✅


⑦ App 查询数据库
   → db.internal → PrivateZone 解析 → 172.16.3.10
   → 安全组:DB 层允许来自 App 层的 3306 ✅


⑧ 返回响应
   ECS → 安全组(出站允许)→ NAT(SNAT → EIP)→ 用户

8.2 VPC 内部通信 vs 公网通信

通信类型路径延迟费用
同 vSwitchECS → 虚拟交换机 → ECS< 0.1ms免费
同 VPC 跨 vSwitchECS → 虚拟路由器 → ECS< 1ms免费
跨 VPC(Peering)ECS → VPC-A → Peering → VPC-B → ECS1-2ms免费(同 Region)
跨 RegionECS → 骨干网 → ECS10-50ms按流量计费
出互联网ECS → NAT/EIP → 互联网10-200ms按流量/带宽计费

第九部分:常见架构模式

9.1 基础 Web 架构

互联网


┌──────────┐
│  SLB/ALB  │  ← EIP: 203.0.113.1
│  (443/80) │
└──────────┘

    ├──→ vSwitch-Web (172.16.1.0/24)
    │     ├── ECS-Web-1 (172.16.1.10)
    │     └── ECS-Web-2 (172.16.1.11)

    ├──→ vSwitch-App (172.16.2.0/24)
    │     ├── ECS-App-1 (172.16.2.10)
    │     └── ECS-App-2 (172.16.2.11)

    └──→ vSwitch-DB (172.16.3.0/24)
          ├── RDS 主 (172.16.3.10)
          └── RDS 从 (172.16.3.11)

9.2 私有子网 + NAT 网关

vSwitch-Public (172.16.0.0/24)
  └── NAT 网关 (EIP: 203.0.113.1)
  └── SLB (EIP: 203.0.113.2)

vSwitch-Private (172.16.1.0/24)
  ├── ECS-1 (无公网 IP) ──SNAT──→ NAT 网关 → 互联网
  ├── ECS-2 (无公网 IP) ──SNAT──→ NAT 网关 → 互联网
  └── ECS-3 (无公网 IP) ←──SLB──→ 互联网用户

安全优势:私有子网中的 ECS 不暴露公网 IP

9.3 双栈架构

互联网

    ├── IPv4 用户 → EIP 203.0.113.1 → SLB → ECS
    └── IPv6 用户 → 2408:xxxx::1    → SLB → ECS

VPC(双栈):
  IPv4: 172.16.0.0/16
  IPv6: 2408:xxxx::/56

ECS:
  IPv4: 172.16.1.10(私有) + EIP 203.0.113.1(公网)
  IPv6: 2408:xxxx:1::10(公网,无需 NAT)

DNS:
  A    www.example.com → 203.0.113.1
  AAAA www.example.com → 2408:xxxx:1::10

第十部分:费用控制

10.1 网络相关费用

资源计费方式省钱技巧
EIP按带宽 or 按流量固定流量选带宽,突发选流量
NAT 网关实例费 + 流量费不用时删除,按时段弹性
IPv6 公网带宽按流量 or 按带宽很多地域免费或很便宜
跨 Region 流量按 GB 计费尽量同 Region 部署
VPC Peering同 Region 免费优先用 Peering
SLB实例费 + 流量费按实际规格选择
PrivateZone按 Zone 数量合并相似域名

10.2 网络费用优化

① VPC 内部通信免费 → 微服务尽量在同一 VPC
② 同 Region Peering 免费 → 跨 VPC 用 Peering
③ 避免跨 Region 流量 → CDN 缓存静态资源
④ IPv6 公网带宽通常比 IPv4 便宜 → 推动 IPv6  adoption
⑤ 使用内网 SLB → 内网 SLB 免费,只收公网 SLB 的 EIP 费用

第十一部分:故障排查

11.1 网络不通排查清单

场景 1:ECS 无法 ping 通外网

bash
# 1. 是否有公网出口?
curl ifconfig.me
# 超时 → 没有公网 IP 或 NAT 未配置

# 2. 路由表是否正确?
ip route show
# default via 172.16.1.1 → 检查 NAT 网关是否绑定到该 vSwitch

# 3. 安全组是否允许出站?
# 在控制台检查安全组出站规则

# 4. NAT 网关是否正常?
# 在控制台检查 NAT 网关状态和 SNAT 规则

场景 2:两台 ECS 无法互通

bash
# 1. 是否在同一 VPC?
# 不同 VPC 默认不互通,需要 Peering 或 CEN

# 2. 安全组是否允许?
# 安全组默认拒绝所有入站,需要添加规则
# 可以用安全组 ID 作为源(推荐)

# 3. 是否在同一个路由表下?
# 自定义路由表可能导致路由缺失

# 4. 网络 ACL 是否阻止?
# 检查 vSwitch 的网络 ACL 规则

场景 3:IPv6 连接不通

bash
# 1. ECS 是否有 IPv6 地址?
ip -6 addr show eth0

# 2. VPC 是否开启了 IPv6?
# 控制台 → VPC → 查看 IPv6 CIDR

# 3. vSwitch 是否分配了 IPv6?
# 控制台 → vSwitch → 查看 IPv6 CIDR

# 4. IPv6 公网带宽是否购买?
# 没有公网带宽 → IPv6 只能在 VPC 内部通信

# 5. 安全组是否有 IPv6 规则?
# IPv4 规则不会自动复制到 IPv6!

# 6. 系统是否启用 IPv6?
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# 应该是 0

# 7. DNS 是否有 AAAA 记录?
dig AAAA www.example.com

场景 4:DNS 解析异常

bash
# 1. 内部 DNS 是否可达?
ping 100.100.2.136   # 阿里云

# 2. resolv.conf 是否正确?
cat /etc/resolv.conf

# 3. 公网域名能解析吗?
dig google.com
dig @8.8.8.8 google.com  # 绕过内部 DNS 测试

# 4. PrivateZone 生效了吗?
dig db.internal
# 确认 PrivateZone 已关联到该 VPC

总结

云网络核心架构

VPC = 你的虚拟数据中心
  ├── vSwitch = 按 AZ 和功能划分的子网
  │     └── ECS/RDS/Redis 等资源
  ├── 安全组 = 实例级防火墙(有状态)
  ├── 网络 ACL = 子网级防火墙(无状态)
  ├── 路由表 = 流量走向控制
  ├── NAT 网关 = 私有子网出互联网
  └── EIP = 公网入口

关键认知

  1. ECS 只有私有 IP — 公网通过 EIP/NAT 在云厂商设备上做映射
  2. vSwitch 的网关是虚拟的 — .1 地址不存在于物理设备,由底层处理
  3. IPv6 默认关闭 — 需要手动开启 VPC/vSwitch/ECS 三级 + 购买公网带宽
  4. IPv6 安全组独立配置 — IPv4 规则不会复制到 IPv6
  5. 一台 ECS 可以同时有 IPv4 和 IPv6 公网地址 — 双栈模式
  6. VPC 内部通信免费 — 尽量让微服务在同一 VPC
  7. DNS 分两套 — 内部 DNS(PrivateZone)+ 公网 DNS

延伸阅读