vLAN及VPC主机通讯详解
1. 结论速览
核心结论:
- VLAN 内主机通信:只走二层交换,不需要路由。前提是两台主机 IP 属于同一网段且同一 VLAN(跨交换机时经 Trunk 链路互通,仍是二层行为)。
- 跨 VLAN 主机通信:必须经过三层设备。由三层交换机 SVI(VLANIF)、单臂路由或防火墙完成路由转发,需要正确配置路由(直连/静态/动态路由或策略路由 PBR)。
- 中间有防火墙时:除了路由可达,还必须配置防火墙安全策略。防火墙默认拒绝所有跨区域/跨 VLAN 转发流量,需按五元组显式放行;回程流量由状态检测自动放行。
- 容易忽略的一点:即使 IP 在同一网段,但两台主机被划入不同 VLAN,也无法直接二层互通——必须按跨 VLAN 三层方式通信,或修正 VLAN 划分。
| 场景 | 转发层级 | 需要路由? | 需要防火墙策略? | 关键依赖 |
|---|---|---|---|---|
| 同 VLAN · 同交换机 | 二层 | 否 | 视拓扑 | Access 端口划分正确、MAC 地址表 |
| 同 VLAN · 跨交换机 | 二层 | 否 | 视拓扑 | Trunk 链路放行该 VLAN(802.1Q) |
| 跨 VLAN · 同三层交换机 | 三层 | 是(直连路由) | 视拓扑 | SVI 网关地址、主机网关配置正确 |
| 跨 VLAN · 跨设备(含防火墙) | 三层 | 是(静态/动态/PBR) | 是 | 路由可达 + 防火墙安全策略放行 |
2. 核心概念
| 概念 | 层级 | 说明 |
|---|---|---|
| VLAN | 二层 | 虚拟局域网,将一个物理交换网络在逻辑上隔离为多个广播域。不同 VLAN 的帧在二层互相隔离,广播帧无法穿越 VLAN 边界。 |
| Access 端口 | 二层 | 连接主机的端口,只属于一个 VLAN。收到不带标签的帧后打上该 VLAN 的 PVID 标签(内部标识),发出前剥离标签。 |
| Trunk 端口 | 二层 | 交换机间互联端口,允许多个 VLAN 的帧通过,使用 802.1Q 在以太网帧中插入 4 字节 VLAN Tag(VLAN ID)。 |
| MAC 地址表 | 二层 | 交换机学习"MAC 地址 → 端口 → VLAN"的映射,用于单播帧精确转发;未知单播、广播、组播帧在 VLAN 内泛洪。 |
| ARP | 二/三层之间 | 地址解析协议,通过广播请求获取同一广播域内目标 IP 对应的 MAC 地址。 |
| SVI / VLANIF | 三层 | 三层交换机上 VLAN 的虚拟三层接口,作为该 VLAN 内主机的网关(如 VLANIF 10 = 192.168.10.1/24)。 |
| 路由表 / FIB | 三层 | 指导 IP 报文转发的目的网段 → 下一跳/出接口映射;FIB 为硬件快速转发表。 |
| 策略路由 PBR | 三层 | 基于"策略"(源地址、协议、应用等)而非目的地址决定转发路径的机制,优先于常规路由表。 |
| 防火墙安全策略 | 三层及以上 | 基于安全区域 + 五元组(源/目的 IP、源/目的端口、协议)+ 用户/应用控制流量放行或拒绝,默认拒绝。 |
3. 主机如何判断走二层还是三层
主机的协议栈在发送数据包前只做一件简单的事:用自己的 IP/掩码与目的 IP 做按位与运算,判断目的 IP 是否在同一网段。

4. VLAN 内主机通信(纯二层)
4.1 场景一:两台主机接在同一台交换机

4.2 场景二:同 VLAN 但接在不同交换机(经 Trunk)
两台主机属于同一 VLAN,但分别接在两台不同的交换机上。此时帧需要经过交换机之间的 Trunk 链路(802.1Q 打标签)传输——这仍然是纯二层转发,不涉及任何三层路由。

