✕

HomeLab 异地组网实践:iStoreOS 旁路由 + Tailscale + iOS 热点

作者:matrix 发布时间:2026-11-05 分类:零零星星

家里网络一直都有服务在跑,人在外面的时候想连回内网操作,这次实践了下 Tailscale 方案,确实还得实践出真知啊

如果只是把单个服务暴露到公网,用 Cloudflare Tunnel + 访问策略就能解决;但想像在局域网里一样直接访问任意内网设备 IP,那就是另一回事了,得真的组网。

场景:Mac 在异地、连 iOS 热点上网,临时访问 HomeLab 局域网服务,体验和坐在家里没差别。

整体链路:

Mac --(iOS 热点)--> iPhone [a-shell 代理 + Tailscale]
    --> iStoreOS 旁路由 [Tailscale 子网路由] --> 内网设备

iPhone 自己装上 Tailscale 客户端就能直接访问内网;但 iOS 热点共享出去的网络是不带 Tailscale 隧道的,所以 Mac 侧还得靠 iPhone 上跑的代理服务中转。

iStoreOS 安装 Tailscale 并开启子网路由

Tailscale 默认是点对点传输,也就是设备对设备访问。想在 Tailscale 上访问局域网里其他所有设备,必须开启「子网路由」(Subnet routes)。

  1. iStoreOS 商店直接搜 Tailscale,装社区版就行,安装后正常登录 Tailscale 账号
  2. 申请开启子网路由 Subnet routes

申请开启子网路由

子路由开启之后配置需要访问的局域网 IP 段,保存并应用。

  1. 到 Tailscale 后台授权子网路由申请

Tailscale 后台授权子网路由申请

打开 Tailscale 控制台,找到 iStoreOS 这台设备,右侧 Edit route settings,勾选刚才配置的子网 IP 段。

最后重启一下 iStoreOS 路由,或者 ssh 上去重启 tailscale 服务,避免路由表不生效:

/etc/init.d/tailscale restart

iOS 端:Tailscale 客户端

iPhone 安装 Tailscale 并开启,如果之前已经连接过,记得断开重连一次。

Safari 直接访问局域网 IP(比如 192.168.99.xx),能正常打开就说明组网成功,只是速度会一般般

iOS 端:a-shell 跑代理服务

到这里 iPhone 自己访问内网已经没问题了。但 Mac 等其他设备走 iOS 热点时用不到 Tailscale 隧道,临时用一下又不想每台设备都装 Tailscale,那就让 iPhone 顺便提供代理服务。

装一个 a-shell / a-shell mini,它提供本地 shell 环境(带 Python/node),可以跑 proxy 服务:

# 安装 pproxy
pip install pproxy

# 开启代理监听(HTTP + SOCKS5)
pproxy -l http+socks5://0.0.0.0:8080 -v

注意:pproxy 运行期间不要锁屏,a-shell 退到后台被杀代理就不能用了

Mac 接入代理

iPhone 的局域网 IP 在「设置 → Wi-Fi → ⓘ」里可以看;Mac 如果连的是 iPhone 热点,地址一般是 172.20.10.1。

终端先验证代理可用:

% curl --proxy 172.20.10.1:8080 -i baidu.com

HTTP/1.1 301 Moved Permanently
Location: https://www.baidu.com/
Date: Thu, 05 Nov 2026 07:29:35 GMT
Content-Length: 57
Content-Type: text/html; charset=utf-8

<a href="https://www.baidu.com/">Moved Permanently</a>.

之后浏览器用 Proxy SwitchyOmega 配上 172.20.10.1:8080 的 SOCKS5/HTTP 代理,访问内网 IP 就和平常在局域网里完全一样了

以后使用 iOS开启Tailscale + a-shell (pproxy -l http+socks5://0.0.0.0:8080 -v) + mac代理 完美~