V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
fortitudeZDY
V2EX  ›  分享创造

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

  •  1
     
  •   fortitudeZDY · 116 天前 · 3859 次点击
    这是一个创建于 116 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    因为工作强度降低以及需要调理身体的缘故,在工作之余,撸了个 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

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

    40 条回复    2023-03-30 09:46:04 +08:00
    shinko
        1
    shinko  
       116 天前 via iPhone
    个人的话,现有的 Tailscale + Headscale 已经很完善了,我用这个方案几个月,非常稳定。6 个地方的宽带都没出过问题
    matzoh
        2
    matzoh  
       116 天前
    我个人还是比较在意 ios 设备的支持度(缺一不可)

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

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

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

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

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

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

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

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

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

    希望大家继续支持,有问题也可以继续反馈。
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1145 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 265ms · UTC 18:48 · PVG 02:48 · LAX 11:48 · JFK 14:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.