4.3 VLAN 内通信的配置要点
# ===== 华为 VRP:接入端口与 Trunk =====
vlan batch 10 20 # 创建 VLAN
interface GigabitEthernet0/0/1 # 接 PC1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/24 # 交换机互联(Trunk)
port link-type trunk
port trunk allow-pass vlan 10 20 # 必须放行 VLAN10,否则同 VLAN 跨交换机不通
# ===== Cisco IOS 等价配置 =====
vlan 10
vlan 20
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10
interface GigabitEthernet0/24
switchport mode trunk
switchport trunk allowed vlan 10,20
同 VLAN 不通的常见原因:两端端口 VLAN 划分不一致(Access 口 PVID 不同)、Trunk 未放行该 VLAN、端口被 shutdown、MAC 地址表攻击防护误触发、主机掩码配置错误导致误判网段。
5. 跨 VLAN 主机通信(三层)
VLAN 在二层是隔离的,广播帧(包括 ARP)无法穿越 VLAN 边界。因此跨 VLAN 通信必须引入三层设备终结二层、执行路由转发。主流实现有三种方案:
| 方案 | 原理 | 优点 | 缺点 / 适用场景 |
|---|---|---|---|
| 三层交换机 SVI (推荐) | 在三层交换机上为每个 VLAN 创建 VLANIF/SVI 接口作为网关,硬件 ASIC 完成"一次路由、多次交换"(MLS) | 性能高(线速)、时延低、无单点瓶颈 | 仅提供路由,无安全管控;适合纯内网互访 |
| 单臂路由 (Router-on-a-Stick) | 路由器一个物理接口划分子接口,各子接口对应一个 VLAN 网关,Trunk 相连 | 利用现有路由器,成本低 | 单链路带宽瓶颈、时延较高;适合小型网络或过渡方案 |
| 防火墙做网关 | 防火墙接口/子接口作为各 VLAN 网关,VLAN 间互访必须经过防火墙安全策略 | 集中安全管控、审计、IPS/AV 等高级特性 | 性能损耗、策略维护量大;适合需要安全隔离的区域间互访 |
5.1 完整转发路径(三层交换机方案)

