在腾讯云服务器(CVM)上监听 TCP 连接时,监听的是服务器的内网 IP(即私有网络 VPC 内网 IP),而不是公网 IP。但客户端可以通过公网 IP + 端口访问你的服务,前提是:
✅ 正确配置了以下三个关键环节:
-
服务程序绑定监听地址
- ✅ 推荐:
0.0.0.0:端口(监听所有网络接口,包括内网网卡) - ✅ 也可:
内网IP:端口(如10.0.1.5:8080) - ❌ 避免:
127.0.0.1:端口(仅本地回环,外部无法访问)
⚠️ 注意:即使你绑定
0.0.0.0,服务实际运行在内网网卡上;公网流量是通过腾讯云底层 NAT/网关转发到该内网 IP 的。
- ✅ 推荐:
-
安全组规则放行
- 在腾讯云控制台 → CVM 实例 → 关联的安全组中,添加入站规则:
- 协议类型:TCP
- 端口范围:如
8080或8080-8080 - 源 IP:可填
0.0.0.0/0(允许所有公网 IP),或限制为特定 IP 段(更安全)
- 🔑 安全组是第一道防火墙,未放行则公网请求根本到达不了服务器。
- 在腾讯云控制台 → CVM 实例 → 关联的安全组中,添加入站规则:
-
公网 IP 的存在与映射方式
- 若 CVM 直接分配了弹性公网 IP(EIP):
- 流量路径:公网 IP → 腾讯云底层网关 → 直接路由到 CVM 的内网 IP(NAT 模式,透明)
- 此时服务监听
0.0.0.0:xxx即可响应公网请求。
- 若 CVM 无公网 IP,但通过 NAT 网关 / 公网网关 / 弹性网卡 ENI 绑定 EIP:
- 同样需配置 DNAT(端口转发)规则,将公网 IP:Port 映射到 CVM 内网 IP:Port
- 且安全组仍需放行对应端口。
- 若 CVM 直接分配了弹性公网 IP(EIP):
✅ 补充说明:
- 服务器操作系统自身的防火墙(如
iptables/firewalld/ Windows Defender 防火墙)也需放行端口(常被忽略!)。 - 可用命令验证监听状态(登录服务器后执行):
ss -tlnp | grep :8080 # 或 netstat -tuln | grep :8080 # 应看到 0.0.0.0:8080 或 [::]:8080 或具体内网IP:8080 - 测试连通性建议顺序:
① 本机curl http://127.0.0.1:8080(服务是否启动)
② 同 VPC 内另一台 CVM 访问curl http://<内网IP>:8080(内网是否通)
③ 网络telnet <公网IP> 8080或curl http://<公网IP>:8080(公网是否通 → 查安全组/EIP/防火墙)
✅ 总结一句话:
服务监听的是内网 IP(或 0.0.0.0),但用户通过公网 IP 访问;能否成功取决于:服务绑定正确 + 安全组放行 + 操作系统防火墙放行 + 公网 IP/NAT 配置有效。
需要我帮你检查某具体场景(比如 Spring Boot 服务无法网络访问、安全组怎么配、或 Docker 容器监听问题)?欢迎补充细节 👍
CLOUD云