d299a1f295d6a

使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

释放双眼,带上耳机,听听看~!

RustDesk 介绍及架构

RustDesk远程桌面软件,开箱即用,无需任何配置。您完全掌控数据,不用担心安全问题。您可以使用我们的注册/中继服务器, 或者自己设置, 亦或者开发您的版本。

  • rustdesk-hbbs是RustDesk的注册/信令服务器,负责客户端的注册、身份验证和会话信息交换。
  • rustdesk-hbbr是中继服务器,当客户端之间无法建立直接连接(P2P)时,它会作为数据中继,在两个客户端之间传输数据。

其它远程软件对比

对比维度 RustDesk ToDesk 向日葵
核心定位 开源私有化部署,数据自主可控 兼顾个人与企业,主打低延迟流畅体验 大众向全场景,适配硬件辅助功能
连接性能 依赖自建服务器,P2P 连接快,速度可控 国内节点多,低延迟,游戏、设计等场景流畅 国内服务器稳定,免费版延迟中等,偶有连接不稳定情况
功能特点 基础远程控制、文件传输,无远程打印等高级功能;多屏需手动切换,远程唤醒需自行配置 支持 4K 高流畅显示、设备分组、批量管理,免费版不限速,功能贴合办公与轻娱乐 支持 4K 自动适配,提供开机棒等硬件,有远程打印、摄像头访问等功能,免费版功能限制多
安全性 开源透明,端到端加密,可自定义密钥;无强制账号登录,数据不经过第三方服务器 采用 AES - 256 加密,需账号绑定,数据经官方服务器,无公开严重漏洞 免费版广告多,需登录账号,数据经第三方服务器,曾有隐私争议和 RCE 漏洞(已修复)
使用门槛 较高,自建服务器需运维技术,适合有技术基础的用户 低,开箱即用,免费版足够日常使用,企业版操作也较简单 低,界面友好,用户基数大,普通用户易上手
费用情况 免费版无功能限制,商业版仅针对企业级管理收费,自建服务器需承担服务器成本(后面文章会介绍如何使用RustDesk API来解决商业版功能) 免费版不限速,专业版年费 118 元,企业版价格较高 免费版限速 300kbps、单文件传输受限,个人 Pro 版年费 198 元,企业版年费 3000 元起
适用场景 政府、金融等敏感数据场景,技术团队、需要私有化部署的企业 个人日常远程、企业批量设备管理,国内办公协作 个人临时远程、小型企业基础远程需求,依赖硬件辅助控制的场景

rustdesk-hbbs(注册/信令服务器)

  • 功能: 主要负责处理客户端连接的注册和身份验证。
  • 工作原理: 客户端启动后,会向 hbbs 注册身份。当一个客户端需要连接另一个客户端时,它们会通过 hbbs 来交换建立直接连接所需的信息,例如 IP 地址和端口。
  • 比喻: 就像一个电话簿,帮助两个想要通话的人(客户端)找到对方。

rustdesk-hbbr(中继服务器)

  • 功能: 在两个客户端之间中继数据。
  • 工作原理: 当 hbbs 发现两个客户端无法直接建立点对点(P2P)连接时,它会指示两个客户端通过中继服务器进行通信。这时,数据会先发送到 hbbr,然后再转发给另一个客户端。
  • 何时使用: 适用于 NAT 穿透失败的情况,例如客户端位于两个不同的防火墙后面。
    比喻: 就像一个电话转接台,当两个人无法直接通话时,电话会先转接到转接台,由转接台将信息转达给对方。

Kubernetes 安装RustDesk

  • Kubernetes版本v1.29.9
  • RustDesk 版本1.4.3
  • 存储卷使用StorageClass
  • 还需要有公网IP、或者FRP服务器

所有的项目我均放在了tools命名空间下

创建PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rustdesk-data
  namespace: tools
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: dsm7-nfs-client
  resources:
    requests:
      storage: 30Gi

创建hbbs和hbbr Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rustdesk-hbbs
  namespace: tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hbbs
  template:
    metadata:
      labels:
        app: hbbs
    spec:
      restartPolicy: Always
      containers:
      - name: hbbs
        image: rustdesk/rustdesk-server:latest
        command: ["hbbs"]
        volumeMounts:
        - name: rustdesk-data  # 卷名称,需与下方volumes.name一致
          mountPath: /root
        ports:
        - containerPort: 21115
        - containerPort: 21116
        - containerPort: 21116
          protocol: UDP
        - containerPort: 21118
      # 新增volumes定义,关联PVC
      volumes:
      - name: rustdesk-data  # 卷名称,与volumeMounts.name一致
        persistentVolumeClaim:
          claimName: rustdesk-data  # 关联的PVC名称
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rustdesk-hbbr
  namespace: tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hbbr
  template:
    metadata:
      labels:
        app: hbbr
    spec:
      restartPolicy: Always
      containers:
      - name: hbbr
        image: rustdesk/rustdesk-server:latest
        command: ["hbbr"]
        volumeMounts:
        - name: rustdesk-data  # 卷名称,需与下方volumes.name一致
          mountPath: /root
        ports:
        - containerPort: 21117
        - containerPort: 21119
      # 新增volumes定义,关联PVC
      volumes:
      - name: rustdesk-data  # 卷名称,与volumeMounts.name一致
        persistentVolumeClaim:
          claimName: rustdesk-data  # 关联的PVC名称