5.2 跨 VLAN 的基础配置(网关部分)
# ===== 华为 VRP:三层交换机 SVI 网关 =====
vlan batch 10 20
interface Vlanif10 # VLAN10 的网关
ip address 192.168.10.1 255.255.255.0
interface Vlanif20 # VLAN20 的网关
ip address 192.168.20.1 255.255.255.0
# 此时 CORE 自动产生两条直连路由:
# Direct 192.168.10.0/24 → Vlanif10
# Direct 192.168.20.0/24 → Vlanif20
# VLAN10 与 VLAN20 之间互访在 CORE 内部即可完成,无需额外路由配置
# ===== Cisco IOS 等价配置 =====
interface Vlan10
ip address 192.168.10.1 255.255.255.0
interface Vlan20
ip address 192.168.20.1 255.255.255.0
ip routing # 思科交换机需手动开启三层路由功能
主机侧必须正确配置默认网关(PC1 → 192.168.10.1,PC3 → 192.168.20.1),否则主机连 ARP 网关这一步都无法完成——这是跨 VLAN 不通的第一排查点。
6. 报文变化对比:VLAN 内 vs 跨 VLAN
| 对比项 | VLAN 内通信(二层) | 跨 VLAN 通信(三层) |
|---|---|---|
| 源/目的 IP 地址 | 端到端不变 | 端到端不变(除 NAT 场景) |
| 源/目的 MAC 地址 | 端到端不变(始终是两台主机自己的 MAC) | 逐跳重写:每过一个三层设备,源/目的 MAC 全部更换 |
| TTL | 不变 | 每过一个三层设备减 1 |
| ARP 对象 | 目的主机本身 | 默认网关(三层设备接口) |
| 是否查路由表 | 否 | 是,每个三层设备均查 FIB |
| 广播帧能否到达对方 | 能(同一广播域) | 不能(路由器默认不转发广播,除非定向转发) |
| 802.1Q Tag | Access 收发剥离,Trunk 链路上携带 | 同左;三层设备收到后按 VLAN 映射到对应三层接口 |
| 典型故障现象 | 不通多为端口 VLAN/Trunk 问题 | 不通多为网关、路由缺失或防火墙拒绝 |
6.1 逐跳报文示例
| 链路位置 | 目的 MAC | 源 MAC | VLAN Tag | IP 源 → 目的 | TTL |
|---|---|---|---|---|---|
| PC1 → SW1(VLAN 内场景) | MAC-BB | MAC-AA | 无(Access 剥离) | .10.11 → .10.12 | 64 |
| SW1 → SW2(Trunk 链路) | MAC-BB | MAC-AA | VLAN 10 | .10.11 → .10.12 | 64 |
| PC1 → CORE(跨 VLAN 场景) | MAC-G1(网关) | MAC-AA | 无 | .10.11 → .20.13 | 64 |
| CORE → PC3(跨 VLAN 场景) | MAC-CC | MAC-G2(网关) | 无 | .10.11 → .20.13 | 63 |
7. 路由策略配置
当 VLAN 网段跨越多台三层设备(如接入到核心、核心到出口、跨机房)时,仅有直连路由不够,需要配置静态路由、动态路由或策略路由保证路由的双向可达。
7.1 路由方式对比
| 方式 | 原理 | 适用场景 | 注意事项 |
|---|---|---|---|
| 直连路由 | 接口配置 IP 后自动生成 | 同一三层设备上的 VLAN 互访 | 无需配置,检查接口 up 即可 |
| 静态路由 | 手工指定目的网段 → 下一跳 | 拓扑简单、稳定的中小网络 | 不随拓扑变化自动收敛;必须双向配置 |
| 默认路由 | 匹配所有未知目的网段 | 指向出口/上级设备 | 避免环路;内网明细路由应更精确 |
| 动态路由(OSPF/BGP) | 邻居自动学习、收敛 | 多设备、多区域大型网络 | 需规划区域、成本、认证 |
| 策略路由 PBR | 基于源地址/应用等指定转发路径,优先于路由表 | 多出口选路、引流至安全设备 | 只影响去程,回程需对称考虑 |
7.2 静态路由 + 默认路由配置
# ===== 华为 VRP =====
# CORE 指向出口防火墙的默认路由
ip route-static 0.0.0.0 0.0.0.0 10.1.1.2
# 出口设备回指内网各 VLAN 网段(汇总为一条)
ip route-static 192.168.0.0 255.255.0.0 10.1.1.1
# ===== Cisco IOS =====
ip route 0.0.0.0 0.0.0.0 10.1.1.2
ip route 192.168.0.0 255.255.0.0 10.1.1.1
路由必须双向可达:本端有去程路由、对端必须有回程路由。单向路由缺失的表现是"ping 不通但能收到对方的回包痕迹"或完全无响应,排查时用 tracert 观察断点位置。
7.3 动态路由(OSPF)配置
# ===== 华为 VRP =====
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 192.168.10.0 0.0.0.255 # 宣告 VLAN10 网段
network 192.168.20.0 0.0.0.255 # 宣告 VLAN20 网段
network 10.1.1.0 0.0.0.3 # 宣告互联网段
# 三层互联口建议改为三层路由口(非 Trunk),提高收敛效率
interface GigabitEthernet0/0/24
undo portswitch # 华为:二层口转三层口
ip address 10.1.1.1 255.255.255.252
# ===== Cisco IOS =====
router ospf 1
router-id 1.1.1.1
network 192.168.10.0 0.0.0.255 area 0
network 192.168.20.0 0.0.0.255 area 0
network 10.1.1.0 0.0.0.3 area 0
7.4 策略路由(PBR)配置:按源地址引流
典型需求:VLAN10(办公)与 VLAN20(服务器)访问外部时走不同出口,或部分流量强制经清洗设备。
# ===== 华为 VRP:MQC 方式 PBR =====
acl number 3001
rule 5 permit ip source 192.168.10.0 0.0.0.255 # 匹配 VLAN10 源网段
traffic classifier c1
if-match acl 3001
traffic behavior b1
redirect ip-nexthop 10.2.1.254 # 强制下一跳(如清洗设备/备用出口)
traffic policy p1
classifier c1 behavior b1
interface Vlanif10
traffic-policy p1 inbound # 在入方向应用策略路由
# ===== Cisco IOS =====
ip access-list extended VLAN10-SRC
permit ip 192.168.10.0 0.0.0.255 any
route-map PBR-VLAN10 permit 10
match ip address VLAN10-SRC
set ip next-hop 10.2.1.254
interface Vlan10
ip policy route-map PBR-VLAN10
PBR 只改变去程路径,回程流量仍按对端路由表返回。若需要对称路径(如 IPS/清洗设备),必须在回程方向做对应的引流设计,否则会出现单边可达或非对称路由引发的会话问题(尤其是有状态设备)。
8. 防火墙策略配置
当 VLAN 互访路径中间部署防火墙时(防火墙做各 VLAN 网关,或串接在三层路径之间),仅有路由是不够的——防火墙默认拒绝所有转发流量,必须显式配置安全策略。
8.1 防火墙的三个核心模型
| 模型 | 说明 |
|---|---|
| 安全区域(Zone) | 接口按信任程度划入区域:Trust(内网)、DMZ(服务器)、Untrust(外网)等。VLAN 间互访即区域间(Inter-Zone)或同域(Intra-Zone)互访。 |
| 安全策略 | 按序匹配:源区域 → 目的区域 → 源/目的地址 → 五元组(协议、端口)→ 用户/应用/时间段,命中即执行动作(permit/deny),未命中走默认拒绝。 |
| 状态检测 | 首包建立会话表,记录五元组与序列号;该会话的后续及回程报文直接按会话表放行,无需再匹配策略——因此只需配置单向(发起方向)策略。 |
8.2 典型拓扑

