目标:在日本机房使用 CN2/直连专线或共享回国线路时,建立可复现的日志监控与网络异常定位流程,能快速判断是链路、路由还是服务层面问题并定位到设备/节点。
前提:能 SSH 到日本服务器、有 root 权限、已安装常用工具(tcpdump、tshark、mtr、iperf3、net-tools、iproute2、chrony 或 ntpd、jq)。要求服务器时间同步,建议安装 chrony 并与 NTP 池同步。
步骤:检查时间偏差,执行 chronyc tracking 或 ntpstat。若差异超过 200ms,先修复时间(chronyd/ntpd)以确保日志分析时序一致。
命令示例:chronyc sources; chronyc tracking; timedatectl status。然后记录主机名、内网IP、公网IP与 ASN,用于后续 BGP/路由比对:curl -s ifconfig.co; whois IP。
检查接口错误与队列:ip -s link show eth0; ethtool -S eth0(查看 rx_errors、tx_errors、dropped 等)。如果有大量错误,先排查物理链路或 MTU。
检查路由表与策略:ip route show; ip rule show; 查看是否有策略路由或 VRF 导致走非预期链路。
建议先用 mtr 做连续探测:mtr -r -c 100 -w 目的IP,观察丢包和延迟突变的跳点。mtr 能显示从本机到目标路径上哪一跳出现稳定丢包。
再用 TCP/ICMP traceroute 对比:traceroute -T -p 443 目标IP 或 traceroute 目标IP。对比 ICMP 与 TCP 路径,以检测运营商对 ICMP 的限速或策略差异。
在疑似问题时间段进行端口与 SYN 重试抓包:tcpdump -i eth0 -s 0 -w /tmp/cn2.pcap host 目标IP and '(tcp[tcpflags] & (tcp-syn|tcp-ack) != 0 or icmp)'. 说明:-s0 保存完整包,便于后续分析。
关注关键词:大量重传([TCP Retransmission])、三次握手失败(SYN/REXMT)、RST、ICMP unreachable/fragmentation-needed(MTU 问题)。使用 tshark 提取统计:tshark -r cn2.pcap -q -z conv,tcp。
看三次握手:SYN->SYN/ACK->ACK 若在某跳出现 SYN 无回应,说明服务器到目标方向或返回路径有问题。统计 SYN 重试次数并记录时间间隔。
看重传和延迟:使用 Wireshark 或 tshark 过滤 tcp.analysis.retransmission 和 tcp.analysis.duplicate_ack。若重传伴随 RTT 突增,说明链路丢包或瞬时拥塞。
确认本机到目的的 BGP 路径:使用本机公网 IP 在 BGP Looking Glass(如 bgp.he.net、routeviews)或 RIPE BGPlay 查看 AS_PATH。CN2 常见为 CT/CTGIA,不同运营商策略不同。
若怀疑上游问题:联系机房/带宽提供商索要路由表及近端设备日志,或提供 pcap/timestamp 给对方。一并提供 traceroute/mtr 输出与 pcap 时间点。
使用 iperf3 做双向带宽与抖动测试:在一台可控节点启动 iperf3 -s,客户端 iperf3 -c server -P 10 -t 60;对比 TCP/UDP 性能差异以判断丢包或网络抖动。
MTU 检测:使用 ping -M do -s SIZE 目标IP 逐步增大 SIZE 直到 fragmentation-needed 出现,以确认路径 MTU。若发现 MTU 问题,考虑开启 TCP MSS clamping 或调整接口 MTU。
日志收集:nginx/应用日志、systemd/journal、/var/log/messages 与 tcpdump 摘要,集中到 ELK/EFK 或 Grafana Loki,便于按时间轴关联分析。必备字段:timestamp(ISO8601)、src/dst IP、port、session id。
监控与告警:部署 Prometheus node_exporter 收集 host 指标,blackbox-exporter 对外链路探测,Alertmanager 配置延迟/丢包阈值告警。图表展示使用 Grafana,连接 mtr/iperf 历史结果。
案例 A(用户投诉抖动):先确认时间 -> mtr 对比目标 -> 抓包定位 SYN/重传 -> 如果是某一跳丢包,联系上游;如果是本机 iface 错误,先调整驱动/MTU。
案例 B(单向不可达):用双端抓包确认请求出站但没有回应,检查返回路由(BGP AS_PATH)并在 Looking Glass 验证,提供 pcap 与路由给承载商排查。
问题1:在日本机房通过 CN2 回国出现间歇性丢包,第一步我该做什么?
回答1:第一步同步时间并记录发生时刻,随后用 mtr 对目标做 1-5 分钟连续跟踪定位哪个跳点丢包,再抓包(tcpdump)记录 SYN/重传与 ICMP,最后比对上游 BGP 路径并提交给带宽提供商。
问题2:抓包看到大量 fragmentation-needed 的 ICMP,如何处理?
回答2:说明存在路径 MTU 小于当前包尺寸,先用 tracepath 或 ping -M do 逐步确认 MTU,若确认为上游问题可降低本端 MTU 或在路由器上启用 MSS clamping;同时联系上游排查中间链路。
问题3:如何将排查流程自动化,减少人工介入?
回答3:建立自动化监控链:部署 blackbox exporter 做外网探测、定期 mtr/iperf3 测试并将结果入库,利用 Prometheus+Alertmanager 按规则触发告警并自动抓包(脚本触发 tcpdump),将关键抓包上传到集中日志平台供人工快速分析。