哈喽,大家好,我是干货满满的晓技术老师。 本文是一篇技术总结,适用于开发者,或者网络运维人员;其他老铁可以划走了。
这两天,我想更新一下云服务器上的MySQL数据库,可是,使用navicat死活都连接不上;用xftp和xshell试了试,都显示无法连接。
这的确让人抓狂。
接下来,跟我将复盘这次排障过程,希望能帮你少走一些弯路。
一,故障现象:阿里云服务器上的web项目正常,但远程连接全断。
我尝试用 Xshell(22端口)和 Navicat(3306端口)连接阿里云 ECS 服务器,均提示连接超时。
本地CMD中执行ping命令,显示100%丢包。诡异的是,服务器上部署的Web项目通过浏览器(80端口)可以秒开。
二,抽丝剥茧:四大排查步骤。
1. 排查本地网络与云安全组。
首先怀疑是校园网限制了出站流量。由于台式机无法开热点,通过手机流量开热点,笔记本电脑CMD测试发现,可以ping通。
这说明,可能是校园网的限制。
随后,登录阿里云控制台检查安全组入方向规则,发现80/443端口对全网开放(0.0.0.0/0),而22和3306端口则启用了IP白名单限制。
网页查询发现,当前本机公网IP为121.28.19.101,且已在白名单中。
2. 利用 VNC 穿透排查服务器内部。
既然网络和配置看起来没问题,我们绕过 SSH,使用阿里云控制台的VNC远程连接进入系统内部。通过执行以下命令进行排查:
iptables -L -n:发现系统内防火墙全通,无拦截规则。
systemctl status sshd:SSH 服务显示绿色 active (running)。
ss -lntp | grep :22:服务正常监听在 *:22 端口。
3. 对照实验找出“真假”漏洞。
在本地 CMD 进行对照测试:
telnet 服务器IP 80:屏幕全黑(成功)。
telnet 服务器IP 22:连接失败。
这证明网络链路完全畅通,问题就出在22端口被安全组拦截上。但为什么白名单里明明填了查到的IP,却依然被拦截?
4. 真相大白—寻找真实的出口IP。
问题就出在“校园网/运营商的NAT 转发”上。通过常规网页(如 ip.cn)查到的IP,往往经过了代理或CDN的伪装,并非真实的公网TCP出口IP。
通过在VNC中直接临时全开安全组(0.0.0.0/0)让2 端口连通,随后用 Xshell 登录服务器,执行命令:
bash
echo $SSH_CLIENT
输出结果如123.45.67.89 54321 22,其中123.45.67.89才是本机真正的公网出口IP。将该真实 IP 配置到阿里云安全组白名单后,Xshell、Xftp和Navicat 瞬间全部恢复连接。
网页查到的IP不一定是真实 IP:在复杂的校园网或企业NAT环境下,网页查到的IP可能与真实TCP握手IP不一致。echo $SSH_CLIENT 是寻找真实出口IP的利器。
云安全组与系统防火墙:阿里云安全组相当于外层虚拟防火墙,iptables 是内层系统防火墙,两者需分别检查。
如何1分钟快速制作『 装系统 』的启动U盘?
纯小白也能训练大模型,百度啊、你终于干了件好事儿!