8.3 华为 USG 防火墙策略配置
# ===== 1. 接口划入安全区域 =====
firewall zone trust
add interface GigabitEthernet1/0/1
firewall zone dmz
add interface GigabitEthernet1/0/2
# ===== 2. 接口地址(作为各 VLAN 网关)=====
interface GigabitEthernet1/0/1
ip address 192.168.10.1 255.255.255.0
interface GigabitEthernet1/0/2
ip address 192.168.20.1 255.255.255.0
# ===== 3. 安全策略:VLAN10 → VLAN20 访问服务器 =====
security-policy
rule name allow-office-to-dmz
source-zone trust
destination-zone dmz
source-address 192.168.10.0 24
destination-address 192.168.20.0 24
service http https # 最小化放行,仅开必要端口
action permit
rule name deny-office-to-dmz-telnet # 显式拒绝管理协议
source-zone trust
destination-zone dmz
source-address 192.168.10.0 24
destination-address 192.168.20.0 24
service telnet
action deny
# 未命中任何策略的流量 → 默认拒绝(无需配置)
# ===== 4. 地址对象与服务定义(推荐用对象而非裸 IP)=====
ip address-set office-vlan10 type object
address 0 192.168.10.0 mask 24
ip address-set dmz-servers type object
address 0 192.168.20.0 mask 24
8.4 Cisco ASA 防火墙策略配置
# ===== 接口划区域(安全级别:内网高、DMZ 中)=====
interface GigabitEthernet0/1
nameif inside
security-level 100
ip address 192.168.10.1 255.255.255.0
interface GigabitEthernet0/2
nameif dmz
security-level 50
ip address 192.168.20.1 255.255.255.0
# ===== ACL 放行 VLAN10 → 服务器区(应用在入方向)=====
access-list inside-to-dmz extended permit tcp 192.168.10.0 255.255.255.0 192.168.20.0 255.255.255.0 eq 443
access-list inside-to-dmz extended permit tcp 192.168.10.0 255.255.255.0 192.168.20.0 255.255.255.0 eq 80
access-group inside-to-dmz in interface inside
# ===== 高到低默认允许,但显式 ACL 收紧;回程靠状态表自动放行 =====
same-security-traffic permit inter-interface # 若存在相同安全级别区域互访需要此命令
8.5 策略设计要点
| 原则 | 说明 |
|---|---|
| 最小权限 | 按"源区域+源地址+目的地址+具体服务端口"精细放行,禁止大网段 any-to-any permit |
| 默认拒绝 | 依赖默认 deny,把"拒绝"作为兜底而非逐条排除;显式 deny 规则仅用于审计需要 |
| 策略顺序 | 自上而下首次命中即生效:明细规则在前、宽泛规则在后;周期性整理冗余与影子策略 |
| 单向配置 | 状态检测下只需配置发起方向;对无状态的透明 ACL 设备需双向配置 |
| 同域互访 | 华为 USG 同一安全区域内流量默认也是拒绝的,需要配置 source-zone 与 destination-zone 相同的域内策略 |
| 日志与审计 | 放行策略开启会话日志,deny 兜底策略记录命中计数,定期导出审计 |
| 健康检查 | 跨 VLAN ping 排障时注意防火墙可能默认不回应 ping 或策略未放行 ICMP,避免误判路由问题 |
9. 端到端完整路径逐步分解(含防火墙)
以最完整场景为例:PC1(VLAN10,192.168.10.11)访问服务器 SVR(VLAN20,192.168.20.13),中间经过接入交换机 → 防火墙(兼做网关)→ 接入交换机。
| 步骤 | 节点 | 动作 | 关键检查项 |
|---|---|---|---|
| 1 | PC1 协议栈 | 判定 .20.13 跨网段,查询本机路由/网关 → 192.168.10.1 | 主机网关、掩码配置正确 |
| 2 | PC1 ↔ 接入交换机 | ARP 广播请求网关 MAC(帧泛洪于 VLAN10 内) | 端口 Access VLAN10 正确 |
| 3 | 防火墙 Trust 口 | 网关接口回应 ARP(网关 MAC-G1);PC1 缓存 ARP 表项 | 接口 up、IP 正确、区域归属正确 |
| 4 | PC1 → 防火墙 | 发送以太网帧 [MAC-G1 | MAC-AA | IP .10.11→.20.13] TTL=64 | 物理链路、双工正常 |
| 5 | 防火墙三层引擎 | 终结二层 → 匹配安全策略(区域/地址/服务)→ 允许则建立会话表,拒绝则丢弃并记日志 | 策略命中日志(最常见故障点) |
| 6 | 防火墙路由 | 查 FIB:192.168.20.0/24 → 直连 DMZ 口;ARP 获取 SVR 的 MAC | 路由表项存在(直连/静态/OSPF) |
| 7 | 防火墙 DMZ 口 → SVR | 重写帧头 [MAC-SVR | MAC-G2 | IP 不变] TTL=63 发出 | DMZ 口 Access/子接口 VLAN 匹配 |
| 8 | SVR | 目的 MAC 匹配本机 → 解封装 → 应用层响应;回程报文源目对调 | 服务器网关指向 .20.1、本机防火墙放行服务端口 |
| 9 | 防火墙(回程) | 匹配既有会话表自动放行,不再重复策略匹配 | 会话老化时间 > 业务空闲间隔 |
| 10 | PC1 | 收到响应帧,完成一次往返通信 | 端到端时延/丢包统计 |
10. 故障排查
10.1 分层排查法(从近到远)
# 第一步:本机与网关
PC1> ipconfig /all # 核对 IP、掩码、网关、VLAN 归属
PC1> ping 192.168.10.1 # 通 = 二层与网关正常;不通查端口 VLAN/链路
# 第二步:网关侧连通性(在三层设备/防火墙上)
[CORE] display ip interface brief # 接口与协议状态必须均为 up
[CORE] display ip routing-table 192.168.20.0 # 回程去程路由是否存在
[CORE] ping -a 192.168.10.1 192.168.20.13 # 指定源地址测试跨 VLAN 转发
# 第三步:路径追踪,定位断点
PC1> tracert -d 192.168.20.13 # 观察在哪一跳中断
# 第四步:防火墙策略与会话(若路径含防火墙)
[USG] display firewall session table verbose destination 192.168.20.13
[USG] display security-policy rule all # 策略命中计数
[USG] display firewall statistic system discard # 丢包统计(按原因分类)
# 第五步:二层细节(VLAN 内不通时)
[SW] display vlan # VLAN 与端口归属
[SW] display mac-address vlan 10 # MAC 学习是否正常
[SW] display port vlan # Access/Trunk 与放行列表
10.2 症状 → 根因速查表
| 症状 | 最可能根因 | 验证手段 |
|---|---|---|
| 同 VLAN 不通,跨 VLAN 反而正常 | 端口 VLAN 划分错误 / Trunk 未放行 | display vlan / display port vlan |
| ping 网关通,ping 跨 VLAN 不通 | 对端回程路由缺失 / 主机网关配错 | 双方 display ip routing-table |
| tracert 在防火墙一跳后中断 | 防火墙策略未放行或安全区域配置错误 | 会话表 + 策略命中日志 |
| 偶发不通、大流量时丢包 | 非对称路由绕开有状态设备 / ARP 表项抖动 | 会话表路径核对、MAC/ARP 漂移检查 |
| 能 ping 通但应用访问失败 | 防火墙只放行了 ICMP 未放行业务端口 | 策略中 service 明细核对 |
| 主机获得 IP 却完全不通 | 同网段但划入不同 VLAN(二三层判断冲突) | 核对两端端口 VLAN 一致性 |
11. 最佳实践
- VLAN 规划与 IP 规划一一对应:一个 VLAN 一个网段,从源头杜绝"同网段不同 VLAN"的二义性。
- 网关集中部署:网关统一放在核心三层交换机或防火墙,避免多网关、VRRP 不一致问题。
- 内网高吞吐互访走三层交换机,需安全管控的互访走防火墙:安全与性能分层设计,不要把所有流量压到防火墙。
- 防火墙策略对象化 + 命名规范:地址集、服务集、规则名带业务标识,便于审计与变更。
- 路由对称性:PBR/多出口场景务必设计回程路径,保证有状态设备看到双向流量。
- 变更留痕:策略与路由变更前导出配置快照,配置 NTP 保证日志时间准确。
- 监控三件套:接口流量、路由邻居状态(OSPF neighbor)、防火墙策略命中与丢包计数接入监控告警。
12. 术语表
| 缩写 | 全称 / 中文 |
|---|---|
| SVI / VLANIF | Switch Virtual Interface / 交换机虚拟接口(华为称 VLANIF) |
| PVID | Port VLAN ID,Access 端口默认 VLAN |
| FIB | Forwarding Information Base,转发信息表 |
| PBR | Policy-Based Routing,策略路由 |
| MLS | Multi-Layer Switching,多层交换(一次路由、多次交换) |
| USG | 华为统一安全网关(防火墙产品线) |
| VRRP | 虚拟路由冗余协议(网关双活/主备) |
| 五元组 | 源 IP、目的 IP、源端口、目的端口、协议号 |
13. 云上 VPC:与传统网络的映射
公有云 VPC(Virtual Private Cloud)本质上是云厂商用 SDN + Overlay 隧道(VXLAN 等技术)在共享物理网络上虚拟出来的私有网络。它对用户呈现的语义与自建数据中心高度一致,但角色分工完全不同——底层二层交换、MAC 学习、Trunk、生成树这些全部由云平台托管,用户只需关心三层以上的逻辑配置。
| 传统网络 | 云上 VPC | 关键差异 |
|---|---|---|
| 物理数据中心 / 局域网 | VPC(虚拟私有云) | VPC 是三层逻辑边界,默认相互隔离 |
| VLAN(二层广播域) | 子网 Subnet(三层网段) | 云上隔离单位是三层网段而非 VLAN 标签;子网绑定可用区(AZ) |
| 接入/汇聚交换机 | 虚拟交换机(阿里云 VSwitch / 腾讯云子网 / AWS Subnet) | 用户不可见不可管理,由宿主机虚拟交换(OVS 等)实现 |
| 三层交换机 SVI / 网关 | VPC 路由器 VRouter(系统托管) | 隐式存在,通过"路由表"体现,无设备实体可登录 |
| 802.1Q Trunk / VXLAN | 云厂商 Overlay 隧道(VXLAN / 私有协议) | 对用户完全透明,不存在配置 Trunk 的概念 |
| 防火墙安全策略 | 安全组 SG(实例/网卡级,有状态)+ 网络 ACL(子网级,无状态) | 安全组是分布式作用于虚拟网卡的"随身防火墙",回程自动放行 |
| 静态 / 动态路由 | VPC 路由表(系统路由 local + 自定义路由) | local 路由不可删;自定义路由支持下一跳为网关/对等连接/ENI 等 |
| MAC 地址表 / ARP 泛洪 | SDN 控制器下发流表 / 分布式 ARP 代理 | 没有广播风暴问题;ARP 行为由平台代答或压制 |
云上通信与传统网络的对应关系速记:
- 同子网通信 ≈ VLAN 内通信(二层直达,但受安全组约束)
- 同 VPC 跨子网 ≈ 同一台三层交换机上的跨 VLAN(VRouter 直连路由自动放行,无需手工配路由)
- 跨 VPC ≈ 跨机房/跨设备的三层互通(必须显式建立互联:对等连接 / 云联网 / VPN / 专线,并配置路由)
- 安全组 ≈ 防火墙策略(默认拒绝入站,需显式放行;有状态,只需配单向)
14. VPC 内主机通信
14.1 原理与路径