创建SVC

这里SVC我使用NodePort模式

apiVersion: v1
kind: Service
metadata:
  name: rustdesk-hbbs-service
  namespace: tools
spec:
  selector:
    app: hbbs
  ports:
  - name: port-21115
    port: 21115
    targetPort: 21115
  - name: port-21116-tcp
    port: 21116
    targetPort: 21116
    protocol: TCP
  - name: port-21116-udp
    port: 21116
    targetPort: 21116
    protocol: UDP
  - name: port-21118
    port: 21118
    targetPort: 21118
  type: NodePort
---
apiVersion: v1
kind: Service
metadata:
  name: rustdesk-hbbr-service
  namespace: tools
spec:
  selector:
    app: hbbr
  ports:
  - name: port-21117
    port: 21117
    targetPort: 21117
  - name: port-21119
    port: 21119
    targetPort: 21119
  type: NodePort

接下来可以检查下我们创建的应用信息

root@k8s-master-01:~/rustdesk# kubectl get svc,pod -n tools|grep rust
service/rustdesk-hbbr-service                                        NodePort    10.96.2.252   <none>        21117:30409/TCP,21119:30602/TCP                                   29h
service/rustdesk-hbbs-service                                        NodePort    10.96.0.66    <none>        21115:30449/TCP,21116:32421/TCP,21116:32421/UDP,21118:30911/TCP   29h
pod/rustdesk-hbbr-758547cbc7-cjbrc           1/1     Running   0                29h
pod/rustdesk-hbbs-659cb54c47-r862s           1/1     Running   0                29h

端口参数说明

组件 端口 协议 作用
hbbs 21115 TCP 用于客户端与服务器之间的心跳检测和身份验证。客户端通过此端口注册到服务器,并保持连接状态。
hbbs 21116 TCP/UDP 用于TCP 打洞和连接建立。当 P2P 连接失败时,客户端会通过此端口与服务器进行中转通信。
hbbs 21116 TCP/UDP 用于UDP 打洞。客户端尝试通过 UDP 直接连接到另一台客户端,服务器在此过程中提供地址信息。
hbbs 21118 TCP 用于HTTP API。可以通过此端口获取服务器状态、在线设备列表等信息(可选,默认关闭)。
hbbr 21117 TCP 用于数据中继。当 P2P 连接失败时,客户端会通过此端口将数据转发到中继服务器,再由服务器转发到目标客户端。
hbbr 21119 TCP 用于中继服务器的管理接口(可选,默认关闭)。

此时实际上已经将上述端口映射到NodePort中,除了以上端口还需要到hbbs找到Key进行保存

root@k8s-master-01:~/rustdesk# kubectl logs -f -n tools rustdesk-hbbs-659cb54c47-r862s
#找到日志Key部分进行保存

使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

客户端连接RustDesk测试

Windows客户端演示
下载地址https://github.com/rustdesk/rustdesk/releases/tag/1.4.3

正常安装后打开软件,需要进行配置,打开软件,点击右边设置
使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

选择网络,配置ID/中继服务器
使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

  • ID服务器 hbbs地址内网端口21116,主机端口32421
  • 中继服务器 hbbr地址内网端口21117,主机端口30409
  • Key前面已经提示需要保留,填写进即可

接下来只需要将32421和30409 映射到公网即可,其它端口按需映射

如果没有公网IP,这里就需要配置FRP,将对应端口使用FRP映射到公网,此处不多介绍,有问题可以私聊我

使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

按照下图配置即可

  • Key 是前面保存的密钥

使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

还需要设置访问密码

使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

连接验证测试

只需要输入ID即可

使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

连接时可以强制走中继线路
使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

现在即连接成功
使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接

后续只需要保存ID即可

我这里提供软件包下载,可使用下放地址直接下载
https://esxi-dsm.frps.cn/s/8f98c0efe5d149fa81

给TA打赏
共{{data.count}}人
人已打赏
AuthentikDell R730安全与认证群晖

Authentik 集成群晖Synology DSM 实现单点登录

2025-10-17 16:20:27

Dell R730KubernetesRustDesk

Kubernetes 部署RustDesk API实现专业版功能及管理Web UI

2025-11-13 16:21:32

0 条回复 A文章作者 M管理员
data
commentData
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索