在腾讯云中,多台服务器(CVM 实例)实现内网互通是默认且自动支持的,但需满足一定前提条件并进行合理配置。以下是详细、准确、可操作的配置指南:
✅ 核心原则:同一私有网络(VPC) + 同一可用区(或跨可用区) + 正确安全组/网络ACL策略
一、前提条件(必须满足)
| 条件 | 说明 |
|---|---|
| ✅ 同属一个 VPC(私有网络) | 不同 VPC 默认不互通(即使地域相同),需通过对等连接或云联网(CCN)打通。 |
| ✅ 子网(Subnet)路由可达 | 同一 VPC 内子网间默认路由互通(系统路由表已包含 10.0.0.0/8 或自定义网段的本地路由 Destination: 10.0.1.0/24, Target: Local)。无需手动添加。 |
| ✅ 实例处于运行中状态 | 关机状态无法响应内网请求。 |
| ⚠️ 跨可用区(AZ)也支持内网互通 | 腾讯云同一地域(Region)下不同可用区之间通过高速内网互联(延迟低、带宽高),无需额外配置路由,但需注意:安全组和网络 ACL 需放行。 |
二、关键配置步骤(按优先级排序)
🔹 1. 检查并确保所有 CVM 在同一 VPC 下
- 控制台路径:云服务器 CVM → 选择实例 → 查看「私有网络」列。
- 若不在同一 VPC:
- ✅ 推荐方案:重新创建实例时选择目标 VPC 和子网;
- ❌ 不建议:迁移已有实例(需关机+更换子网,受限且复杂);
- ✅ 跨 VPC 互通:使用 VPC 对等连接(Peering Connection)(同地域)或 云联网 CCN(跨地域/多 VPC)。
🔹 2. 配置安全组(最重要!内网不通 90% 是安全组问题)
- 安全组是实例级别的虚拟防火墙,控制进出流量。
- ✅ 正确做法(推荐):
- 创建一个专用内网互通安全组(如
sg-intranet-allow); - 添加入站规则(Inbound),允许来自同一 VPC 内网网段的流量:
协议端口:全部 / 或指定(如 TCP:22,3306,8080) 源 IP:10.0.0.0/8(若 VPC 网段为 10.x.x.x) 或更精确:10.0.1.0/24(对应子网网段) 描述:允许同VPC内网访问 - 将该安全组绑定到所有需要互通的 CVM 实例(可多选批量绑定)。
- 创建一个专用内网互通安全组(如
- ❌ 常见错误:
- 安全组只放行了
0.0.0.0/0(公网)但未放行内网网段; - 使用默认安全组(通常仅开放 22/3389,且源为
0.0.0.0/0,但内网通信仍需显式放行内网 CIDR); - 多个安全组叠加导致策略冲突(建议精简,1~2 个即可)。
- 安全组只放行了
💡 提示:腾讯云安全组默认拒绝所有入站流量,必须显式添加“允许”规则。
🔹 3. (可选)检查网络 ACL(子网级别防火墙)
- 网络 ACL 是子网级别的无状态防火墙,默认规则允许全部出入站。
- ✅ 仅当您主动修改过网络 ACL 时才需检查:
- 进入 VPC 控制台 → 私有网络 → 选择 VPC → 点击「子网」→ 查看对应子网的「网络 ACL」;
- 确保入站规则(Inbound Rules)包含允许内网 CIDR 的条目(如
10.0.0.0/8 → ALLOW);
- ⚠️ 注意:网络 ACL 规则按序号匹配,拒绝规则(DENY)优先于允许规则。
🔹 4. 操作系统层面检查(常被忽略!)
即使云平台配置正确,OS 层防火墙也可能拦截:
-
Linux(如 CentOS/Ubuntu):
# 检查 firewalld(CentOS 7+/Rocky) sudo firewall-cmd --list-all # 查看当前区域规则 sudo firewall-cmd --permanent --add-source=10.0.0.0/8 sudo firewall-cmd --permanent --add-port=22/tcp sudo firewall-cmd --reload # 或临时关闭测试(生产环境不推荐) sudo systemctl stop firewalld # Ubuntu(ufw) sudo ufw status verbose sudo ufw allow from 10.0.0.0/8 - Windows Server:
- 打开「高级安全 Windows 防火墙」→ 入站规则 → 确保「文件和打印机共享(回显请求 – ICMPv4-In)」等启用;
- 或新建规则:允许任意 IP 的 ICMP/TCP 端口,作用域设为「本地子网」。
🔹 5. 验证连通性(逐层排查)
# 1. 查看本机内网 IP(非公网IP!)
ip a | grep "inet " | grep -v "127.0.0.1"
# 2. ping 对方内网 IP(确认基础连通)
ping 10.0.1.10
# 3. telnet/nc 测试端口(如 SSH 22、MySQL 3306)
telnet 10.0.1.10 22
nc -zv 10.0.1.10 3306
# 4. 检查路由表(应含 Local 路由)
ip route show | grep "dev eth0" # 应看到类似:10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.5
三、典型场景与解决方案
| 场景 | 原因 | 解决方案 |
|---|---|---|
| ✅ 同 VPC,但 ping 不通 | 安全组未放行 ICMP;OS 防火墙拦截 | 添加安全组 ICMP 规则 + 关闭 OS 防火墙测试 |
| ✅ 能 ping 通,但 telnet 端口失败 | 目标服务未监听内网地址;安全组/OS 防火墙屏蔽端口 | netstat -tuln | grep :端口;检查服务 bind 地址(如 MySQL bind-address = 0.0.0.0 或 10.0.1.0/24) |
| ❌ 跨 VPC 无法互通 | VPC 默认隔离 | 配置 VPC 对等连接 并更新双方路由表 |
| ❌ 同 VPC 但跨地域(如广州 & 北京) | 跨地域 VPC 物理隔离 | 必须用 云联网 CCN + 提速带宽包 |
✅ 最佳实践总结
- 统一规划 VPC 网段:如
10.0.0.0/16,子网按业务划分(10.0.1.0/24,10.0.2.0/24…); - 使用专用安全组管理内网访问,避免混用公网规则;
- 禁用操作系统默认防火墙(或配置白名单),或使用腾讯云「安全组+OS防火墙」双保险;
- 跨可用区部署提升容灾能力:同一 VPC 内跨 AZ 互通零配置,且 SLA 更高;
- 开启 VPC 流日志(可选):用于深度排查丢包原因(需额外计费)。
如仍有问题,请提供:
- 两台 CVM 的 内网 IP 和所在 VPC ID / 子网 ID(可在控制台查看);
- 安全组的 入站规则截图(隐藏敏感信息);
ping和telnet的具体报错;
我可进一步帮您定位。
需要我为你生成一份 安全组配置 JSON 模板 或 自动化 Shell 检查脚本 吗?😊
PHPWP博客