两台设备、两座城市、一个要求:笔记本的网页请求要从手机的移动网络出去。多数人先在手机上装一个 VPN 应用,但那是反着做,因为这类应用让手机变成别人网关的客户端。真正可行的形态是:从笔记本到手机建立一条隧道,再由手机转发到互联网。Tailscale 在 Android 上以出口节点的方式支持这件事,只要弄明白哪个开关属于哪一侧,步骤很短。

动手之前先把角色定清楚

热点是“近距离”。笔记本接入手机的 Wi-Fi 或 USB 共享,手机承载它的流量——这正是你想要的行为,但前提是两台设备就在旁边。手机上的 VPN 客户端是相反的角色:手机把自己的流量发给远端网关,另一座城市的笔记本从中得不到任何东西。

远程蜂窝出口是第三种形态。笔记本加入一个私有网络,手机也在同一私有网络中并被批准转发互联网流量,笔记本再选择手机作为出口。这种安排不要求两台设备彼此靠近,也没有任何环节是自动的:一台仅仅加入了网络的手机,什么都不会转发。

碰手机之前

你需要一个能管理该私有网络的账号,因为批准出口节点是管理动作,不是设备设置。笔记本上的客户端要装好并登录同一网络;除了很短的测试,手机都得插着电。

先决定手机的 Wi-Fi 要不要留着。这个选择决定了你实际在测哪条上行链路。如果网络使用访问规则,先补上“允许用户经出口节点访问互联网”的权限,再去排查手机。配置正确的手机与没有权限使用它的账号,在笔记本上表现出的症状完全一样:被拒绝,而且没有有用的解释。

在手机上启用角色,然后批准它

在手机上安装客户端、登录,打开应用里的出口节点设置,启用“允许本设备作为出口节点”的选项。不同版本措辞会变,意图不变:手机是把自己提供出去,而不是为自己挑一个出口。

然后打开管理控制台,在设备列表里找到这台手机,批准出口节点路由。批准与应用内开关刻意分开,目的就是不让某台设备悄悄变成整个网络的互联网网关。

如果你的网络还要求设备审批,先批准设备;未获批准的设备无论应用怎么说都当不了出口。最后在笔记本上打开客户端菜单,选择出口节点,按名字选中手机。笔记本的默认路由现在指向隧道。确认选择真的生效:有些客户端菜单里显示了出口节点,却一直用本地连接,直到隧道重建;快速重连比诊断过期状态更快。

测量之前先看上行链路

在手机上,如果这次的目的就是移动网络,先关掉 Wi-Fi,并在手机浏览器里打开一个页面,确认移动数据真的能用。如果手机在 Wi-Fi 上,你的出口就是那个 Wi-Fi 网络——安排不算错,但不是工单描述的那种。

从两端对比出口地址。在手机上打开显示地址的页面,然后在笔记本上执行 curl -s https://ifconfig.me。地址一致说明笔记本是从手机的连接出去的;运营商在用户之间共享地址,会让两条无关的连接看起来一样,所以把一致当作“相符”,而不是“结论”。

按两段来算,不是一段。第一段是笔记本到手机,走隧道实际经过的路径;第二段是手机到目的地,走移动无线电。手机上很快的下载速度说明不了第一段,而拥塞的上行链路会在两个方向上都表现为请求变慢。

依赖它之前先知道边界

Tailscale 的出口节点文档指出,Android 出口节点在用户态转发,比内核路径慢,也不是用来替代路由器的。文档还建议长时间使用外接电源。在一台边充电、发热、又在转发流量的手机上,Android 的电池管理仍值得留意:激进的省电策略可能挂起应用,隧道看起来就像间歇性的网络故障。

套餐和硬件一样重要。共享与热点的条款、公平使用阈值、运营商级别的地址共享,都适用于从手机出去的流量,而这些在笔记本上一条都看不见。允许手机无限浏览的套餐,仍可能对转发的流量计费。若要长期部署,带蜂窝模块并支持网关角色的小型路由器边界更干净:套餐、隧道、转发策略和供电合成一个可监控的服务,而不是一台必须保持清醒的、放在架子上的手机。需求是有限的远程访问或位置测试时,用手机做出入口;需求是可用性时,规划路由器。

相关文章