======================================================== 服务器端(随身 WiFi / Linux) 版本 1.4.0 ======================================================== 作用:让**不在同一个网络**的电脑和手表连上。 手表 ──HTTPS──┐ ├──> Cloudflare ──> 本机 :8080 电脑 ──HTTPS──┘ 本程序是**纯标准库**的 Python,不装任何第三方包。 内存占用约 20MB,加 cloudflared 共约 60MB —— 512MB 的小机器跑得动。 【装】 把本文件夹拷到设备上,然后: bash install.sh 它会: 1. 检查 python3 / cloudflared(没有就下载) 2. 装两个 systemd 服务并设为开机自启: lanremote-relay 中转服务 lanremote-tunnel Cloudflare 隧道 3. 打印公网地址和管理页地址 【常用命令】 lanremote-url 打印当前公网地址 lanremote-key 打印管理钥匙 systemctl status lanremote-relay systemctl status lanremote-tunnel journalctl -u lanremote-relay -f 【地址老变怎么办?记住一个局域网地址就行】 匿名隧道的公网地址每次重启都会变。查当前地址: 浏览器打开 http://<随身WiFi的IP>:8080/url 比如 http://192.168.2.156:8080/url 它会直接返回当前的公网地址,纯文本,不用登录。 下面还有两个命令(SSH 上去用): lanremote-url 打印当前公网地址 systemctl restart lanremote-tunnel 换个地址(超时的时候用) 【管理】 管理页: <公网地址>/?key= 管理页顶部也会大字显示"当前公网地址"。 管理密码:120830(存在 data/admin_password.txt,可改) 能看到:设备列表、在线状态、配对码、流量、会话数 能操作:踢会话、抹掉配对码绑定 【重要:这几个参数都是实测调出来的】 install.sh 里给 cloudflared 加了: --edge-ip-version 4 只走 IPv4 --ha-connections 1 并发连接数 --retries 5 连边缘失败时多重试 为什么(都是踩出来的,不是拍脑袋): ① IPv6:这条线路**分配了 IPv6 地址但实际不通**, 而 Cloudflare 边缘默认优先 IPv6,会导致建隧道一直超时 (日志里是 context deadline exceeded)。 ② 协议:**用默认的 QUIC,不要写 --protocol http2**。 实测这条线路把 HTTP/2 用的 TCP 7844 挡了: TLS handshake with edge error: read tcp ...:7844: i/o timeout 而 QUIC 走 UDP 7844 是通的。 (早期版本这里误写成 --protocol http2,隧道完全起不来。) ③ 连接数:用 1(默认是 4)。这条线路对并发 UDP 很敏感: 链路好时 ha=4 只成功注册 1 条(9/10),ha=2 是 10/10; 链路退化时 ha=2 掉到 0/10(一条失败重试把另一条也拖下水), 而 ha=1 是 15/15 + 10/10(100%)。 多一条连接不是多一份冗余,而是多一份争抢。 冗余交给看门狗(每 30 秒查一次,断了就重启)更靠谱。 换了网络环境可以试着去掉这些参数用默认值。 【关于隧道地址会变】 默认用的是 Cloudflare **匿名快速隧道**,地址每次重启会变。 想固定地址要用**具名隧道**(需要你自己的域名): cloudflared tunnel login # 浏览器点授权 cloudflared tunnel create lanremote cloudflared tunnel route dns lanremote relay.你的域名 # 然后把 lanremote-tunnel.service 的 ExecStart 换成: # cloudflared tunnel --no-autoupdate run lanremote 具名隧道不受匿名隧道限流,稳定性完全不是一个级别。 【省内存】 默认给两个服务各设了 MemoryMax=128M。 要再省就把用不上的服务停掉: systemctl stop mariadb php8.2-fpm apache2 systemctl disable mariadb php8.2-fpm apache2