电子纸的 Kindle 除了盖泡面,还能当 24 h 在线的 VPN 跳板。本文把 Tailscale 官方 armv7 静态二进制塞进越狱后的 PaperWhite3,让它在 30 mA 功耗下成为 Tailnet 的子网路由器与离线中继节点。整套方案零焊接、零额外硬件,只要一根充电宝就能在断网时把内网 “拖” 出来。
1. 为什么选 Kindle:硬件底子与越狱生态
PaperWhite3(PW3)硬件参数看起来寒酸:
- NXP i.MX6 SoloLite 800 MHz,单核 Cortex-A9
- 256 MB DDR3 + 4 GB eMMC
- Wi-Fi 2.4 GHz b/g/n + 蓝牙 3.0(未焊天线)
- 电池 1420 mAh,原生续航 6 周(关闭无线)
但放在边缘场景里,它有三个隐藏优势:
- Linux 主线内核 3.0.35,已集成 TUN/TAP,无需自己编模块;
- 越狱社区成熟,KUAL 菜单一键注入程序,重启不丢;
- 功耗极低,屏幕关闭后整机 30 mA,比树莓派 Zero 2 W 低一个量级。
2. 刷机与依赖:10 分钟装完 Tailscale
步骤全部在 mitanshu7/tailscale_kual 开源脚本里,简化为:
- 越狱:用 WatchThis 漏洞刷 MRPI,装 KUAL。
- 启用 USBNetwork:把 kindle 插上电脑即出现
usb0网卡,SSH 默认 IP 192.168.15.244。 - 拷贝二进制:下载 Tailscale 官方
static/arm1.84.0 版,把tailscale与tailscaled丢进/mnt/us/extensions/tailscale/bin/。 - 写 auth.key:在 Tailscale 控制台生成一次性密钥,贴到同名文件。
- KUAL 菜单先点 “Start tailscaled”,10 秒后再点 “Start tailscale”,看到 100.x 地址即上线。
全程不需要交叉编译,也不需要 opkg/entware,纯静态二进制,libc 用 musl 无依赖。
3. 子网路由模式:让 Kindle 成为内网网关
Kindle 本身在内网网段 192.168.0.0/24,只需在 KUAL 里再多点一次 “Advertise Routes”,等效命令:
tailscale up --advertise-routes=192.168.0.0/24 --reset
回 Tailscale 控制台 → Machines → 找到 kindle-pw3 → Edit route settings → 勾选 192.168.0.0/24 → Approve。
此时任何远程节点都能直接 ssh root@192.168.0.1 访问家里的主路由,无需在主路由上装 Tailscale。Kindle 充当了 “离线跳板”:即使家里宽带掉线,只要 Kindle 还能连 DERP,就能把内网 “拖” 出来。
4. 离线跳板实战:无公网 IP 也能穿透
测试场景:
- 家里光猫为 CGNAT,无 IPv4 公网,IPv6 每 24 h 重新拨号。
- Kindle 通过 Wi-Fi 连光猫,拿到 192.168.0.15。
- 手机 5G 开 Tailscale,只走 IPv4。
流程:
- 手机
ping 100.85.174.72(kindle 的 Tailscale IP)通,延迟 180 ms,走巴黎 DERP。 - 手机
ssh -J root@100.85.174.72 root@192.168.0.1成功登录主路由。 - iperf3 测速:Kindle ← 手机,TCP 3.2 Mbps,CPU softirq 占 58%,已达单核极限;UDP 丢包 2%,可接受。
结论:当应急维护通道够用,别指望跑大文件。
5. 功耗与守护:电子纸如何 7×24 挂充电宝
实测数据(USB 电流表):
- 屏幕关闭、Wi-Fi 空闲:30 mA
- 屏幕常亮、Wi-Fi 空闲:90 mA
- 持续 3 Mbps 转发:110 mA
1420 mAh 电池理论续航:
- 屏关 15 h,屏开 5 h;
- 挂 10000 mAh 充电宝 ≈ 3 天持续在线。
守护脚本 /mnt/us/extensions/tailscale/bin/keepalive.sh:
#!/bin/sh
# 每 5 分钟检查一次 tailscaled 进程与路由
if ! pidof tailscaled > /dev/null; then
/mnt/us/extensions/tailscale/bin/tailscaled --tun=userspace-networking --state=/var/lib/tailscale/tailscaled.state --socket=/var/run/tailscale/tailscaled.sock &
sleep 10
/mnt/us/extensions/tailscale/bin/tailscale up --advertise-routes=192.168.0.0/24 --accept-dns=false
fi
# 屏幕常亮=Wi-Fi 不休眠
echo 0 > /sys/devices/platform/imx_epdc_fb/graphics/fb0/blank
cron 每 5 min 执行一次,掉电重启后 KUAL 会自动重载 cron,实现 “无人值守”。
6. 局限与优化:别把 Kindle 当主力路由
- 内存墙:tailscaled 常驻 18-22 MB,剩余 40 MB 给系统,再跑其他服务就 OOM。
- CPU 墙:单核 800 MHz,>3 Mbps 时软中断占 60%,看视频不现实。
- 电池墙:长期 100 mA 放电会折损锂电,建议一直插充电宝,并关闭 LED 灯。
适用场景:
- 外出时给 NAS 做临时维护通道;
- 农村老家无公网,春节远程调试摄像头;
- 灾难应急:当主路由宕机,Kindle 仍能拉出管理网。
如果你需要 20 Mbps 以上吞吐,请换成树莓派或 OpenWrt 小主机;如果只需要 “随时能连上”,30 mA 的 Kindle 是最便宜的边缘中继。
资料来源
[1] mitanshu7/tailscale_kual 项目页,含 arm 二进制与 KUAL 脚本
[2] Tailscale 官方文档:Subnet routers and traffic relay nodes