| 场景 | 转发路径 | 需要路由配置? | 需要安全组放行? |
|---|---|---|---|
| 同子网 ECS 互访 | 二层直达(底层 Overlay 隧道,用户无感) | 否 | 是(最高频故障点) |
| 同 VPC 跨子网 | VRouter 三层转发(local 系统路由) | 否(除非自定义路由表覆盖) | 是 |
| 跨可用区(跨 AZ) | 底层经云厂商骨干网,逻辑上仍是子网内/VPC 内路由 | 否 | 是 |
14.2 关键配置项
- VPC CIDR 规划:使用 RFC1918 私网段(10.x / 172.16-31.x / 192.168.x),规划时必须预留未来跨 VPC / 混合云互联的地址空间,避免 CIDR 重叠(重叠将导致互联后路由失效,且事后改动代价极大)。
- 子网 CIDR:子网是 VPC CIDR 的细分,云厂商会保留少量系统 IP(如每子网前几个地址);子网绑定可用区。
- 路由表:每个子网必须关联一张路由表;系统自动注入
local路由(目的 = VPC CIDR,下一跳 local,不可删除、优先级最高)。 - 安全组规则:入/出方向、协议端口、源/目的地址;规则评估为"有规则即放行、无规则即拒绝",无显式 deny。
| 厂商 | 默认安全组行为 | 同安全组内互通 |
|---|---|---|
| 阿里云 | 默认安全组:入方向放行 22/3389 + ICMP;其余拒绝 | 默认安全组内实例互相放通;自定义组需显式配置(源选本安全组) |
| 腾讯云 | 模板可选(放通全部/常用端口/自定义);入站默认逻辑为未配置即拒绝 | 安全组内"组内互访"开关,开启后同组实例互访放通 |
| AWS | 默认安全组:允许同安全组实例互访 + 出站全放;自定义安全组默认入站全拒 | 源/目的填安全组 ID 即可实现组内互访 |
# ===== 安全组规则示例(通用语义,各家控制台表述类似)=====
# 目标:允许子网 A 的 ECS1 访问子网 B 的 ECS3 的 443 端口
ECS3 绑定的安全组 SG-B · 入方向规则:
协议: TCP 端口: 443 源地址: 10.0.1.0/24(或源安全组 SG-A) 策略: 允许
# 出方向:通常默认全放行(或按需收紧);回程流量由状态机制自动放行,无需配反向规则
# ===== 排错用:验证 ECS 上实际生效路径 =====
ECS1$ ping 10.0.2.13 # 先测三层连通
ECS1$ traceroute 10.0.2.13 # 首跳即到对端(VRouter 隐藏,多数云不回应 TTL 超时,属正常)
ECS1$ curl -v telnet://10.0.2.13:443 # 测端口(ping 通不代表端口通)
ECS3$ sudo tcpdump -i eth0 host 10.0.1.11 # 抓包判断包是否到达(区分安全组丢包 vs 路由丢包)
15. 跨 VPC 主机通信
15.1 五种互联方式对比
不同 VPC 默认完全隔离(即使 CIDR 不同、同账号同地域)。跨 VPC 通信必须显式建立三层互联通道,并在双方路由表配置指向该通道的路由。

