#!/bin/bash # 定稿:MSS 1400(安全余量足),跑 15 分钟确认。 # # MSS 扫描结果(各 24 次): # 不夹(1500) 87% MSS 1300 100% MSS 1360 100% # MSS 1400 100% MSS 1440 100% # 取 1400:都在 100%,但它离路径上限(ICMP 实测约 1480)有 80 字节余量, # 换网络(比如加一层 VPN、走 PPPoE)时更不容易踩线。 set -u RELAY_DIR=/root/lanremote-relay URL=https://relay.xxmxxs.top FINAL_MSS=1400 echo "===== 1. 把 MSS 定成 $FINAL_MSS =====" for chain in OUTPUT POSTROUTING; do for old in 1300 1360 1400 1440; do while iptables -t mangle -C "$chain" -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --set-mss "$old" 2>/dev/null; do iptables -t mangle -D "$chain" -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --set-mss "$old" 2>/dev/null || break done done iptables -t mangle -A "$chain" -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --set-mss "$FINAL_MSS" 2>/dev/null done sed -i "s/^MSS_VALUE=.*/MSS_VALUE=$FINAL_MSS/" "$RELAY_DIR/net-tune.sh" 2>/dev/null echo " 当前规则:" iptables -t mangle -L -n 2>/dev/null | grep -i mss | sed 's/^/ /' echo " net-tune.sh: $(grep '^MSS_VALUE=' "$RELAY_DIR/net-tune.sh")" echo echo "===== 2. 重启隧道 =====" systemctl restart lanremote-tunnel sleep 35 echo " 连接数: $(curl -s --max-time 5 http://127.0.0.1:20241/metrics 2>/dev/null | grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}')" echo echo "===== 3. 15 分钟长测(每 5 秒一次,共 180 次)=====" : > "$RELAY_DIR/tunnel.log" ok=0; bad=0; consec=0; maxconsec=0 for i in $(seq 1 180); do c=$(timeout 12 curl -4 -s -o /dev/null -w '%{http_code}' \ -H 'User-Agent: LanRemote/1.4.0' "$URL/v1/health" 2>/dev/null) c=${c:-000} if [ "$c" = "200" ]; then ok=$((ok+1)); consec=0 else bad=$((bad+1)); consec=$((consec+1)) [ "$consec" -gt "$maxconsec" ] && maxconsec=$consec fi sleep 5 done pct=$((ok * 100 / 180)) echo echo "===== 结果 =====" echo " 可用 $ok/180 = ${pct}%" echo " 最长连续失败 ${maxconsec} 次(约 $((maxconsec * 5)) 秒)" echo " 隧道:注册 $(grep -c 'Registered tunnel connection' "$RELAY_DIR/tunnel.log" 2>/dev/null || echo 0) 次 ·" \ "断开 $(grep -c 'Connection terminated' "$RELAY_DIR/tunnel.log" 2>/dev/null || echo 0) 次 ·" \ "Bad request $(grep -c 'Bad request syntax' "$RELAY_DIR/tunnel.log" 2>/dev/null || echo 0) 次" echo echo "===== 全程对比 =====" echo " 最初(QUIC,什么都不改) 48%" echo " HTTP/2 双连接 60~75%" echo " + chunked 修复 72%" echo " + MTU 修复(MSS $FINAL_MSS) ${pct}%" if [ "$pct" -ge 90 ]; then echo " ✓✓ 达标(目标 90%+)" else echo " ~ 未达 90%" fi