You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

连接Google VPS时出现Socket超时/关闭错误求助

问题排查与解决步骤

1. 修复服务的IPv4监听问题

你当前的Java服务仅监听了IPv6的8080端口(tcp6 0 0 :::8080 :::* LISTEN),如果客户端通过IPv4发起连接,或者VPS未配置公网IPv6,就会出现连接超时。

  • 修改服务监听配置,强制绑定IPv4的0.0.0.0:8080(同时兼容IPv6):
    • 若用Spring Boot,在application.properties添加:server.address=0.0.0.0
    • 原生Java Socket开发的话,将绑定地址改为InetAddress.getByName("0.0.0.0")
  • 重启服务后,用netstat -tunlp确认输出中包含tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN

2. 补全IPv6的iptables规则(若启用IPv6)

当前配置的iptables规则仅针对IPv4,若VPS开启了IPv6,需添加对应放行规则:

sudo ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo ip6tables -A INPUT -p tcp --dport 8080 -j ACCEPT

保存IPv6规则:

sudo netfilter-persistent save

3. 检查Google Cloud云层面防火墙

Google VPS的云平台防火墙优先级高于服务器内部iptables,即使本地规则放行,云防火墙拦截也会导致连接失败:

  • 登录Google Cloud控制台,找到对应VM实例的VPC网络防火墙规则页
  • 添加两条入站规则:
    • 允许指定来源(或所有IP)的TCP 80端口流量
    • 允许指定来源(或所有IP)的TCP 8080端口流量
  • 规则生效后重新测试连接

4. 定位Postman 500错误的根源

Postman返回500说明请求已到达服务器,但服务处理出错,和网络连接无关:

  • 查看Java服务的日志文件,提取500错误的堆栈信息,排查是接口路径不匹配、参数错误还是服务内部逻辑异常
  • 核对Retrofit的baseUrl格式,确保末尾斜杠与服务端接口定义匹配

5. 验证端口转发有效性

在服务器本地执行命令,测试80端口转发是否正常:

curl http://localhost:80

若返回服务正常响应,说明转发生效;若失败,用iptables -t nat -L -n --line-numbers确认PREROUTING规则排在最前面(你用-I插入的规则默认在开头,一般没问题)


内容的提问来源于stack exchange,提问作者randomdude0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:20:49