开始前先测量,步骤:1) 从本地和目标VPS分别运行 mtr -r -c 100 目标IP(或 traceroute -n -T/IP);2) 使用 iperf3 -c 目标VPS -P 4 -t 30 测试吞吐;3) 在VPS上检查 ifconfig/ip a 与 netstat -s、dmesg 看网卡错误;4) 在路由器/防火墙上查看丢包、错误统计。记录 RTT 峰值、抖动与发生跳点。
用 mtr/traceroute 定位带高延迟或丢包的跃点。若问题集中在本地ASN->上游ISP或到IX节点,表示是Transit/Peering问题;若是VPS所在网络最后几跳,优先联系VPS提供商。保存多时间段数据(高峰/非高峰)用于对比。
若发现 PMTU 问题或 TCP 握手后低速:在VPS上先临时测试降低 MTU:ip link set dev eth0 mtu 1400(替换接口名);或在 NAT 设备上用 iptables 强制 MSS:iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu。测试后若稳定再写入启动脚本。
启用 BBR 或调整窗口:sysctl -w net.ipv4.tcp_congestion_control=bbr;加载模块:modprobe tcp_bbr;设置窗口和队列:sysctl -w net.core.rmem_max=134217728 net.core.wmem_max=134217728 net.ipv4.tcp_rmem="4096 87380 134217728" net.ipv4.tcp_wmem="4096 65536 134217728"。重启服务并用 iperf3 验证。
如果VPS有多条出口或隧道,使用策略路由把不同目的地走不同出口。示例:ip rule add from 10.0.0.2/32 table 100;ip route add default via 192.0.2.1 dev eth1 table 100。对特定对端用 iptables 标记再按 mark 路由:iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 1;ip rule add fwmark 1 table 101。
通过 WireGuard 或 SSH 隧道把流量中转到在香港/新加坡有良好Peering的中转机房:WireGuard 配置步骤:在中转机创建 wg0、生成密钥、填写 Peer;在VPS上配置对应的 Interface 并添加 AllowedIPs=0.0.0.0/0(注意路由回流)。测试 iperf3 经隧道的速率与延迟,逐步把需要优化的流量切入隧道。
当问题指向Peering或上游:准备证据(mtr/traceroute/iperf 截图+时间戳+影响范围),查目标IX(HKIX, SGIX, Equinix 等),发邮件给对方NOC。模板要点:说明你的ASN/ASN申请(若有)、需对等的IP范围、流量估计、是否接受route-server。询问是否有特定 BGP community 做流量引导。
答:香港(HKIX)和新加坡(SGIX/IXP)作为区域骨干,Peering 数量与本地到目标网段的直连程度决定延迟与抖包。直接在同一IX上有对等关系,路径更短、跨ASN跳数少,通常延迟和丢包更低;若走远端Transit或被转发到第三国,延迟会明显增加。
答:你可以做的包括:1)用 mtr/iperf 定位问题并记录;2)调内核(BBR、窗口、MSS clamp);3)配置策略路由或建立WireGuard/SSH隧道到更好Peering的节点;4)向VPS提供商提交工单要求更改上游或增加私有Peering;5)在必要时迁移到对等更好的机房。
答:主要看 RTT 平均值与95/99百分位、丢包率、抖动(jitter)和吞吐(iperf3 带宽)。在优化前后做相同时间段、相同次数的 mtr 与 iperf 测试,比较这些指标。同时观察业务层(应用)连接成功率与响应时间。