爱意满满的作品展示区。
netox

撸了个 Tailscale 的国内发行版,分享给大家

  •  3
     
  •   netox · Dec 5, 2022 · 14856 views
    This topic created in 1430 days ago, the information mentioned may be changed or developed.

    楼主是一名网络通信领域的老程序员,先前在大厂工作过一段时间,因为期望陪伴家人且亦到了卷出病也卷不动的年龄,机缘巧合下回到定居地工作。

    因为工作强度降低以及需要调理身体的缘故,在工作之余,撸了个 Tailscale 的国内发行版,目前感觉基本能用,所以分享出来。

    产品定位

    Tailscale 的国内发行版,提供国内 SSO 认证(当前是微信)及 P2P 打洞失败时的国内中转能力;为用户提供易用的(扫码入)、安全的终端内网互联工具。

    技术背景及现状

    总体上是复用了 Tailscale + Headscale 的核心代码,做了些外围界面的微小工作(此处致敬一下长 者 ,可惜加不了 1s 了)。

    管理平台方面,主要利用 vue 以及 go 来开发 web 前端及后台,文档部分用到了开源 cms ( strapi ) + nuxt 来实现静态化。

    桌面 app 方面,主要是基于 Tailscale 内核,通过 go build 工具来生成静态库(从 Tailscale Android 代码学习得到),基于 tauri 以及 rust ffi 来实现跨平台桌面 App 构建(注:此桌面 App 计划整理注释以及代码后开源),目前支持 Linux/Windows/Mac(含 M1 及之后芯片)的桌面应用。

    Android app 方案,则主要针对 Tailscale 开源代码进行汉化,集成微信认证能力。

    Ios/IPad 暂时没有精力开发,因为目前及未来仍会兼容 Tailscale 官方客户端,因此可参考 Headscale 的方式接入。

    免费用户及付费策略

    因为这个产品算是楼主的全干(全水)工程师的一个尝试,个人的应用主要是连接自己的各个云服务器以及家用 NAS 同步(之前被百度网盘搞伤了),所以从自己的使用来看,流量需求并不高,并且 Tailscale 的 subnet router 等高级功能尚未集成出来,因此当前仅有免费套餐提供出来。

    详细的免费用户规则,请参考官网链接: https://xedge.cc/doc/faq/2

    关于付费,楼主觉得主要还是从功能(比如楼主考虑的提供短域名池,供用户自定义网络子域名以及终端别名)、流量规格层面进行约束,以便能够维持这个服务的长期运行,这部分功能会根据运行情况进一步优化及开发。

    关于 Tailscale ,在 V2EX 上已经有较多讨论了,这里就不再介绍了;楼主做的国内发行版产品官网为: https://xedge.cc

    上手文档为: https://xedge.cc/doc/quickstart/1

    期待这个东西能够帮助到大家,如果有问题,请在本楼反馈,以及参考前面的免费用户规则反馈即可。

    65 replies  •  2024-03-21 16:40:29 +08:00
    shinko
    shinko
    Dec 5, 2022 via iPhone
    1
    个人的话,现有的 Tailscale + Headscale 已经很完善了,我用这个方案几个月,非常稳定。6 个地方的宽带都没出过问题
    matzoh
    matzoh
    Dec 5, 2022
    2
    我个人还是比较在意 ios 设备的支持度(缺一不可)

    headscale 不支持 ios ( tailscale 没开源)
    netox
    netox
    OP
    Dec 5, 2022
    3
    @shinko 个人的话,我觉得有技术基础用 Headscale 是完全没问题的;但是如果想省事也不太会部署的话,用 xEdge 则会比较方便。
    netox
    netox
    OP
    Dec 5, 2022
    4
    @matzoh 谢谢反馈,iOS 这个我觉得应该是可以做的,后面会重点解决,不然对不住全终端支持这个口号:)
    zuijiapangzi
    zuijiapangzi
    Dec 5, 2022
    5
    @shinko 请问下,是否有详细教程推荐?
    billzhuang
    billzhuang
    Dec 5, 2022
    6
    " P2P 打洞失败时的国内中转能力" 那么还能使用官方的节点么?
    netox
    netox
    OP
    Dec 5, 2022
    7
    @billzhuang 主要是考虑合规因素,因为不会考虑支持国外 ip 的终端接入,因此官方节点的意义就不大了:(
    shinko
    shinko
    Dec 5, 2022❤️1
    8
    @zuijiapangzi https://icloudnative.io/ 这里几篇文章已经算是非常详细了。
    @fortitudeZDY 确实,没有开箱即食对于一些人是难点。特别中继那部分要自己编译~~要不用 Tailscale 的服务器太慢了
    wwqgtxx
    wwqgtxx
    Dec 5, 2022
    9
    能和官方版本共存么
    netox
    netox
    OP
    Dec 6, 2022
    10
    @wwqgtxx 可以和官方共存,但官方部分平台,比如 ios 是不支持修改 login url ,就无法对接了。
    Aixtuz
    Aixtuz
    Dec 6, 2022
    11
    主力设备 iOS ,所以只好用原版了,自建 derp 体验还行。
    wolfmei
    wolfmei
    Dec 6, 2022
    12
    哦,前不久才自建 tailscale + headscale + derp
    ixinshang
    ixinshang
    Dec 7, 2022
    13
    最近折腾 zero ,有些移动网络打不通。。。
    OP 的提供一个 docker 客户端把。
    blackmolycat
    blackmolycat
    Dec 20, 2022
    14
    这几天因为 google 团队盘挂掉的事,想到还是自己搭建个人网盘好一点,终归逃不过。
    刚开始尝试了下 zerotier ,但是 ios 客户端上次更新居然是 6 个月以前,不出意外连接后打洞失败走外网服务器中转,网速慢的无法使用,后切换到 tailscale 解决。然后 tailscale 的 ios 客户端目前隔一天就得重新验证登录,重新验证就会很容易失败(sso 我用的 google ,不太清楚这个过程是否会受到墙的问题)。
    ios 刚需,但目前用起来都有毛病...
    netox
    netox
    OP
    Dec 23, 2022
    15
    @lgjx123 ios 客户端看来我这里要提上日程啦,已经找到之前做的 ios 代码原版,假期抽空再撸一个 ios 的:)
    netox
    netox
    OP
    Dec 29, 2022
    16
    新冠初愈,发一个年末的版本( v0.1.4 ),感谢前期朋友们的试用。

    预祝大家都顺利抗过病毒以及新年快乐。

    在即将到来的新年,xEdge 计划支持 subnet router 、自定义域名别名、ios 平台支持;欢迎各位继续关注试用。
    Awes0me
    Awes0me
    Jan 4, 2023
    17
    使用了一段时间很好用, 谢谢开发
    techstay
    techstay
    Jan 11, 2023
    18
    感谢,之前也是在 v 站看到另一个朋友分享的工具,不知道哪里没设置对,能 ping 通能访问 VNC ,但是别的就访问不了,简直有毒。这个工具一次就成功了,好东西
    techstay
    techstay
    Jan 14, 2023
    19
    大佬能不能给客户端加个注销功能,我给我朋友分享,他没看我说啥就直接登录了自己的账号,结果我想让他退出登录我的账号时候才发现没有注销功能。然后找了半天配置文件,删除了在登录结果还是用上次的状态登录。折腾了一晚上也没解决……
    netox
    netox
    OP
    Jan 22, 2023
    20
    @techstay 嗯,这个功能我记录一下,后面的版本应该可以加上,之前也有计划增加重置状态能力的。
    netox
    netox
    OP
    Jan 22, 2023
    21
    各位朋友新春快乐,预祝大家兔年大展宏兔:)

    近期把 Tailscale 的 subnet router 功能移植过来了,目前控制后台已经上线该功能,但终端方案暂仅支持 Linux 终端。

    具体使用可参考如下文档:

    https://xedge.cc/doc/usecase/3
    Reserdog
    Reserdog
    Feb 4, 2023
    22
    @fortitudeZDY 嗨,楼主,方便留个联系方式吗?
    Reserdog
    Reserdog
    Feb 4, 2023
    23
    @fortitudeZDY 发现楼主是前公司兼兄弟部门的,有事情想详聊,我邮箱 [email protected]
    netox
    netox
    OP
    Feb 6, 2023
    24
    @Reserdog 欢迎交流,我邮箱是(base64 decode please):Zm9ydGl0dWRlLnpoYW5nQGdtYWlsLmNvbQ==
    luckjoe680
    luckjoe680
    Feb 7, 2023 via Android
    25
    @lgjx123 是不是没有禁用过期啊
    hanguofu
    hanguofu
    Feb 8, 2023 via Android
    26
    文档写得很详细:)
    blackmolycat
    blackmolycat
    Feb 8, 2023
    27
    @luckjoe680 嗯,发现不是哈。是因为多 vpn 配置的话,需要手动到 vpn 里面选择配置,tailscale 不会自己切换配置。
    例如我用着小火箭,用完关了切换到 tailscale ,需要自己到 vpn 配置那里切换到 tailscale ,不然进客户端就会出现获取不到配置的情况...安卓下没有这个问题。
    qiabaobao
    qiabaobao
    Feb 9, 2023
    28
    大佬,我想问下,我用官方源码编译出来的 tailscale ,为什么没法用,但是 mac 可以,具体差异就是 windows 虚拟网卡的时候分配的 ipv4 设置失败,但是 mac 成功了
    netox
    netox
    OP
    Feb 10, 2023 via Android
    29
    @qiabaobao 是直接用 go 代码编译出来的吗?是的话你可能要把 wintun.dll 这个库放到同目录下试试
    qiabaobao
    qiabaobao
    Feb 15, 2023
    30
    @fortitudeZDY 不行,我想问下大佬你是怎么支持 windows 的,加个 wx 交流一下 Y29zbW9zbl9u(Base64)
    kumiko
    kumiko
    Mar 17, 2023 via Android
    31
    用着用着突然出现
    程序异常,错误 TypeError: Cannot convert undefined or null to object 请联系官方支持。

    怎么办,卸载重启试过了没用。。。
    netox
    netox
    OP
    Mar 17, 2023 via Android
    32
    控制台里能反馈下 network id 吗?可以私发我
    abbottcn
    abbottcn
    Mar 21, 2023
    33
    试了好多次,
    Mac mini (M1, 2020),
    一直提示,
    “xedge-tui.app” is damaged and can’t be opened. You should move it to the Trash.

    下载了多次, 依旧是这个问题.

    另一个是 Intel 处理器,
    运行之后, 提示信息如下:
    程序异常,错误 TypeError: Object.entries requires that input parameter not be null or undefined 请联系官方支持。
    netox
    netox
    OP
    Mar 21, 2023
    34
    @abbottcn 抱歉,今天我这里也试了一下,看起来好像我本地编译出的 dmg 可以安装,但是上传到 oss 上重新下载后,因为来源的问题好像就安装不生效了。查了下 tauri 的资料,可能是需要 code signing :( 这个我最近在抽时间研究 ios 的 app 开发,到时会一并处理一下。

    intel 的您可以确认下是否是以 sudo 方式启动的,如果没有 sudo 执行,是无法正确工作的。
    abbottcn
    abbottcn
    Mar 22, 2023
    35
    @fortitudeZDY "Intel 的您可以确认下是否是以 sudo 方式启动的,如果没有 sudo 执行,是无法正确工作的。"

    的确是采用 sudo 方式运行的.

    GUI 中, 链接状态显示“程序异常,错误 TypeError: Object.entries requires that input parameter not be null or undefined 请联系官方支持。“

    本机安全内网 IP 显示为 100.64.0.66

    至少在元旦之前就是这个样子.

    当然, 03-22 下载的安装包, Intel 版本, 也是同样错误信息呀.
    netox
    netox
    OP
    Mar 22, 2023 via Android
    36
    刚才才群里确认了下,如果网络中有单节点的话,app 前端会有问题。另外那个貌似现在 apple 要求 app 需要公证了,这个我申请完开发者后,到时签名下
    netox
    netox
    OP
    Mar 23, 2023
    37
    @abbottcn

    这个应该是 m1 mac 的安全策略控制的,因为目前 app 不是通过 app store 分发的,可以用如下命令来关闭校验:

    sudo xattr -r -d com.apple.quarantine /Applications/xedge-tui.app

    信息来自这个 mac 下同样基于 tauri 的 ChatGPT app:)

    https://github.com/lencx/ChatGPT/issues/663
    abbottcn
    abbottcn
    Mar 27, 2023
    38
    @fortitudeZDY 苹果芯片的机器, 如此处理之后, 可以使用. 网络正常. 不够那个客户端, 显示的确有点问题. :)
    netox
    netox
    OP
    Mar 27, 2023 via Android
    39
    @abbottcn 嗯,近期会发布一个新的版本,解决掉这个问题,谢谢反馈啊
    netox
    netox
    OP
    Mar 30, 2023
    40
    感谢坛友们的热心试用,这几个月一直在关注用户的反馈,对于我这样一个业余时间投入的小产品,能有坛友们愿意花时间试用,还是很感谢大家的。

    近期图形版本做了一个大版本升级,控制中心也做了一定的优化。主要包括如下改进:
    1 、支持发布路由;
    2 、支持登出账号重新认证;
    3 、Windows/MacOS 增加 tray icon 以支持隐藏窗口;
    4 、升级 tailscale 内核至 1.38.2 ;
    5 、bugfix ;
    6 、增加在线反馈问题能力。 

    希望大家继续支持,有问题也可以继续反馈。
    netox
    netox
    OP
    Apr 12, 2023
    41
    感谢近期用户群里的用户反馈:

    最近将桌面 App 版本进行了一次升级,解决了 Windows/MacOS 无法作为中转节点的 bug 。

    另外将 Android 设备也拉起到与桌面版本相同的 tailscale 内核。

    欢迎关注这个应用的朋友继续试用反馈哈:)
    faceair
    faceair
    Apr 21, 2023
    42
    在 macOS 端也是可以用命令行来登录的,在点击 UI 的 get started 之后,不点 join network ,然后去命令行执行

    /Applications/Tailscale.app/Contents/MacOS/Tailscale up --login-server https://login.xedge.cc

    就可以连上了,目前官方的客户端体验比 xedge-tui.app 好不少
    netox
    netox
    OP
    Apr 21, 2023
    43
    @faceair 感谢分享啊,官方会一直兼容下去的,桌面 app 肯定还有不少不足的地方,我这里也在逐渐优化:)
    netox
    netox
    OP
    Jun 8, 2023
    44
    更新一下前面承诺过的进展,xEdge iOS 版本已经适配完成(因复用 tailscale android 代码,整体操作模式类似,且同样增加了微信认证能力),目前已经投放到 test flight 渠道,如有需求,欢迎发送您的联系邮箱到我们的邮箱( base64 ) aW9zQGdhbGF4bmV0LmNj 我来添加到 test flight 测试组,即可使用该 app 。
    Danswerme
    Danswerme
    Jun 10, 2023
    45
    你好楼主,请教一下 Tailscale 客户端在使用出口节点模式之后,所有的流量经过出口节点进行转发时被 NAT 了一次,有办法让出口节点只进行流量转发而不 NAT 吗?
    netox
    netox
    OP
    Jun 11, 2023 via Android
    46
    @Danswerme 如果不 nat ,目的机器上怎么回源呢?如果你可以通过给目的机器配置路由解决这个,那么你应该可以通过直接配置路由到 ts 接口,他可能没有做检查
    Danswerme
    Danswerme
    Jun 11, 2023
    47
    @fortitudeZDY 好的,之前用的 ZeroTier ,我是在出口节点所在局域网的路由器上做了静态路由;我研究下怎么禁用出口节点 ts 接口的 NAT 吧。
    Danswerme
    Danswerme
    Jun 11, 2023
    48
    @Danswerme 解决了,看源码里是对 mark 之后的包进行了 MASQUERADE ,在出口节点上将 iptables ts-forward 链上的两条 mark 0x40000/0xff0000 规则删除即可。
    netox
    netox
    OP
    Jun 12, 2023
    49
    @Danswerme 嗯,非用户态模式下( linux 下默认),就是用的 iptables 做了 maquerade ,你到目标机器上是回指路由到出口节点吗?
    netox
    netox
    OP
    Jun 12, 2023
    50
    @fortitudeZDY 稍微更新下,apple 通过了 public beta test flight ,这样可以直接访问 https://testflight.apple.com/join/wXThdIaM 这个链接进行试用。
    Danswerme
    Danswerme
    Jun 12, 2023❤️1
    51
    @fortitudeZDY 是的,出口节点的 Linux 机器上默认路由指向了局域网内的一台路由器,然后我在路由器上加了一条 Tailscale 网段的静态路由,网关指向出口节点的局域网 IP 。
    Danswerme
    Danswerme
    Jun 12, 2023
    52
    再次更新一下吧,希望能帮到需要的人,是我没有仔细看文档。tailscale 提供了禁用 NAT 的 cli 选项,执行 tailscale up 时加上 --snat-subnet-routes=false 即可。
    netox
    netox
    OP
    Jun 28, 2023
    53
    继续更新一下,目前 xEdge iOS 免费应用已经成功上架 App Store ,受 VPN 应用国内上架限制,目前在美、新、港、台四区上架,欢迎大家试用,如之前有朋友用的 test flight 版本,也可更新到此版本,避免受 90d 试用限制。
    Apol1oBelvedere
    Apol1oBelvedere
    Jul 11, 2023
    54
    @fortitudeZDY #53 公司内网有各种审计和检测系统,会不会通过这种组网方式把我家庭网络监控到(如各种设备信息,拓扑等)? Todesk 不会出现这种情况是因为流量全部走了服务器。
    netox
    netox
    OP
    Jul 13, 2023 via Android
    55
    @Apol1oBelvedere 我觉得如果公司在你电脑上有装软件,理论上有可能扫到,普通是外部机器,理论上不太会
    PowerDi
    PowerDi
    Aug 19, 2023
    56
    @shinko #1 但我感觉问题在于,国内中转网速不能实用
    netox
    netox
    OP
    Oct 17, 2023
    57
    国庆期间解决了 iOS app 目前的已经知问题,上一个版本糊的有点渣,今天通过 apple 大爷的审核(为此强制在 App 首次安装前增加了信息收集确认按钮),欢迎有需要的朋友取用。

    因 iOS 与 android 共享 gioui 框架,对 android 版本也同样进行了升级。
    wm5d8b
    wm5d8b
    Dec 26, 2023 via Android
    58
    有 arm64 docker 版吗,容器化部署更容易些
    netox
    netox
    OP
    Dec 26, 2023❤️1
    59
    @wm5d8b 基于 tailscale 撸了一个出来,托管在阿里云上,仅替换了镜像中的登陆服务器地址,其他命令行同开源版本。

    registry.cn-hangzhou.aliyuncs.com/xedge/xedge

    另外 xEdge 最新已经支持认证 key ,也可以用来认证 docker ,欢迎试用。
    fdghjk
    fdghjk
    Jan 1, 2024
    60
    楼主你好,请问这个和官方的客户端冲突吗?安装了你这个 官方的那个是不是必须要卸载呢
    fdghjk
    fdghjk
    Jan 1, 2024
    61
    @fdghjk 我想同时用你的和官方的 行不行
    fdghjk
    fdghjk
    Jan 1, 2024
    62
    怎么判断现在走的是打洞还是中转啊 我害怕浏览不够用的
    netox
    netox
    OP
    Jan 3, 2024 via Android
    63
    @fdghjk 可能会有地址冲突,可以停用官方的后台服务就可以啦
    netox
    netox
    OP
    Jan 3, 2024 via Android
    64
    @fdghjk 我们的客户端都加了状态显示,可以从那里看出来的哈
    netox
    netox
    OP
    Mar 21, 2024
    65
    这里稍微做一下我们这个小服务的更新,感谢 V2EX 一直对我们产品进行试用的用户,部分用户已经付费支持,再次感谢!

    1 、因为顺利拿到国内 VPN 组网牌照,因此 iOS 客户端已经上架国内 App Store ,UI 方面因为与 android 一样采用了 gioui 框架,可能还是有一些 ugly 和不稳定,但由于 iOS VPN 是独立进程,并不影响组网使用;等俺学习 SwiftUI 到一定水平后准备再优化一版。
    2 、最近基于 tailscale 的 funnel 的技术原理,实现了内网穿透功能,此功能兼容原有开源 tailscale 客户端,目前已经上架专业套餐和免费的体验套餐,欢迎有需求的朋友来试用。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1415 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 22:46 · PVG 06:46 · LAX 14:46 · JFK 17:46
    ♥ Do have faith in what you're doing.