华为云 VPC 对等连接建好了却不通?分层排查:路由、网段重叠、安全组/ACL 与跨账号
对等连接列表里状态已经是「已接受」,两边 ECS 却互相 ping 不通、端口连不上——这是 VPC 对等连接最常见的求助场景。很多人第一反应是删掉重建,但对等连接本身只是一条「通道」,流量能不能真正走过去,还取决于两端路由表、网段规划、安全组、网络 ACL 以及实例内部配置。本文对照华为云 VPC 官方文档,把「建好却不通」拆成几层,给出每层的现象、检查点和命令,最后附推荐顺序、速查表和常见坑。
官方 FAQ「为什么对等连接创建完成后不能互通?」给出的高频原因顺序是:网段重叠 → 路由配置错误 → 网络配置错误(安全组、实例防火墙、网络 ACL、多网卡策略路由)→ ECS 基本网络功能异常。本文在官方顺序前补了「前提与状态」这一前提层,正文先展开路由,再讲网段重叠、放行和实例内部。
一、先定层:通道、路由、放行、实例
动手前,我习惯先把问题归到下面四层之一:
| 层 | 关注点 | 一句话判断 |
|---|---|---|
| 前提与状态 | 同区域、对等连接状态、跨账号是否已接受 | 通道到底建成了没有 |
| 路由与网段 | 两端路由表、目的地址、网段重叠、与 VPN/云专线冲突 | 包知不知道往对等连接走 |
| 安全组与网络 ACL | 两端实例安全组、子网 ACL | 包走到了,有没有被拦 |
| 实例内部 | 网卡 IP、系统防火墙、多网卡策略路由、服务监听 | 包到了实例,系统收不收 |
先在本端 ECS 上做一组最小测试,后面每层都拿它验证:
# 本端 ECS 上执行,172.17.0.21 为对端实例私有 IP(示例)
ip address # 确认本机私有 IP 和网卡
ip route # 确认默认网关
ping -c 4 172.17.0.21 # ICMP 连通性
nc -vz -w 3 172.17.0.21 22 # TCP 端口连通性,端口按实际业务替换(部分精简镜像自带的 BusyBox nc 可能不支持 -z)
其中 nc、iptables、firewall-cmd、ss 以及 ping -c 属于通用 Linux 排查用法,不是华为云官方文档中的原话。官方 FAQ 示例主要使用 ip address / ifconfig、ping、ping -I,Windows 使用 ipconfig。
注意 ping 不通不等于网络不通:ICMP 可能被安全组拦住而 TCP 是放通的。所以 ICMP 和业务端口最好都测一次,两个结果组合起来更容易定位。
二、第 0 层:前提与状态
1. 两端 VPC 必须在同一区域
官方明确:对等连接仅可以连通同区域的 VPC,不同区域的 VPC 之间不能创建对等连接。跨区域互通应使用云连接;只是少量 ECS 互通,也可以各自绑定 EIP 走公网。官方还说明,中国站和国际站相同区域的 VPC(例如都在「中国-香港」)可以通过对等连接连通。
2. 对等连接状态
同账号创建的对等连接无需对端确认;跨账号则由本端发起后状态为「待接受」,需要对端账号在对等连接列表里点「接受请求」,状态变为「已接受」才算创建完成;对端拒绝则创建失败。API 层面的状态值为:
GET /v2.0/vpc/peerings
PENDING_ACCEPTANCE 等待接受
REJECTED 已拒绝
EXPIRED 已过期
DELETED 已删除
ACTIVE 活动的
常见的情况是:发起方以为建好了,对端账号的人根本没登录控制台去接受。另外,跨账号创建时填的「对端项目 ID」必须是对端 VPC 所在区域对应的项目 ID(对端账号在「我的凭证」里查),填错会提示「请输入正确的 VPC ID 以及项目 ID」。官方也提醒:不要接受来自未知账号的对等连接申请。
3. 一对 VPC 只有一条对等连接
两个 VPC 之间只能建立一个对等连接。想「再建一条试试」是建不出来的,排查方向应回到路由和放行上。
三、第 1 层:路由——最常见的问题
1. 两端路由表都要加,去程和回程缺一不可
这是对等连接最容易漏的一步。官方原话是:通常需要在对等连接两端 VPC 的路由表中分别添加去程和回程路由。只在本端加了到对端的路由,请求能过去,回包却回不来,表现就是「单向不通」或者干脆都不通。
| 路由表 | 目的地址 | 下一跳 |
|---|---|---|
| VPC-A 的路由表 | 172.17.0.0/16(VPC-B 网段) |
对等连接 peering-AB |
| VPC-B 的路由表 | 172.16.0.0/16(VPC-A 网段) |
对等连接 peering-AB |
跨账号时,本端账号只能在本端 VPC 加路由,对端路由要对端账号自己加;查看路由也一样,各自登录各自账号,在对等连接详情页下方的路由列表里看。
2. 选对路由表:子网关联的是哪张
VPC 自带默认路由表,子网也可以关联自定义路由表;一个子网只能关联一个路由表。官方在添加对等连接路由的说明里写明:如果下拉列表里同时有默认路由表和自定义路由表,要选对等连接连通的子网所关联的路由表。很多人把路由加进了默认路由表,而业务子网实际关联的是自定义路由表,于是路由「加了但没生效」。
官方路由表概述还补充了一点:子网关联自定义路由表通常只影响子网的出流量走向,从对等连接、云专线、VPN 进入 VPC 的入流量仍然匹配所在 VPC 的默认路由表(企业路由器场景例外)。复杂组网时可以把这一点也纳入核对。
3. 目的地址要对
本端路由的目的地址应是对端 VPC 网段、子网网段或相关私有 IP,对端反之。目的地址范围可以按需收窄:填整个 VPC 网段就连通整个 VPC,填子网网段或单个 IP 就只连通那一部分。常见的错误是两端网段抄反、掩码写错,或只放了一个子网却去访问另一个子网的实例。
4. 和 VPN/云专线路由重叠
对于云上云下互通的组网,官方要求检查对等连接路由是否和云专线、VPN 路由的目的地址重叠;重叠时对等连接不生效,需要重新规划。另外要了解匹配规则:VPC 路由按 Local 路由 > 明细路由 > EIP 路由 > 默认路由的顺序,明细路由之间遵循最长匹配。
5. CCE 集群:VPC 网络模型还要加容器网段
如果一端是 CCE 集群,按 CCE 最佳实践:容器隧道网络和 CCE Turbo(云原生网络 2.0)只需打通两端 VPC 网段;VPC 网络模型的集群还需要在路由里加上集群容器网段,否则 Pod IP 互访不通。另外,对端实例的安全组也要放通容器网段。规划时 VPC 网段、子网网段和容器网段都要避免重叠,具体以 CCE 官方文档为准。
四、第 2 层:网段重叠
网段重叠是官方 FAQ 排在第一位的原因,而且一旦发生,常常只能改规划。原理是:VPC 路由表里的 Local 路由优先级最高,当对等连接路由的目的地址与 Local 路由重叠时,流量会优先匹配 Local 路由留在本 VPC 内部转发,根本到不了对端。
官方分三种情况:
- VPC 网段不重叠,子网也不重叠:可以建立整个 VPC 之间的对等连接。
- VPC 网段重叠、部分子网重叠:不能建指向整个 VPC 网段的对等连接;可以只连通不重叠的子网(两端都不能包含重叠子网),或只连通指定 ECS(私有 IP 不能相同)。
- VPC 网段重叠、全部子网重叠:任何对等连接都无效,只能重新规划网段。
官方举的例子:VPC-A 为 192.168.0.0/16,VPC-B 为 192.168.0.0/16 或 192.168.0.0/18,都属于网段重叠。还有一个容易忽略的点:这条限制同样适用于 IPv6,即使只想用对等连接做 IPv6 通信,只要两端 IPv4 网段和子网重叠,对等连接也不生效。
我更喜欢在建对等连接之前就把两端网段、子网、容器网段列成一张表核对一遍,比事后改规划省事得多。
五、第 3 层:安全组与网络 ACL
这一层只讲对等连接场景下怎么查,选型对比不展开。
1. 安全组:两端都要放通对方
官方示例中使用「自定义」预设的安全组,其规则只保证同一安全组内实例互通,外部流量默认拒绝:
- 同账号、两端实例在同一安全组:对等连接和路由配好后即可互通。
- 两端实例在不同安全组:需要在各自安全组入方向添加规则,源地址填对端 VPC 网段或子网网段;同账号时也可以把源地址设为对端实例的安全组。
- 跨账号:两端实例必然在不同安全组,官方示例用对端 VPC 网段作为源地址,在
Sg-A、Sg-B两边各加一条。
检查时别只看 ECS:RDS、DCS 等实例也有自己的安全组,访问它们时同样要放通来自对端网段的流量。想用 ping 验证,还要确认放通了 ICMP。
2. 网络 ACL:关联了就默认全拒
VPC 默认不带网络 ACL;一旦给子网关联了网络 ACL,默认规则会拒绝所有出入子网的流量,只放通同子网内互通、广播组播、元数据和公共服务预留网段等少数流量。对等连接的流量来自另一个 VPC,不在默认放通范围内,必须加自定义规则放通对端网段。ACL 是有状态的,响应流量不受规则限制;流量先匹配网络 ACL,再匹配安全组。两端子网如果都关联了 ACL,两端都要查;从本端主动建连时,本端子网 ACL 的出方向也要放通到对端网段。
六、第 4 层:实例内部
前面都对了还不通,就进实例看:
# 1) 网卡拿到 IP 了吗?没拿到先查子网 DHCP 是否开启
ip address
# 2) 能 ping 通本子网网关吗?不通属于二三层基础问题
ping -c 3 <本子网网关IP>
# 3) 系统防火墙是否拦截对端网段
sudo iptables -S | head -50
sudo firewall-cmd --list-all 2>/dev/null
# 4) 服务是否监听在私网地址而不是 127.0.0.1
ss -lntp
# 5) 多网卡:按源 IP 分别 ping 各自网关,验证策略路由
ping -I <eth0的IP> <eth0子网网关>
ping -I <eth1的IP> <eth1子网网关>
多网卡 ECS 是个隐蔽的坑:回包可能从另一张网卡发出去,导致对端收不到。官方建议按源 IP 分别 ping 各自网关验证,不通则需要配置策略路由。Windows 实例可用 ipconfig 查看 IP,并检查 Windows 防火墙。
七、推荐排查顺序
- 确认两端同区域,对等连接状态为「已接受」(跨账号看对端是否接受)。
- 核对两端 VPC、子网(和容器)网段是否重叠;全部重叠直接重新规划。
- 在两端分别查看对等连接路由:去程、回程是否都在,路由表是否是业务子网关联的那张,目的地址是否正确,是否与 VPN/云专线路由重叠。
- 查两端实例安全组入方向是否放通对端网段,以及测试用的协议和端口。
- 查两端子网是否关联网络 ACL,有则放通对端网段。
- 进实例查 IP、网关、系统防火墙、服务监听和多网卡策略路由。
- 仍不通,带着两端配置截图提交工单。
八、速查表
| 现象 | 优先怀疑 | 检查点 |
|---|---|---|
| 跨账号,状态一直是「待接受」 | 对端未接受 | 对端账号登录,点「接受请求」 |
| 创建时报项目 ID 或 VPC ID 错误 | 项目 ID 填错区域 | 对端 VPC 所在区域的项目 ID |
| 想连另一区域的 VPC | 不支持 | 改用云连接,或少量实例走 EIP |
| 状态正常但双向都不通 | 路由缺失或网段重叠 | 两端路由表、Local 路由冲突 |
| 只有一个方向能发起 | 一端缺路由或一端安全组未放 | 回程路由、对端安全组入方向 |
| 路由加了仍不通 | 加错了路由表 | 子网关联的是哪张路由表 |
| 有 VPN/云专线时不通 | 目的地址重叠 | 下一跳为 VPN/云专线的路由 |
ping 不通但端口通 |
ICMP 未放通 | 安全组/ACL 的 ICMP 规则 |
| 子网刚关联 ACL 后全断 | ACL 默认拒绝 | 自定义放通规则 |
| Pod 访问对端不通 | 缺容器网段路由 | CCE 网络模型与容器网段 |
| 多网卡实例时通时不通 | 策略路由 | 按源 IP 分别 ping 网关 |
九、常见坑
- 想借对端 EIP 上网:对等连接不支持共用 EIP,VPC-B 的实例不能通过 VPC-A 实例绑定的 EIP 访问公网;需要用 NAT 网关或 SNAT 服务器方案。
- 三个 VPC 以为自动互通:A 分别和 B、C 对等,B 和 C 不会自动互通。公有云文档把经中转 VPC 配路由的做法称作「对等连接具有传递性」,意思是可以通过配置路由来转发,而不是自动传递。官方给了两种做法:建 B-C 对等连接,或按官方「传递性」示例在三端路由表里配置经 A 转发的路由(VPC 网段不能重叠)。VPC 较多时,官方建议考虑企业路由器 ER 构建中心辐射型组网。
- 路由条目上限:官方提示一个 VPC 内所有路由表最多容纳 1000 条路由(系统自动添加的「系统」路由不占配额),多 VPC 两两对等前要算一下。
- 删除影响路由:任一方删除对等连接后,两端路由表里该对等连接的路由会被一并删除,误删后需要重建并重新加路由。
- 改规则后老连接不变:网络 ACL 规则变更对已建立的长连接不会立即生效,测试时要新建连接验证。
十、官方参考
为什么对等连接创建完成后不能互通(FAQ)
https://support.huaweicloud.com/vpc_faq/vpc_faq_0069.html
对等连接概述
https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655036.html
创建对等连接连通同账户下的两个VPC网络
https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655037.html
创建对等连接连通不同账户下的两个VPC网络
https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655038.html
获取对等连接的对端项目ID
https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0005.html
查看对等连接路由
https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0004.html
对等连接配置建议
https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046809840.html
连通整个VPC网络的对等连接配置示例(含传递性示例)
https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0009.html
无效的VPC对等连接配置示例
https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0012.html
对等连接是否可以连通不同区域的VPC(FAQ)
https://support.huaweicloud.com/vpc_faq/faq_connection_0001.html
路由表和路由概述
https://support.huaweicloud.com/usermanual-vpc/vpc_route01_0001.html
网络ACL概述
https://support.huaweicloud.com/usermanual-vpc/acl_0001.html
二三层通信出现问题时如何排查(FAQ)
https://support.huaweicloud.com/vpc_faq/vpc_faq_0088.html
删除对等连接
https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0003.html
网络ACL配置示例
https://support.huaweicloud.com/usermanual-vpc/acl_0002.html
查询对等连接列表(API)
https://support.huaweicloud.com/api-vpc/vpc_peering_0001.html
CCE集群实现访问跨VPC网络通信
https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_10044.html
- 点赞
- 收藏
- 关注作者
评论(0)