返回现场笔记
2 分钟阅读

通过 Tailscale 构建一个随时可用的局域网

用 Tailscale 把家里的电脑和手机组进同一个私有局域网:电脑与手机端的安装配置,以及通过 Shadowrocket / Stash 接入 Tailscale 网络的三种方式与注意事项。

  • #tailscale
  • #network
  • #tooling
Tailscale 虚拟局域网:外面的手机与家里的电脑被拉进同一个私有网络,隧道内有数据包往返
AgentTailscale 加密隧道100.64.0.2手机在外面 · 4G100.64.0.1家用电脑家里 · Agent
同一个虚拟局域网 100.64.0.0/10

最近我把越来越多的活交给了跑在家里电脑上的 Agent 干,但是电脑并不是会随时都在身边,所以我找了一圈,发现了 Tailscale,它可以让我在外面的手机上也能连上家里的这台电脑,随时随地指挥家里的 Agent 工作。

搭建这个私有的局域网非常方便:

  1. 访问 https://tailscale.com/ 注册账号
  2. 在电脑上安装 Tailscale 客户端并登录
  3. 在手机上安装 Tailscale

其中在手机上安装 Tailscale 有三种方式。

官方 Tailscale 客户端

直接在 iOS 商店下载官方 Tailscale 客户端并登录,这个方式设置最方便,但是存在一个问题:如果你本地有其他的代理,Tailscale 客户端会在手机上抢占代理端口,导致其他代理无法正常使用。

使用 Shadowrocket

登录 https://tailscale.com/ 然后打开地址: https://console.tailscale.com/admin/settings/keys

找到 Tailscale auth key ,生成并复制下来。

generate auth key

Shadowrocket 已经直接支持了 Tailscale。打开 Shadowrocket,点击底部的"设置",选择 Tailscale 完成配置即可(这一步会用到上一步生成的 auth key)。

使用 Stash

Stash 也原生支持 Tailscale,直接把一个 Tailscale 节点作为 type: tailscale 的代理写进配置:

proxies:
  - name: ts-main
    type: tailscale
    auth-key: tskey-auth-xxxxxxxxxxxxxxxx

也可以通过图形界面补充配置:

首页 --> 代理信息 --> 点击右上角的加号 --> 代理类型选择 Tailscale,然后填入 auth key 等信息。

配置生效后,Tailscale 只是一个普通的代理节点,需要通过规则把流量指过去才会走它:

rules:
  - DOMAIN-SUFFIX,ts.net,ts-main
  - IP-CIDR,100.64.0.0/10,ts-main,no-resolve

同样这个配置也可以通过图形界面完成配置:

首页 --> 配置 --> 规则 --> 点击右上角的加号 --> 按照上面的配置填入即可。

这样手机上访问 Tailscale 网络里的设备(比如家里那台电脑),流量就会交给这个节点处理,本地其他代理互不影响。

注意:

  • 如果手机上还是无法访问电脑,需要点击底部"设置",找到"隧道",找到"跳过路由",把"100.64.0.0/10"这个条目删除,然后重新启动代理就可以使用 Tailscale 网络了。
  • auth-key 受 Key Expiry 限制,建议在 Tailscale 后台的 Machines 页面把这台设备设为 Expiry disabled,否则到期后节点会自动失效。
  • 如果要在多个设备上复用同一个 auth-key,生成时要勾选 Reusable,One-off 的 key 用完一次就作废了。

这样就完成了一个私有的局域网配置,可以在手机上访问家里的电脑了。

手机请求经过代理规则匹配后,通过 Tailscale 节点抵达家用电脑
ts-main手机访问 100.64.0.1rulests.net100.64.0.0/10规则匹配命中 → ts-main家用电脑100.64.0.1
发起规则命中抵达电脑