| 方式 | 原理 | 路由配置 | 带宽 / 时延 | 典型场景 |
|---|---|---|---|---|
| 对等连接 Peering | 两条 VPC 间点对点通道,流量走云内网骨干 | 双方路由表各自手工加路由 | 同地域高;跨地域取决于地域间骨干 | 少量 VPC 两两互通 |
| 云联网 CEN / Transit Gateway | 中心化 Hub,挂载多个 VPC,全网状互通 | 挂载后路由自动学习传播,可配路由策略过滤 | 跨地域需带宽包/跨地域带宽 | 多 VPC 多账号大规模组网(首选) |
| VPN 网关 (IPsec) | 公网加密隧道,SD-WAN 逻辑 | 路由表指向 VPN 网关 + 双端感兴趣流一致 | 受公网质量影响,时延抖动较大 | 低成本混合云、灾备链路 |
| 专线 + 专用通道 | 物理专线接入云接入点(独占/共享端口) | 边界路由器 BGP/静态发布路由 | 最优、最稳定 | 生产级混合云、大带宽低时延 |
| PrivateLink / 终端节点 | 服务提供方 VPC 中创建终端服务,消费方 VPC 建端点单向访问 | 端点自动注入 /32 路由 | 同地域内网质量 | 跨账号暴露服务而不打通全网 |
对等连接的三个硬性限制:① 两端 CIDR 不能重叠(重叠网段路由无效);② 不具备传递性——A-B、B-C 两条 Peering 不能让 A 经 B 到达 C,中转需求必须用 CEN/TGW;③ 路由必须双向配置,只配一边则单向可达。
15.2 配置步骤(以对等连接为例,三厂商对照)
# ===== 通用四步(腾讯云 / 阿里云 / AWS 控制台语义一致)=====
1. 创建对等连接
发起方选择本端 VPC-A、对端 VPC-B(跨账号时填对方账号 ID)
跨账号场景:对端账号登录后"接受"连接(未接受则通道无效)
2. 配置本端路由(VPC-A 各子网关联的路由表)
目的网段: 10.2.0.0/16 下一跳类型: 对等连接 下一跳: pcx-xxxx
3. 配置对端路由(VPC-B 各子网关联的路由表)—— 必须双向!
目的网段: 10.1.0.0/16 下一跳类型: 对等连接 下一跳: pcx-xxxx
4. 安全组放行
VPC-B 中目标 ECS 的安全组入方向: 源 10.1.0.0/16 + 协议端口
# ===== AWS CLI 等价操作 =====
aws ec2 create-vpc-peering-connection --vpc-id vpc-a --peer-vpc-id vpc-b --peer-owner-id <对方账号>
aws ec2 accept-vpc-peering-connection --vpc-peering-connection-id pcx-xxxx # 对端账号执行
aws ec2 create-route --route-table-id rtb-a --destination-cidr-block 10.2.0.0/16 \
--vpc-peering-connection-id pcx-xxxx
aws ec2 create-route --route-table-id rtb-b --destination-cidr-block 10.1.0.0/16 \
--vpc-peering-connection-id pcx-xxxx
# ===== 云联网 CEN(以腾讯云为例)=====
1. 创建云联网实例(选择计费模式:按带宽 / 按流量)
2. 关联网络实例:将 VPC-A、VPC-B(可跨账号,需对方账号确认)加入云联网
3. 路由自动发布:检查各 VPC 路由表已自动学习对端网段(也可在云联网路由表配置策略控制发布/接收)
4. 跨地域互通:购买跨地域带宽并分配给地域间链路
15.3 跨 VPC 报文路径特征
| 对比项 | 说明 |
|---|---|
| IP 地址 | 内网 IP 端到端不变(Peering/CEN/专线);VPN 场景同样不变,仅外层隧道封装变化 |
| MAC 地址 | 对用户不可见——Overlay 隧道重新封装,两端的"虚拟网关"代答 ARP |
| TTL | 跨 VPC 一般表现为减 1 或对用户透明(不同厂商实现不同),不影响排障 |
| 二层互通性 | 不同 VPC 二层永远隔离(无特别配置时),跨 VPC 只有三层语义 |
| 回程流量 | 按对端 VPC 路由表返回;安全组有状态,回程自动放行 |
16. 云上常见问题排查
16.1 分层排查路径(由近及远)
# 第一步:实例与安全组层(占云上"不通"问题的绝大多数)
ECS$ ip addr / ifconfig # 核对私网 IP、确认网卡正常
控制台 → ECS → 安全组 → 入方向规则 # 源网段/端口是否覆盖当前访问
ECS$ sudo tcpdump -i eth0 host <对端IP> # 包到了吗?到了不回 = 本机/安全组问题
# 第二步:路由层
控制台 → VPC → 路由表 → 检查子网关联的路由表:
① local 路由存在且未被自定义路由遮蔽
② 跨子网:无需额外路由(local 覆盖全 VPC)
③ 跨 VPC:去程 + 回程两侧路由表均需指向 Peering/CEN/VPN 网关
# 第三步:互联通道层
控制台 → 对等连接状态(未接受/已失效/CIDR 重叠告警)
控制台 → 云联网路由表(对端网段是否已学习、是否被路由策略过滤)
控制台 → VPN 通道状态(SA 是否协商成功、感兴趣流两端是否对称)
# 第四步:路径验证
ECS1$ ping <对端IP> # 三层连通性
ECS1$ telnet/curl <对端IP> <端口> # 四层连通性(ping 通≠端口通)
VPC 流日志 Flow Logs # 按五元组过滤 ACCEPT/REJECT 记录,定位丢弃位置
16.2 症状 → 根因速查表
| 症状 | 最可能根因 | 验证手段 |
|---|---|---|
| 同子网两台 ECS 互相 ping 不通 | 安全组未放行(最高频);IP/掩码错配 | tcpdump 看包是否到达 + 安全组规则核对 |
| 同 VPC 跨子网不通 | 子网关联了自定义路由表且缺少 local/覆盖错误;网络 ACL 显式拒绝 | 路由表 local 条目 + ACL 规则顺序 |
| Peering 通了一半(单通) | 只配了一侧路由;对端安全组未放行 | 两侧路由表逐一核对;流日志查 REJECT |
| Peering 创建成功但不通 | CIDR 重叠、跨账号未接受、路由表关联的子网不覆盖发起端 | 对等连接状态告警 + 路由表核对 |
| CEN 挂载了但不通 | 路由未传播(路由策略过滤)、跨地域带宽未购买/耗尽、账号未授权 | 云联网路由表学习状态 + 带宽监控 |
| VPN 隧道时通时断 | IKE 参数/预共享密钥不一致、感兴趣流不对称、NAT-T 环境协商异常 | VPN 通道协商日志(IKE 阶段一/二) |
| ping 通但业务端口不通 | 安全组只放行了 ICMP;目标服务未监听;ACL 无状态需双向放行 | telnet 端口 + 服务端 ss/netstat |
| 公网访问不通(顺带) | EIP 未绑定、安全组未放行公网源、实例欠费停机 | EIP 绑定状态 + 账户状态 |
16.3 云上 vs 线下排障思维差异
- 先查安全组,再查路由:与线下"先路由后策略"相反,云上分布式安全组是默认控制点,命中概率最高。
- 没有设备 CLI 可登录:VRouter 是托管的,排障靠控制台路由表、流日志、连通性诊断工具,而不是 display 命令。
- traceroute 参考价值下降:虚拟路由器多不回应 ICMP TTL 超时,路径"看起来断了"但实际通,需结合流日志判断。
- 抓包仍是最硬的证据:tcpdump 能区分"包没到(路由/通道问题)"与"包到了没回(安全组/主机问题)"。
- 变更留痕同样重要:路由表、安全组、Peering 变更走工单/审计日志,配置快照与回滚预案先行。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)