Skip to Content
功能介绍内网穿透

内网穿透

出门在外访问家中的 Mac 与内网服务、以家庭宽带 IP 上网、远程调试办公室里的开发环境——这些需求过去往往意味着公网 IP、路由器端口转发或自行搭建穿透服务。Stash 将内网穿透做成了开箱即用的内置能力,并提供两套方案:

  • StashLink:Stash 自研的设备互联协议。登录同一 iCloud 账号即完成组网,零配置、零服务器、端到端加密,适合快速连接自己的 Apple 设备。
  • 内置 Tailscale:完整的 Tailscale 节点能力。适合已有 Tailnet、需要跨平台设备互联或更复杂组网的用户。

两者可以同时使用,也都与 Stash 的分流规则无缝协作。

StashLink 让登录同一 iCloud 账号的设备自动组成一张专属于你的加密网络:

  • 零配置组网:无需注册账号、无需搭建服务器、无需公网 IP 与端口转发,设备之间自动互相发现。
  • 端到端加密:设备间直接建立加密连接,并通过设备证书互相认证,只有你的设备可以加入这张网络。
  • 智能选路:同一局域网内直接内网互联;跨网络时自动进行 NAT 打洞建立点对点直连;受限网络下自动借助你已有的代理节点中继。
  • 完整转发能力:TCP 与 UDP 均可转发,StashLink 节点可以像普通代理一样参与分流规则与策略组。

工作方式

设备通过 iCloud 交换少量寻址信息完成互相发现,随后按以下优先级自动建立连接:

连接路径时机说明
局域网直连双方处于同一局域网流量不出内网,速度最快
NAT 打洞直连双方处于不同网络通过 STUN 探测公网地址,建立点对点加密连接
代理节点中继直连暂不可用借助你自己的代理节点转发,保证始终可达

无论走哪条路径,数据在两台设备之间始终是端到端加密的:即使经过中继,中继节点也只是在转发密文,看不到任何传输内容。iCloud 仅用于同步寻址信息,Stash 不运营任何流量中转服务器。

在 Mac 上运行的 Stash 会自动成为可被访问的一端。家中保持一台 Mac 运行 Stash,你的 iPhone、iPad 与其他 Mac 就可以随时连回家。

作为代理节点使用

在配置中声明一个 type: stashlink 节点,即可把另一台设备变成你的代理出口。设备 ID 可在对端设备的「工具」→「系统信息」页面查看。

proxies: - name: HOME-MAC type: stashlink device-id: 1a2b3c4d5e6f7a8b rules: # 家庭内网走家中 Mac - IP-CIDR,192.168.1.0/24,HOME-MAC,no-resolve # 指定站点以家庭 IP 访问 - DOMAIN-SUFFIX,example.com,HOME-MAC

典型场景:

  • 访问家庭内网:NAS、路由器管理页面、智能家居等内网服务随时可达。
  • 以家庭 IP 上网:让指定应用或站点经家庭宽带访问,获得稳定的家庭网络身份。
  • 远程开发调试:在外直接访问办公室或家中开发机上的服务。
iOS/tvOS3.6+macOS4.3+

NAT 打洞并非在所有网络环境下都能成功,此时中继需要一个载体。StashLink Auto 把这件事完全自动化,无需任何配置:

  • 自动挑选:从配置中的代理与订阅节点里选出中继载体,延迟低者优先。
  • 验证后发布:候选节点启用前会经过真实连通性自测(完整的加密握手),只有验证可达的地址才会发布给你的其他设备。
  • 持续守护:连续失败自动切换到下一个候选;网络切换、订阅刷新后自动重新选择。

也可以手动指定中继载体,此时 Stash 只使用指定的节点:

stashlink: underlying-proxy: type: ss server: relay.example.com port: 8388 cipher: aes-128-gcm password: password

设备域名

iOS/tvOS3.6+macOS4.3+

每台设备都会自动获得一个 .stash 域名,<设备名>.stash:<端口> 直达那台设备本机的对应端口:

# 访问家中 Mac 上运行的服务 curl http://steve-mac-mini.stash:9090 # SSH 到家中 Mac ssh steve@steve-mac-mini.stash
  • 域名来自设备名称并经 iCloud 自动同步:名为「Steve 的 Mac mini」的设备自动获得 steve-mac-mini.stash。中文与特殊字符会自动转换,重名设备自动附加设备 ID 后缀,确保域名永不指错设备。
  • 服务即使只监听在对端的 127.0.0.1、没有暴露给局域网,也可以通过设备域名访问。
  • TCP 与 UDP 均支持,任何经过 Stash 的应用都可以直接使用设备域名。

设备域名默认开启,也可以在配置中关闭:

stashlink: device-dns: false

设备域名用于访问「那台设备上的服务」;若要让流量「经那台设备出网」,请使用上文的 type: stashlink 节点配合分流规则。

内置 Tailscale

iOS/tvOS3.4+macOS4.2+

Stash 将完整的 Tailscale 节点内置于代理引擎:声明一个 type: tailscale 节点,Stash 就是你 Tailnet 中的一台设备。

  • 加入已有 Tailnet:与 Linux、Windows、NAS、树莓派等任意平台的设备互联互通,也可以与他人共享设备、按 ACL 管理访问权限。
  • Exit Node:把 Tailnet 中的任意出口节点作为 Stash 的代理出口。
  • 自建控制服务器control-url 支持 Headscale 等自建控制面。
  • 直连与 DERP 中继:自动 NAT 打洞建立点对点连接,并以 Tailscale 全球 DERP 中继网络兜底。
  • 与分流规则共存:iOS 同一时间只能运行一个 VPN 隧道,Stash 让 Tailscale 组网与代理分流在同一个隧道内同时工作。

接入支持 auth-key 自动完成,也可以在应用内交互登录:

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

自动 Tailnet 路由与 MagicDNS

iOS/tvOS3.6+macOS4.3+

Tailscale 节点运行后,Stash 会自动把当前 Tailnet 的 MagicDNS 域名后缀与各设备地址路由到该节点:hostname.tailnet-name.ts.net 这样的 MagicDNS 域名直接解析、直接可达,无需编写任何规则,也无需修改 DNS 配置;其余流量不受影响,照常匹配你的分流规则。

完整参数与认证流程请参考 Tailscale 代理协议

如何选择

StashLink内置 Tailscale
账号体系iCloud 账号,自动组网Tailscale 账号或自建控制服务器
配置成本零配置需登录并管理 Tailnet
设备范围自己的 Apple 设备任意平台,可与他人共享
私有域名<设备名>.stashMagicDNS(*.ts.net
中继兜底自动借助你已有的代理节点Tailscale DERP 中继网络
组网能力简单直接,省心Exit Node、子网路由、ACL 等完整生态

简单来说:只想连回自己的设备,选 StashLink,打开即用;需要跨平台设备、多人协作或精细的网络管理,选内置 Tailscale。两者互不冲突,可以同时运行。

Last updated on