写了一个检测NAT线路 和延迟的,NQ的一跑就卡死
这个低内存也能用
填上你们城市的ip就行
或者填自己的 比较慢
echo '#!/bin/sh
TARGETS="
电信_CT|你们城市的ip|电信
移动_CM|你们城市的ip|移动
联通_CU|你们城市的ip|联通
"
COUNT=100
REPORT="line_quality_$(date +%F_%H-%M-%S).log"
install_deps() {
need=""
command -v ping >/dev/null 2>&1 || need="$need iputils"
command -v mtr >/dev/null 2>&1 || need="$need mtr"
command -v traceroute >/dev/null 2>&1 || need="$need traceroute"
command -v curl >/dev/null 2>&1 || need="$need curl"
[ -z "$need" ] && return 0
echo "Installing dependencies: $need"
if command -v apt-get >/dev/null 2>&1; then
apt-get update
apt-get install -y iputils-ping mtr-tiny traceroute curl
elif command -v apk >/dev/null 2>&1; then
apk update
apk add iputils mtr traceroute curl
elif command -v yum >/dev/null 2>&1; then
yum install -y iputils mtr traceroute curl
elif command -v dnf >/dev/null 2>&1; then
dnf install -y iputils mtr traceroute curl
else
echo "No supported package manager found. Please install ping/mtr/traceroute/curl manually."
fi
}
judge_line() {
FILE="$1"
ISP="$2"
if grep -qi "AS4809\|CN2\|59.43" "$FILE"; then
echo "线路判断: 电信 CN2 / 精品倾向"
elif grep -qi "AS58807\|CMIN2\|223.120\|223.121" "$FILE"; then
echo "线路判断: 移动 CMI / CMIN2 倾向"
elif grep -qi "AS9929\|A网\|CUII\|218.105" "$FILE"; then
echo "线路判断: 联通 9929 / 精品倾向"
elif grep -qi "AS4837\|219.158" "$FILE"; then
echo "线路判断: 联通 4837 普通骨干倾向"
elif grep -qi "AS4134\|202.97" "$FILE"; then
echo "线路判断: 电信 163 普通骨干倾向"
elif grep -qi "AS58453\|AS9808\|221.183" "$FILE"; then
echo "线路判断: 移动普通骨干 / CMI 倾向"
else
echo "线路判断: 未识别,需要人工看 AS 路由"
fi
}
install_deps
{
echo "=================================================="
echo "三网延迟 / 抖动 / 丢包 / 回程线路测试"
echo "生成时间: $(date)"
echo "本机出口 IPv4: $(curl -4 -s --max-time 5 ip.sb 2>/dev/null || echo unknown)"
echo "本机出口 IPv6: $(curl -6 -s --max-time 5 ip.sb 2>/dev/null || echo unknown)"
echo "=================================================="
echo ""
echo "说明:"
echo "1. 本脚本在服务器本机运行,测的是服务器到三网目标 IP 的出站/回程质量。"
echo "2. 真正去程,即国内三网到你的服务器,需要国内探针或 Looking Glass 反向测试。"
echo "3. 精品线路判断基于 AS/路由特征,只能作为初筛,不等于运营商官方结论。"
echo ""
} | tee "$REPORT"
echo "$TARGETS" | while IFS="|" read NAME IP ISP
do
[ -z "$IP" ] && continue
TMP="/tmp/mtr_${IP}.txt"
{
echo ""
echo "=================================================="
echo "$NAME - $IP"
echo "=================================================="
echo ""
echo "[1] Ping 延迟 / 丢包 / 抖动"
ping -c "$COUNT" -i 0.2 "$IP" 2>/dev/null | tee /tmp/ping_${IP}.txt
echo ""
echo "[2] MTR 回程质量,$COUNT 包"
if mtr --help 2>&1 | grep -q -- "-z"; then
mtr -rwzc "$COUNT" "$IP" | tee "$TMP"
else
mtr -rwc "$COUNT" "$IP" | tee "$TMP"
fi
echo ""
echo "[3] Traceroute 路由路径"
traceroute -n "$IP" 2>/dev/null || traceroute "$IP"
echo ""
echo "[4] 精品线路初步判断"
judge_line "$TMP" "$ISP"
echo ""
echo "[5] 读数标准"
echo "丢包: 0% 最好,1%-3% 可观察,>5% 明显异常"
echo "平均延迟: Avg 越低越好"
echo "抖动: MTR 的 StDev 越低越好,<3ms 优秀,3-10ms 正常,>10ms 不稳"
echo "Worst: 偶发尖峰越高,说明拥塞或抖动越明显"
} | tee -a "$REPORT"
done
echo ""
echo "测试完成,报告文件: $REPORT"
' > line_quality.sh && chmod +x line_quality.sh && ./line_quality.sh
跑一下看看
感谢分享,如果做成一键curl脚本的更好
我之前也是因为独角鲸限制路由追踪。也弄了一个类似nexttrace
感谢分享,跑一下看看
一键curl脚本的更好。