1. 初步确认与信息收集
• ① 收集故障时间、影响范围(单个IP/整个域名/部分用户)。
• ② 确认服务器基本配置:示例:IP=3.120.45.67,Ubuntu 20.04,4 vCPU,8GB RAM,100GB SSD,带宽1Gbps。
• ③ 记录最近变更(系统更新、iptables、应用部署、证书更新、DNS修改)。
• ④ 获取连接测试结果:ping、traceroute、curl、telnet 端口测试。
• ⑤ 检查云厂商控制台(实例状态、控制台日志、网络ACL、计费告警)。
• ⑥ 若是域名访问问题同时记录DNS解析结果与TTL。
2. 网络连通性与延迟诊断
• ① ping 目标:示例输出:64 bytes from 3.120.45.67: icmp_seq=1 ttl=44 time=120 ms,丢包10%。
• ② traceroute 检查路径瓶颈,示例第5跳丢包或超时表示链路问题。
• ③ 使用 mtr 连续监测,定位高丢包点和高延迟跃点。
• ④ telnet 服务器:80/443 检测端口是否被过滤,示例:telnet 3.120.45.67 80 => Connected。
• ⑤ 若国内无法访问但国外可访问,怀疑运营商回国链路或GEO封锁。
3. DNS与域名相关检查
• ① dig+short example.com A/AAAA/CNAME,确认解析指向正确IP。
• ② 检查TTL是否过长导致旧IP缓存,示例TTL=3600秒。
• ③ 检查NS和WHOIS,确认域名未过期或被锁定。
• ④ 若使用CDN,确认CDN回源健康检查状态与回源IP是否被误封。
• ⑤ 检查域名解析是否被污染或被ISP劫持,通过海外DNS对比结果。
4. 服务器本机服务与系统资源检查
• ① 登录控制台或使用cloud-init serial获取控制台日志。
• ② 检查服务状态:systemctl status nginx/mysql/ssh,示例:nginx active (running)。
• ③ 查看端口监听:ss -tunl | grep ':80' 输出 LISTEN。
• ④ 检查磁盘和内存:df -h(示例:/ 95% 已用),free -m(示例:内存8GB, 可用1GB)。
• ⑤ 查看系统日志:journalctl -xe、/var/log/nginx/error.log 定位错误信息。
5. 防火墙、iptables与内核连接限制排查
• ① 查看iptables/nftables规则:iptables -L -n 查看是否误拦截。
• ② 检查云安全组(Security Group)规则,确认允许80/443/22等端口。
• ③ 检查 conntrack 表是否已满:cat /proc/sys/net/netfilter/nf_conntrack_count 与 nf_conntrack_max(示例:已用=98,000,最大=100,000)。
• ④ 若出现 SYN Flood,查看 /proc/net/sockstat 和 ss -s 统计。
• ⑤ 临时放宽规则或清理 conntrack:echo 1 > /proc/sys/net/ipv4/tcp_syncookies 或 conntrack -F(谨慎)。
6. CDN、缓存与回源策略处理
• ① 若使用CDN(如Cloudflare/Akamai),登录控制台查看回源失败或WAF拦截日志。
• ② 强制绕过CDN直接访问源站以确认是否为回源问题(hosts指向源IP测试)。
• ③ 若回源压力过大,开启CDN缓存规则或维护页以降低源站压力。
• ④ 在CDN层启用速率限制和挑战(JS挑战、验证码)。
• ⑤ 准备备用源站或利用云厂商快照快速在其他机房恢复。
7. DDoS防御与快速恢复实战案例
• ① 真实案例:某美国VPS(IP 3.120.45.67)遭到UDP/80 SYN泛洪,流量峰值350Gbps,conntrack达100k上限。
• ② 处理步骤:1) 云厂商上报并启用清洗服务;2) 在防火墙启用速率限制(limit check);3) 将流量引导到上游DDoS清洗。
• ③ 临时措施:调整内核参数(net.ipv4.tcp_syncookies=1, net.netfilter.nf_conntrack_max=200000),重启服务优先级。
• ④ 恢复结果:流量稳定后平均响应时间由120ms降至30ms,丢包恢复至0%,业务在30分钟内部分恢复。
• ⑤ 长期建议:启用CDN+WAF,配置备份机房自动化切换,设置监控告警阈值(如连接数>50000或流量>1Gbps触发)。
8. 操作清单与命令样例(快速参考表)
• ① 常用命令汇总与预期输出见下表。
| 操作 | 命令 | 预期/示例输出 |
| Ping | ping -c 4 3.120.45.67 | time=30 ms, loss=0% |
| Traceroute | traceroute 3.120.45.67 | 无明显跳点超时 |
| 检查端口 | ss -tunl | grep :80 | LISTEN 0 128 0.0.0.0:80 |
| conntrack | cat /proc/sys/net/netfilter/nf_conntrack_count | 98000 |
• ② 表中数值为示例,请根据实际环境调整阈值与命令参数。
来源:美国服务器打不开故障排查步骤与快速恢复方法