作为基于 Tailscale 开发的 xEdge 的开发者,我一直非常喜欢 Tailscale ,然而自从我基于 fd.io VPP 开发了一个新的 iOS VPN 客户端(之前在站内分享过这个 VPN 客户端即 MintFlow NetStack 的 promo code )后,日常主要开着这个客户端,然而我总需要经常远程登陆到我的很多 SSH 服务器进行维护或客户支持,这个时候 iOS 不支持 VPN 多开就比较烦人了。
我原计划想把 Tailscale 的客户端集成到我的 VPN 客户端中,但主要考虑到我的客户端网络协议栈主要基于 C 语言和 RUST 开发,实在不太想引入 Go 这个运行时;因此,趁近期有一些时间,加上我想再深入研究一下 Tailscale 作为 SDK 的可用性,以及 Terminal Emulator 的原理,于是果断开搞,而往往我比较头痛的 UI 部分,如今已经有 Claude Code 这个工具提供大力支持,因此一个月的时间便搞定了,而 Apple Store 的审核则比较有意思,首次提交后,只是问题了一些 App 的工作原因,以及和 Tailscale 账号之间的关系,便顺利通过了,可见如果不是太多同类的软件,稍微有那么一些独创性,通过的可能性还是挺高的。
App 的名称是 NovaAccess ,目前主要是基于大神 Miguel de Icaza ( Gnome 项目的发起人,Mono/Xamian 等项目的发起人,大神最近从微软离职,却专注地搞 Apple 生态 App ,亲自写代码,值得学习)的 SwiftTerm (坛子里前几天发的 Nex Terminal 应该也是基于此项目)来实现 Terminal Emulator Engine ,网络部分则是 Tailscale 和 libssh2 来实现 SSH Terminal 。
App 已经上架 AppStore ,目前免费下载,链接见下:
https://apps.apple.com/us/app/novaaccess/id6749938291
当然 App 也同样在 ProductHunt 发布,链接见下,如果您感觉 App 对您有帮助,希望也能举手之劳,帮忙 upvote 一下,在此感谢您。
https://www.producthunt.com/products/novaaccess?launch=novaaccess
其他说明:
![]() |
1
yanyuechuixue 16 天前
很不错!支持一下!
|
![]() |
2
billzhuang 15 天前 via iPhone
Login tailnet 可以透过 OIDC 的方式么?
|
![]() |
3
billzhuang 15 天前 via iPhone
这个是运行在 userspace 里?所以本地生成了一个代理?
|
4
followad 15 天前 via iPhone
蛮不错的 pro 确实要更完善的功能,先收藏了
|
5
v2ro88 15 天前
还支持 15.0 ,赞一个,红心献上
|
![]() |
6
fortitudeZDY OP @billzhuang 支持 web 方式认证,因此理论上如果你在 tailscale 官网设置了第三方 idP ,应该是可以的
|
![]() |
7
fortitudeZDY OP @v2ro88 俺有一台 iphone 6splus ,用来真机测试低版本,最高版本就是 15.0 ,因而尽可能都想支持较低的 iOS 版本;为了这个还需要对 tailscale 的 sdk 作点小修改。。。
|
![]() |
8
fortitudeZDY OP @billzhuang 不是本地生成代理,而是直接将 ssh terminal 的底层传输层网络连接导入到 tailscale userspace 协议栈里,这样可以直接 ssh 到私有网络的 ssh 服务器上;当然后面打算还会加上通过一个 app 内置浏览器访问 tailnet 上的 web 资源,但目前看可能需要 iOS 18 ,暂时还没有加上。
|
![]() |
9
fortitudeZDY OP @yanyuechuixue 感谢支持
|
![]() |
10
fortitudeZDY OP @followad 感谢支持,后面会继续抽空迭代完善功能。
|
![]() |
11
billzhuang 15 天前
@fortitudeZDY 不太明白,你细说说。
|
![]() |
12
fortitudeZDY OP @billzhuang 不太清楚你指的是自建 control server ,比如配合 headscale 实现 oidc 支持,如果是这个的话,因为这个 app 暂不支持 custom login server ,所以没法支持。如果是指 tailscale 的 custom oidc provider ,应该可以看他们的文档:
https://tailscale.com/kb/1240/sso-custom-oidc 当然我没有验证过,我理解是如果你设置了 custom oidc provider ,你以 web 方式认证时,它们会让你选择你所配置的 oidc 进行跳转认证。 |
![]() |
13
lightionight 15 天前 via iPhone
😄terminal 不感兴趣,倒是对 op 的 mintflow 感觉有点意思
|
14
followad 15 天前 via iPhone
@fortitudeZDY 发码会在这帖子下面么 e
|
15
huyasi 15 天前 via iPhone ![]() 下载了
|
16
kapr1k0rn 15 天前
建议 OP 可以到 reddit 的/r/tailscale 推广一下,基于 tailscale 的应用方案在那边很受欢迎
|
![]() |
17
fortitudeZDY OP @lightionight 哈哈,解决一个自己的小问题,mintflow 还在打磨中,跟其他的不能比,还有一个原因是因为 vpp 比较重也有一些技术包袱,还得再折腾。等后面再完善点了再送点码出来:)
@kapr1k0rn 谢谢提醒,之前已经发了,我也经常关注/r/tailscale |
18
otherbanana 15 天前
支持,马上下载试用
|
![]() |
19
billzhuang 15 天前
@fortitudeZDY 我是想请假下#8 的实现,不是很明白你的实现
|
20
phoenix 15 天前
未来是否可以通过本地代理的方式将 Tailnet 上其他服务端口暴露出来,以访问 SSH 以外的服务?
|
![]() |
21
fortitudeZDY OP @phoenix 我估计不太可行,原因在于 iOS 环境下 app 可能没法常驻后台并同时保持网络连接,我的计划是后面通过内置 webview 的方式配合 app 内部的环回代理访问远程的 web 服务。
|
22
phoenix 15 天前
@fortitudeZDY #21 还有一个思路是把访问 Tailnet 的功能内置到 VPN 客户端比如你的 MintFlow NetStack 里,来解决常驻后台的问题。
|
![]() |
23
Quanuanc 15 天前
测试在打开了 Surge 或者 Shadowrocket 的情况下,无法连接上 Tailscale ,Tailnet 一直显示 Disconnected ,关闭 Surge 或 Shadowrocket 就能连接上 Tailnet 了。
同样的,在另一个内置了 Tailscale 功能的 App ,Scrcpy Remote 也有类似的情况,也是运行了 VPN 之后就连接不到 Tailscale 了,不知道这是不是 Tailscale sdk 的问题。 附上 Scrcpy Remote 的 TestFlight https://testflight.apple.com/join/GJpcAcxZ ,感兴趣可以下载测试。 |
![]() |
24
fortitudeZDY OP ![]() @Quanuanc 手上没有 surge/shadowrocket ,但有 loon ,测试了下是可以的,我估计可能是分流规则的原因,可以看下 tailscale 的域名的访问记录,达到 connected 状态只与 control server 交互。
7 月份 tailscale 搞了自己的 BGP as ,control server 的 ip 段已经稳定为下面两个,如果不想加域名,分流这两个 ip 到国外应该会比较稳定。 IPv4: 192.200.0.0/24 IPv6: 2606:B740:49::/48 唉,如果这两个 IP 段被墙了... |
25
patrickguokai 14 天前 via iPhone
@fortitudeZDY 我就是 Loon 下测试的,可以用,很不错的软件!感谢 up 。就是想问一下,这个软件退出后台就掉线吗?一打开软件就自动连接?还请解惑,谢谢。
|
![]() |
26
Quanuanc 14 天前
|
![]() |
27
fortitudeZDY OP @Quanuanc 有计划,打算支持 web view 等功能时一并支持下,难度应该不大,到时可能会在 pro 版本中提供,到时 v 站会提供码子给大家:)
|
![]() |
28
fortitudeZDY OP @patrickguokai 切到后台后 Apple 会停止网络,此时会断开,切回前台会重新连接。
|