(1)确认跳板机基础信息:IP、SSH端口、用户、密钥路径、是否启用多因子认证。
(2)核对本地网络:本地出口IP、NAT、VPN、公司防火墙是否限制出站端口(常见22/443/3389)。
(3)记录目标服务器信息:内网IP、服务端口(如数据库3306、Web80/443、RDP3389)。
(4)确认域名解析:本地与跳板机的 /etc/resolv.conf 是否一致,是否被CDN或DNS污染。
(5)准备工具:ssh、ssh-copy-id、ncat/socat、tcpdump、traceroute、mtr、telnet、curl、openssl。
(1)本地到跳板机:ping 跟踪延迟(例如 ping 203.0.113.5 平均 42ms 丢包0%)。
(2)本地到跳板机端口:telnet 203.0.113.5 22 或 nc -vz 203.0.113.5 22(返回 Connection refused / timeout)。
(3)跳板机到目标机:登录跳板执行 ssh 192.168.10.20 或 nc -vz 192.168.10.20 3306。
(4)判断是DNS、路由还是防火墙问题:traceroute/mtr 显示哪一跳丢包或延时飙升。
(5)记录可复现的时间点与日志,便于关联CDN/防火墙策略或DDoS事件。
(1)端口被封:检查本地与跳板主机的iptables/nftables/ufw规则,iptables -L -n。
(2)服务未监听:在跳板机上用 ss -tunlp | grep ssh 检查 22 端口监听状态。
(3)密钥或权限问题:检查 ~/.ssh/authorized_keys 权限为600/700,SELinux 是否阻止(getenforce)。
(4)网络策略/ACL:VPC安全组、云厂商ACL是否放通来源IP与端口。
(5)证书与域名问题:curl -v https://example.com 检查证书链与SNI配置,排除CDN回源错误。
(1)使用反向SSH隧道:在本地执行 ssh -R 2222:localhost:22 jumpuser@203.0.113.5,这样跳板机可通过 localhost:2222 连接回本地SSH。
(2)示例:本地IP 192.0.2.10,命令:ssh -i ~/.ssh/id_rsa -R 2222:127.0.0.1:22 jumpuser@203.0.113.5 -N &。
(3)跳板机连接本地:ssh -p 2222 localuser@127.0.0.1(用于拉取日志或复现问题)。
(4)注意安全:限制只允许特定用户,配置 /etc/ssh/sshd_config 中 GatewayPorts/no,AllowUsers。
(5)替代方案:使用socat或ncat创建TCP隧道,示例:socat TCP-LISTEN:8888,fork TCP:127.0.0.1:3389。
(1)案例背景:客户A通过跳板机访问内网数据库,故障表现为“无法连接MySQL:110”。
(2)跳板机信息:IP 203.0.113.5,SSH端口22,CPU 2 vCPU,内存 4GB,操作系统 Ubuntu 20.04。
(3)目标数据库:私网 192.168.10.20:3306,MySQL版本 5.7,max_connections=500。
(4)排查过程:本地到跳板机端口超时 -> 跳板机日志 /var/log/auth.log 显示大量失败尝试 -> 检测到云安全组对本地IP限速。
(5)结论与处理:调整云安全组放通本地出口IP并开启跳板机的 fail2ban 白名单,问题恢复。
下表为示例配置展示,用于快速比对排查时参考:
| 节点 | IP | 端口 | 系统/规格 |
|---|---|---|---|
| 跳板机 | 203.0.113.5 | 22 | Ubuntu20.04 / 2vCPU / 4GB |
| 应用服务器 | 192.168.10.20 | 80/443 | CentOS7 / 4vCPU / 8GB |
| 数据库 | 192.168.10.30 | 3306 | MySQL5.7 / 8vCPU / 32GB |
(1)CDN误配置:确认回源地址是否指向跳板机或错误域名导致回源失败,查看回源状态码(502/504)。
(2)IP白名单:当CDN或防火墙仅允许特定IP回源时,确保跳板机IP在白名单内。
(3)DDoS 影响:流量清洗或黑洞会导致连接间歇性丢失,联系厂商查看清洗/黑洞记录。
(4)流量监控:使用 vnStat/iftop/Netdata 检查带宽异常并导出流量峰值(示例:5分钟峰值 850Mbps)。
(5)建议:启用WAF与速率限制,设置健康检查与自动故障转移,避免单点跳板机成为瓶颈。
(1)建立标准化排查步骤并记录每次检测结果与时间点,便于追溯。
(2)优先判断网络层(ping/traceroute/端口探测),再看服务层(日志/进程/证书)。
(3)采用反向SSH隧道作为调试工具,但上线时需加固访问控制与密钥管理。
(4)将跳板机纳入监控与告警系统,监控CPU、内存、连接数与异常流量。
(5)定期演练故障恢复(包括CDN切换、DDoS清洗策略、跳板机冗余与自动化脚本)。