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

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

  •  3
     
  •   fortitudeZDY · Dec 5, 2022 · 13150 views
    This topic created in 1253 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
        1
    shinko  
       Dec 5, 2022 via iPhone
    个人的话,现有的 Tailscale + Headscale 已经很完善了,我用这个方案几个月,非常稳定。6 个地方的宽带都没出过问题
    matzoh
        2
    matzoh  
       Dec 5, 2022
    我个人还是比较在意 ios 设备的支持度(缺一不可)

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

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

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

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

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

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

    怎么办,卸载重启试过了没用。。。
    fortitudeZDY
        32
    fortitudeZDY  
    OP
       Mar 17, 2023 via Android
    控制台里能反馈下 network id 吗?可以私发我
    abbottcn
        33
    abbottcn  
       Mar 21, 2023
    试了好多次,
    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 请联系官方支持。
    fortitudeZDY
        34
    fortitudeZDY  
    OP
       Mar 21, 2023
    @abbottcn 抱歉,今天我这里也试了一下,看起来好像我本地编译出的 dmg 可以安装,但是上传到 oss 上重新下载后,因为来源的问题好像就安装不生效了。查了下 tauri 的资料,可能是需要 code signing :( 这个我最近在抽时间研究 ios 的 app 开发,到时会一并处理一下。

    intel 的您可以确认下是否是以 sudo 方式启动的,如果没有 sudo 执行,是无法正确工作的。
    abbottcn
        35
    abbottcn  
       Mar 22, 2023
    @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 版本, 也是同样错误信息呀.
    fortitudeZDY
        36
    fortitudeZDY  
    OP
       Mar 22, 2023 via Android
    刚才才群里确认了下,如果网络中有单节点的话,app 前端会有问题。另外那个貌似现在 apple 要求 app 需要公证了,这个我申请完开发者后,到时签名下
    fortitudeZDY
        37
    fortitudeZDY  
    OP
       Mar 23, 2023
    @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
        38
    abbottcn  
       Mar 27, 2023
    @fortitudeZDY 苹果芯片的机器, 如此处理之后, 可以使用. 网络正常. 不够那个客户端, 显示的确有点问题. :)
    fortitudeZDY
        39
    fortitudeZDY  
    OP
       Mar 27, 2023 via Android
    @abbottcn 嗯,近期会发布一个新的版本,解决掉这个问题,谢谢反馈啊
    fortitudeZDY
        40
    fortitudeZDY  
    OP
       Mar 30, 2023
    感谢坛友们的热心试用,这几个月一直在关注用户的反馈,对于我这样一个业余时间投入的小产品,能有坛友们愿意花时间试用,还是很感谢大家的。

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

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

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

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

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

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

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

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

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

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

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