连接不在你 Wi-Fi 上的手机
连接不在电脑所在网络中的手机的六种方式,从端口转发到你自己部署的中继,以及如何选择。
本页为译文。如与英文版不一致,以英文版为准。 English
使用移动数据的手机位于运营商的 NAT 之后,无法接受传入连接。所以总是手机主动连接你的电脑;变化的只是它连接的地址。Droidline 不运营公共中继。你选择一种适合自己网络的方式,设置一次即可。
选择方式
| 方式 | 适用情况 | 费用 | 工作量 | 地址 |
|---|---|---|---|---|
| 同一 Wi-Fi | 手机和电脑连接同一台路由器 | 免费 | 无 | 不需要 |
| 端口转发 | 你可以修改路由器设置 | 免费 | 低 | 如果公网 IP 会变化,需要一个动态 DNS 域名 |
| Cloudflare Tunnel | 无法进行端口转发 | 免费 | 中 | 快速隧道重启后地址会变;使用你自己域名的命名隧道地址固定 |
| Cloudflare Workers 中继 | 电脑和手机都在 NAT 之后,而你不想维护服务器 | 少量手机在免费套餐内即可 | 中 | 固定 |
| VPS 或 Docker 中继 | 你已经有一台服务器 | 你自己的服务器 | 中 | 固定 |
| 其他隧道 | 你已经在使用 ngrok、Tailscale Funnel 或类似服务 | 取决于服务 | 低 | 取决于服务 |
方式 3 到 6 通过 HTTPS WebSocket 传输连接。agent 端口(8779)在同一端口上接受纯 TCP、TLS 和 WebSocket,所以只要转发或通过隧道暴露这一个端口,就能覆盖所有方式。
不变的部分
- 握手之后,每一行都经过端到端加密,密钥只有你的电脑和你的手机持有。隧道或中继的运营者能看到连接时间、数据大小和设备 ID,但永远看不到命令或屏幕内容。参见安全。
- 手机按顺序尝试各个地址:首先是在同一 Wi-Fi 上找到的电脑,然后是你配置的地址,最后是中继。当它正在使用其他路由而所连的 Wi-Fi 发生变化时,它会重新查找电脑并切换回来。
droidline devices显示每部手机正在使用的路由。
手机如何获知地址
新手机会从配对二维码中获得所有地址。已经配对的手机每次连接时,都会从电脑接收最新的地址列表。所以添加地址之后,先让每部手机在同一 Wi-Fi 下连接一次(或重新配对),再把它带出大楼。