文章目录
1. 服务器的公网 IP 是否变了
- 在服务器上运行以下命令,检查当前的公网 IP:
或者:curl ifconfig.me
curl ipinfo.io/ip
2. 服务器的防火墙或安全组设置
- 有些云服务器(比如阿里云、腾讯云)默认会有安全组,可能你之前的网络环境开放了 你的端口,现在换了地方,换了网络,可能当前网络环境对外网访问有限制。
- 试试在服务器上执行:
看是否有规则限制了 TCP 端口访问。sudo iptables -L -n
- 如果你在用
ufw
,可以检查防火墙状态:
如果防火墙开启了,尝试允许对应端口:sudo ufw status
sudo ufw allow 你的端口/tcp
3. 本地运营商或 NAT 限制
- 你现在的网络环境可能处于 NAT 之后,即运营商没有给你分配真正的公网 IP,而是共享 NAT 转发的 IP,导致外网无法直接访问你的服务器。
- 在服务器上执行:
确保你的 TCP Server 监听了netstat -tulnp | grep 你的端口
0.0.0.0:端口
,而不是127.0.0.1:端口
。 - 你可以尝试使用
tcpdump
抓包看看是否有外部访问:
如果没有数据包进来,说明请求可能被路由或防火墙拦截。sudo tcpdump -i eth0 port 你的端口
4. ISP 限制或端口封锁
- 运营商(ISP)可能会屏蔽一些端口,特别是 80、443、25、8080 等端口。
- 你可以尝试使用
nmap
从外网扫描你的服务器,看看端口是否开放:nmap -p 你的端口 你的公网IP
- 如果发现端口关闭,可以尝试换一个端口,比如 5000、6000 等端口重新启动服务器,并检查能否连接。
5. 服务器监听地址检查
- 你可以在服务器上运行:
你应该能看到类似:ss -tulnp | grep 你的端口
如果只监听在LISTEN 0 128 0.0.0.0:你的端口 0.0.0.0:*
127.0.0.1
,需要调整你的服务器代码,让它监听0.0.0.0
。
如果还是不行,可以进一步提供:
- 服务器公网 IP(可以打码部分)
- 监听端口
- 具体
telnet
无法连接时的错误信息
这样可以更好地帮你排查问题。