阶段1+2:恢复 HTTP/2 加速 + 重做官网

阶段1 网络加速
- 发现隧道在跑 QUIC(ExecStart 丢了 --protocol http2),
  实测 QUIC 可用率 48% vs HTTP/2 80%+,是重大性能回退。
  恢复后公网延迟从 4141ms 降到 690ms(快 6 倍),可用率 92%。
- 优选 IP 结论:无效。hosts 覆盖确实生效了(日志里连的就是指定 IP),
  但落点仍是 lax —— 运营商把所有 Cloudflare anycast 都路由到美西。
  已清掉这段无效配置。
- BBR 不可用:设备是自定义内核 6.4.0-rc4-jsbsbxjxh66,
  没编 tcp_bbr 模块也没配置项。改用 cubic + 调优:
  TCP 缓冲 4MB、tcp_fastopen=3、tcp_slow_start_after_idle=0
  (长轮询场景关键)、tcp_tw_reuse=1。

阶段2 官网重做
- 拆出独立模块 relay/landing.py(relay.py 已两千多行,
  再塞 HTML 没法看)
- 信息结构参考成熟产品站:吸顶导航 / Hero / 九宫格功能 /
  三步上手 / 下载 / FAQ / 页脚
- 保持白色简洁:底白、浅灰面板、细边框、大量留白
- logo 用内联 SVG(ICO 放 img 里实测是破图)
- 管理入口从官网移除(管理不对外开放)

过程中被自己的测试抓到两个 bug:
- 模块叫 site.py 会和 Python 标准库重名,import site 拿到的是标准库
- _logo() 里把 % 格式化和字符串拼接混用,直接抛 TypeError
This commit is contained in:
xmz7891
2026-10-06 23:53:19 +08:00
parent 9b1edbf378
commit 566d9e384f
214 changed files with 2879 additions and 1384 deletions
+24 -47
View File
@@ -1,61 +1,38 @@
#!/bin/bash
# 能不能让 cloudflared 连更近的 Cloudflare 边缘?
#
# 现状:它连的是 198.41.x.x,日志显示落地在 lax01/sjc07(美西)。
# 从国内 4G 到美西,丢包 40%,握手经常超时。
# 如果能连香港/新加坡/日本,延迟和丢包都会好很多。
# 诊断:为什么 /etc/hosts 覆盖没生效,隧道还是落到 lax
set -u
echo "===== 1. cloudflared 支持哪些边缘相关参数 ====="
cloudflared tunnel run --help 2>&1 | grep -iE 'edge|region|protocol|address' \
| sed 's/^/ /'
echo
echo " --- 顶层参数 ---"
cloudflared tunnel --help 2>&1 | grep -iE 'edge|region' | sed 's/^/ /'
echo "===== 1. /etc/hosts 实际内容(尾部)====="
tail -8 /etc/hosts | sed 's/^/ /'
echo
echo "===== 2. argotunnel 区域域名解析出哪些 IP ====="
for host in region1.v2.argotunnel.com region2.v2.argotunnel.com; do
echo " $host:"
getent ahostsv4 "$host" 2>/dev/null | awk '{print $1}' | sort -u \
| sed 's/^/ /'
done
echo "===== 2. nsswitch 的解析顺序 ====="
grep '^hosts' /etc/nsswitch.conf | sed 's/^/ /'
echo
echo "===== 3. 到这些 IP 的 TCP 7844 延迟(各测 3 次)====="
for ip in $(getent ahostsv4 region1.v2.argotunnel.com 2>/dev/null \
| awk '{print $1}' | sort -u | head -4); do
total=0; ok=0
for i in 1 2 3; do
t=$(timeout 6 bash -c "exec 3<>/dev/tcp/$ip/7844" 2>/dev/null \
&& echo ok || echo fail)
[ "$t" = "ok" ] && ok=$((ok+1))
done
printf " %-18s 7844 通 %s/3\n" "$ip" "$ok"
done
echo "===== 3. glibc 解析(getent)====="
getent ahostsv4 region1.v2.argotunnel.com 2>/dev/null | head -3 | sed 's/^/ v4: /'
getent ahostsv6 region1.v2.argotunnel.com 2>/dev/null | head -3 | sed 's/^/ v6: /'
echo
echo "===== 4. 这些 IP 的 ICMP 延迟 ====="
for ip in $(getent ahostsv4 region1.v2.argotunnel.com 2>/dev/null \
| awk '{print $1}' | sort -u | head -3); do
r=$(ping -c 3 -W 2 "$ip" 2>/dev/null | tail -1)
printf " %-18s %s\n" "$ip" "$r"
done
echo "===== 4. 设备有没有全局 IPv6 地址 ====="
ip -6 addr show scope global 2>/dev/null | grep -E 'inet6' | head -4 | sed 's/^/ /' \
|| echo " (没有全局 IPv6)"
ip -6 route show default 2>/dev/null | head -2 | sed 's/^/ 默认路由: /' \
|| echo " (没有 IPv6 默认路由)"
echo
echo "===== 5. 本机出口 IP / 运营商 ====="
curl -s --max-time 8 https://1.1.1.1/cdn-cgi/trace 2>/dev/null \
| grep -E '^(ip|loc|colo)=' | sed 's/^/ /'
echo "===== 5. cloudflared 支持哪些 edge 相关参数 ====="
cloudflared tunnel --help 2>&1 | grep -iE 'edge|region|protocol|ip-version' | head -12 | sed 's/^/ /'
echo
echo " 到 Cloudflare 的落地 colo(上面 colo= 就是,如果是 LAX/SJC 说明被路由到美西)"
echo " --- run 子命令的 ---"
cloudflared tunnel run --help 2>&1 | grep -iE 'edge|region|protocol|ip-version' | head -12 | sed 's/^/ /'
echo
echo "===== 6. 试几个 Cloudflare 常用 anycast IP 的 7844 ====="
for ip in 198.41.192.167 198.41.200.13 198.41.192.7 162.159.192.1 172.64.155.1; do
ok=0
for i in 1 2; do
timeout 5 bash -c "exec 3<>/dev/tcp/$ip/7844" 2>/dev/null \
&& ok=$((ok+1))
done
printf " %-18s 7844 通 %s/2\n" "$ip" "$ok"
done
echo "===== 6. 当前隧道服务实际用的参数 ====="
grep -o 'ExecStart=.*' /etc/systemd/system/lanremote-tunnel.service | head -1 | sed 's/^/ /'
echo
echo "===== 7. cloudflared 近期的连接日志 ====="
grep -E 'location=|edge discovery|Initial protocol' /root/lanremote-relay/tunnel.log 2>/dev/null \
| tail -6 | sed 's/^/ /'