Files
ykxmz/_build/test_watchdog_restart.sh
T
xmz7891 b62ac865ea ykxmz 1.5.0:修复手表端 TLS 证书校验 + MTU 修复网络稳定性
被控端
- 修复 MTU 问题:夹 MSS + 路径 MTU 探测(公网可用率 48% -> 100%)
- 复用 HTTP 连接(免掉每次新建 TLS 的 30% 握手失败)
- 每分钟回头找局域网,自动切回快 400 倍的路径
- 画面心跳帧:静止时省流量,客户端仍知道流是活的
- 锁屏时给出可操作的提示

手表端
- 内置 GTS Root R4 / GlobalSign Root CA,修 SSLHandshakeException
- 连接错误翻译成人话(证书/时间/解析/超时分别提示)
- 经中转连上后用服务器报的地址刷新已配对记录
- 新增局域网连接页面、服务器延迟检测

服务器端
- 支持 chunked 请求体(修每 16 秒一次的连接错乱与大面积 502)
- 网络调优脚本 net-tune.sh(开机自动应用)
- 管理页:批量删除、网络体检、下载区
- 隧道改 HTTP/2 + 双连接

文档
- 许可协议 / 安装前必读 / 安装后须知(作者:小麦子)
2026-10-06 19:01:05 +08:00

89 lines
2.9 KiB
Bash

#!/bin/bash
# 精确测看门狗的重启路径。
#
# 做法:把地址文件临时改成一个**肯定不通**的地址,
# 连跑 3 次看门狗,看它会不会重启隧道、重启后能不能拿到新地址。
# 测完把状态恢复。
set -u
RELAY_DIR=/root/lanremote-relay
URL_FILE="$RELAY_DIR/public_url.txt"
STATE="$RELAY_DIR/watchdog.state"
REAL_URL=$(cat "$URL_FILE" 2>/dev/null || echo "")
echo "===== 1. 真实地址 ====="
echo " ${REAL_URL:-(无)}"
echo
echo "===== 2. 临时换成肯定不通的地址 ====="
echo "https://this-host-does-not-exist-lanremote.invalid" > "$URL_FILE"
echo 0 > "$STATE"
cat "$URL_FILE" | sed 's/^/ /'
echo
echo "===== 3. 连跑 3 次看门狗(第 3 次应该触发重启)====="
BEFORE=$(systemctl show lanremote-tunnel -p NRestarts | cut -d= -f2)
BEFORE_URL=$(cat "$URL_FILE" 2>/dev/null || echo "")
echo " 重启前 NRestarts = $BEFORE"
echo
for i in 1 2 3; do
echo " --- 第 $i 次 ---"
systemctl start lanremote-watchdog.service
sleep 8
tail -1 "$RELAY_DIR/watchdog.log" 2>/dev/null | sed 's/^/ /'
done
echo
echo "===== 4. 等重启完成并拿到新地址 ====="
sleep 50
AFTER=$(systemctl show lanremote-tunnel -p NRestarts | cut -d= -f2)
echo " 重启后 NRestarts = $AFTER (之前 $BEFORE)"
NEW_URL=$(cat "$URL_FILE" 2>/dev/null || echo "")
echo " 新地址: ${NEW_URL:-(还没拿到)}"
echo
echo "===== 5. 判定 ====="
# 注意:NRestarts 只统计 Restart=always 的**自动**重启,
# 不含 systemctl restart 的手动重启。所以不能拿它判断。
# 该看的是:日志里有没有「连续 3 次不通」,以及地址有没有变。
if grep -q "连续 3 次不通" "$RELAY_DIR/watchdog.log" 2>/dev/null; then
echo " ✓ 看门狗日志里有「连续 3 次不通 -> 重启隧道」"
else
echo " ✗ 日志里没看到触发重启"
fi
if [ -n "$NEW_URL" ] && [ "$NEW_URL" != "$BEFORE_URL" ]; then
echo " ✓ 地址确实变了(说明隧道被重启并重新申请了地址)"
else
echo " ~ 地址没变"
fi
if [ -n "$NEW_URL" ] && [ "$NEW_URL" != "https://this-host-does-not-exist-lanremote.invalid" ]; then
echo " ✓ 地址文件被 tunnel-run.sh 更新成了新地址"
else
echo " ⚠ 地址文件还是旧值"
fi
echo
echo "===== 6. 新地址通不通 ====="
if [ -n "$NEW_URL" ]; then
OK=0
for i in 1 2 3 4 5; do
C=$(timeout 20 curl -4 -s -o /dev/null -w '%{http_code}' \
"$NEW_URL/v1/health" 2>/dev/null)
printf " 第 %d 次: HTTP %s\n" "$i" "${C:-超时}"
[ "$C" = "200" ] && { OK=1; break; }
sleep 8
done
echo
if [ "$OK" = "1" ]; then
echo " ✓ 服务已恢复"
echo "$NEW_URL" > "$URL_FILE"
# 失败计数清零
echo 0 > "$STATE"
echo
echo " 当前可用地址: $NEW_URL"
else
echo " ✗ 还是不通(这条线路的问题,看门狗会继续重试)"
fi
fi