Tailscale 自建 Derp 中转服务器(全程无 Docker + 无域名纯 IP 版本)

文章目录

  • 整体大纲
  • 目的:为什么要建立 Derp 中转服务器
  • 云服务器安装 Derp
    • Derp 中转服务器介绍
    • 安装 Go 环境
    • 通过 Go 安装 Derp
    • 处理证书文件
    • 自签一个域名给 Derp
    • 验证 Derp 是否启动
  • 云服务器安装并登录 Tailscale
  • 第一种组合: `官方 Tailscale 账号` + 自己的 `Derp` 中转
  • 第二种组合:自建 Headscale + 自建 Derp (无域名版本)
  • 其他的一些配置
    • 自建 Derp 提供 IPv6 的支持(隧道版本,不推荐,延迟高)
    • 防止 Derp 被白嫖(添加客户端验证)
  • 参考
  • 以上的操作命令合集


整体大纲

在这里插入图片描述


目的:为什么要建立 Derp 中转服务器

  • 官方给你的公用服务器一般情况下不在大陆,所以延迟高
  • 并且因为是公用的,可能会 拥挤,导致 不稳定

在大陆的情况下,为了降低延迟提高带宽,所以要自建 Derp


云服务器安装 Derp

以下是个人的操作,仅供参考~

Derp 中转服务器介绍

Tailscale 使用的算法很有趣: 所有客户端之间的连接都是先选择 DERP 模式(中继模式),这意味着连接立即就能建立(优先级最低但 100% 能成功的模式),用户不用任何等待。然后开始并行地进行路径发现,通常几秒钟之后,我们就能发现一条更优路径,然后将现有连接透明升级(upgrade)过去,变成点对点连接(直连)

因此, DERP 既是 TailscaleNAT 穿透失败时的保底通信方式(此时的角色与 TURN 类似),也是在其他一些场景下帮助我们完成 NAT 穿透的旁路信道。换句话说,它既是我们的保底方式,也是有更好的穿透链路时,帮助我们进行连接升级(upgrade to a peer-to-peer connection)的基础设施。

Tailscale 官方内置了很多 DERP 服务器,分步在全球各地,惟独不包含中国大陆,原因你懂得。这就导致了一旦流量通过 DERP 服务器进行中继,延时就会非常高。而且官方提供的 DERP 服务器是万人骑,存在安全隐患


安装 Go 环境

根据官方安装手册,需要先安装 go

在这里插入图片描述
先更新软件包列表,然后升级已安装的软件包

apt update && apt upgrade

等了大半年终于安完了,然后安装所需的软件,包括 wget、 git、 openssl、 curl

apt install -y wget git openssl curl

在这里插入图片描述

然后安装 go 语言(这里有一个坑,我没有安装最新版本的 go, 导致安装 Derp 的时候报错了,解决的办法就是 安装最新的 go,没关系可以继续往下看我是怎么处理的,你也可以在这里安装最新版的 go

wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz

我这里的云服务器 linux 连不上这个网,所以在本地直接下载了,然后传到服务器上面

然后参考 go 官方的安装手册

在这里插入图片描述

运行这行代码

rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz 

这里的 go1.20.5.linux-amd64.tar.gz 需要写成你下载的 go 版本

在这里插入图片描述
然后临时添加到环境变量

export PATH=$PATH:/usr/local/go/bin

之后验证一下是否安装成功

go version

在这里插入图片描述
如果想要永久添加到环境变量中,可以这样做

echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profile

解释一下上面的操作:

  • 虽然 export 命令和 source 命令都涉及修改 PATH,但它们的作用范围和持久性不同。
  • export 只对当前 shell 会话有效。
  • echo 命令将 export 命令写入配置文件,使其永久生效。
  • source 命令则使配置文件中的更改立即生效。

通过 Go 安装 Derp

安装 Derp 的时候报错了

在这里插入图片描述
可以看到报错信息,让你匹配 go 1.23,我刚才安装的是1.20.5,没关系,在安装 go 的最新版本,去官网重新下载一个最新版(我当前的是 2024-11-19 号,最新版为 1.23.3

在这里插入图片描述
然后安装,注意版本号,要是你当前最新的

rm -rf /usr/local/go && tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz 

在这里插入图片描述

然后 go version 看一下版本,可以看到安装完之后是直接生效的,不用添加什么环境变量了,因为之前已经永久加过了

在这里插入图片描述

之后接着用 go 运行下载 Derp 的命令

go install tailscale.com/cmd/derper@latest

在这里插入图片描述

处理证书文件

安装好之后,我们要解决一下域名的校验问题

看一下这个路径下的证书文件

在这里插入图片描述

把框框中的三行代码注释掉

可以简单看一下,这是验证域名的用途,因为我们是没有域名,纯ip,所以这个地方注释掉,不要去校验

在这里插入图片描述

然后重新用 go 编译一下,并输出到指定目录

在这里插入图片描述

自签一个域名给 Derp

接着我们用命令自签一个 Https 的域名 derp.myself.com

在这里插入图片描述

cat > /etc/systemd/system/derp.service <<EOF
[Unit]
Description=TS Derp
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
ExecStart=/etc/derp/Derp -hostname derp.myself.com -a :33445 -http-port 33446 -certmode manual -certdir /etc/derp
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOF

把云服务的 tcp 33445 (HTTPS 需要)和 udp3478 (STUN需要)的端口打开

然后输入如下命令,打开自启,以及立即启动 Derp 服务

systemctl enable derp:启用 derp 服务,使其在系统启动时自动启动。
systemctl start derp:立即启动 derp 服务

在这里插入图片描述

如果你是用 宝塔的话,不仅是云服务器那边需要开启相对应的端口,宝塔的安全也要开启相应端口!


验证 Derp 是否启动

在浏览器中输入https://your ip:33445/ 即可

在这里插入图片描述


云服务器安装并登录 Tailscale

在服务器安装 Tailscale

sudo apt install tailscale

如果下载太慢,参考这个解决apt install 下载速度太慢,配置一个国内的源

在这里插入图片描述

检查网络

tailscale netcheck

在这里插入图片描述

可以看到我们用的 Derp 列表都是国外的,延迟比较高,下文会逐步讲解到添加自建的 Derp

然后可以用 tailscale status 查看状态,这里我的 linux 还没有登录 Tailscale

在这里插入图片描述

这里有两种组合

  • 一个是官方账号 + 自己的 Derp:简单,但是不够自由,比方说我要让别人添加到我的局域网中,我就没研究明白这个…
  • 另一个是 自己建的 Headscale + 自己的 Derp:复杂一些,但是可控性更高,可以让其他人加入到我的局域网

第一种组合: 官方 Tailscale 账号 + 自己的 Derp 中转

登录官网 tailscale ,并用你的账号登录,之后在你组的网络中,添加一个 linux 设备

在这里插入图片描述
生成 install 的 script 然后返回 linux 中运行

然后再 Access controls 中指定你的 Derp,把其他的节点都屏蔽掉

在这里插入图片描述
这样就可以了

第二种组合:自建 Headscale + 自建 Derp (无域名版本)

自建 Headscale 教程我在另一篇文章有讲过,具体可以在这里查看 ,我这里接着讲

如果是自己没有域名,那么可以用自签的 IP,这种情况下,配置 Headscaleconfig.yaml

注意:

  • 只能用 json,只能用 json,只能用 json!!!
  • 只能用 json,只能用 json,只能用 json!!!
  • 只能用 json,只能用 json,只能用 json!!!

配置 path 指定为 derp.yaml 是不好使的!!!

TM的 试了好久的 yaml,都他妈不好使
应该是个bug 吧?大概

在这里插入图片描述

无论是那种办法,我们的目的是:让 headscale 拿到我自建的 Derp 服务器的信息

那么,我的思路就是:用 Nginx 建立一个反向代理,然后指定到 derp.json,用 Nginx 代理一下

在这里插入图片描述
这里是 derp.json 的内容

在这里插入图片描述

其他的一些配置

自建 Derp 提供 IPv6 的支持(隧道版本,不推荐,延迟高)

这个是效果,虽然能够使用 IPv6,但是是通过隧道的模式,选择香港的节点,还是延迟很高,所以我放弃了,这里简单的说明一下

如果你的服务器自带 IPv6,就直接配置你的地址即可
在这里插入图片描述

代码如下

network:version: 2tunnels:he-ipv6:mode: sitremote: 216.218.221.6local: 内网ipaddresses:- "2001:470:18:e6d::2/64"routes:- to: defaultvia: "2001:470:18:e6d::1"

可以看到已经可以直联了

还是根据视频的步骤来,但是我这里选择的 linux

在这里插入图片描述

然后大概长成这个样子:

在这里插入图片描述

然后保存, reboot 一下服务器


防止 Derp 被白嫖(添加客户端验证)

具体的原理参考一下这个大佬的博客

进入服务器 /etc/systemd/system 路径下的

在这里插入图片描述

–verify-clients: 这个选项要求客户端进行验证,但具体的验证机制没有详细说明。如果只是简单的验证,可能不足以防止未授权访问

保存文件之后,重启一下 Derp

在这里插入图片描述


参考

  1. 官方自建 Derp
  2. 解决apt install 下载速度太慢
  3. Tailscale玩法之内网穿透、异地组网、全隧道模式、纯IP的双栈DERP搭建、Headscale协调服务器搭建,用一期搞定,看一看不亏吧?
  4. 纯 IP 配置 Derp 提供帮助的帖子:headscale组网自建derp中继节点,国内也可以
  5. Tailscale 基础教程:部署私有 DERP 中继服务器

以上的操作命令合集

————局域网1设置部分tailscale up --netfilter-mode=off  --advertise-routes=局域网网段 --accept-routes————群晖设置部分sudo -iecho -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
chmod a+x /usr/local/etc/rc.d/tun.sh
/usr/local/etc/rc.d/tun.sh
ls /dev/net/tun参考ZeroTier群晖的安装
资料:https://docs.zerotier.com/devices/synologydocker run -d \--name=ts	\--restart=always	\-v /var/lib:/var/lib \-v /dev/net/tun:/dev/net/tun \--network=host	\--cap-add=NET_ADMIN	\--cap-add=NET_RAW	\--env TS_STATE_DIR=/etc/ts \--env TS_SOCKET=/var/run/tailscale/tailscaled.sock \--env TS_USERSPACE=false \--env TS_ROUTES=局域网网段  \--env TS_EXTRA_ARGS="--accept-routes --advertise-exit-node --reset" \--env TS_AUTHKEY=API密钥   \
tailscale/tailscaleiptables -I FORWARD -i eth0 -j ACCEPT
iptables -I FORWARD -o eth0 -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -I FORWARD -i tailscale0 -j ACCEPT
iptables -I FORWARD -o tailscale0 -j ACCEPT
iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADEsleep 1m————云服务器derp中转服务器搭建部分apt update && apt upgradeapt install -y wget git openssl curlwget https://go.dev/dl/go1.20.5.linux-amd64.tar.gzrm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gzexport PATH=$PATH:/usr/local/go/bin
go versionecho "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profilego env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,directgo install tailscale.com/cmd/Derp@maingo build -o /etc/derp/Derpls /etc/derpopenssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /etc/derp/derp.myself.com.key -out /etc/derp/derp.myself.com.crt -subj "/CN=derp.myself.com" -addext "subjectAltName=DNS:derp.myself.com"cat > /etc/systemd/system/derp.service <<EOF
[Unit]
Description=TS Derp
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
ExecStart=/etc/derp/Derp -hostname derp.myself.com -a :33445 -http-port 33446 -certmode manual -certdir /etc/derp
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOFsystemctl enable derp
systemctl start derp"derpMap": {"OmitDefaultRegions": true,"Regions": {"901": {"RegionID":   901,"RegionCode": "Myself","RegionName": "Myself Derp","Nodes": [{"Name":             "901a","RegionID":         901,"DERPPort":         33445,"IPv4":   "服务器IP","InsecureForTests": true,},],},},},"1":  null,"2":  null,"3":  null,"4":  null,"5":  null,"6":  null,"7":  null,"8":  null,"9":  null,"10": null,"11": null,"12": null,"13": null,"14": null,"15": null,"16": null,"17": null,"18": null,"19": null,"20": null,"21": null,"22": null,"23": null,"24": null,	"25": null,tailscale netchecktailscale statustailscale ping ping6 240C::6666tailscale down tailscale upcurl -fsSL https://tailscale.com/install.sh | shnano /etc/systemd/system/derp.service--verify-clientssystemctl daemon-reloadsystemctl restart derp————headscale搭建部分wget --output-document=headscale.deb \https://github.com/juanfont/headscale/releases/download/v0.22.3/headscale_0.22.3_linux_amd64.debsudo dpkg --install headscale.debsudo systemctl enable headscalenano /etc/headscale/config.yamlapt install -y nginxmap $http_upgrade $connection_upgrade {default      keep-alive;'websocket'  upgrade;''           close;
}
server {listen 3355;listen [::]:3355;server_name 云服务器IP;location / {proxy_pass http://127.0.0.1:8080;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;proxy_set_header Host $server_name;proxy_buffering off;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;}location /web {index  index.html;alias  /var/www/web;}
}wget https://github.com/gurucomputing/headscale-ui/releases/download/2023.01.30-beta-1/headscale-ui.zipunzip -d /var/www headscale-ui.zipsystemctl start headscalesystemctl restart nginxheadscale apikeys create --expiration 9999dtailscale logout
tailscale up --login-server=http://云服务器IP:3355touch /var/www/derp.json{"Regions": {"901": {"RegionID":   901,"RegionCode": "Myself","RegionName": "Myself Derp","Nodes": [{"Name":             "901a","RegionID":         901,"DERPPort":         33445,"IPv4":   "IP地址","IPv6":    "IP地址","InsecureForTests": true}]}}
}server {listen 80;listen [::]:80;server_name 127.0.0.1;root /var/www;index index.html index.htm index.nginx-debian.html;location /d {alias   /var/www;autoindex on;}location / {try_files $uri $uri/ =404;}
}- http://127.0.0.1/d/derp.jsonsystemctl restart nginx
systemctl restart headscaletailscale logout
tailscale up --login-server=http://你的云服务器ip:端口————改善github下载速度慢的解决方案下面代码可以放到/etc/hosts文件的末尾,然后重启云服务器就可以20.205.243.166 github.com
159.24.3.173 gist.github.com
185.199.110.153 assets-cdn.github.com
185.199.110.153 raw.githubusercontent.com
185.199.110.153 gist.githubusercontent.com
185.199.110.153 cloud.githubusercontent.com
185.199.110.153 camo.githubusercontent.com
185.199.110.153 avatars0.githubusercontent.com
185.199.110.153 avatars1.githubusercontent.com
185.199.110.153 avatars2.githubusercontent.com
185.199.110.153 avatars3.githubusercontent.com
185.199.110.153 avatars4.githubusercontent.com
185.199.110.153 avatars5.githubusercontent.com
185.199.110.153 avatars6.githubusercontent.com
185.199.110.153 avatars7.githubusercontent.com
185.199.110.153 avatars8.githubusercontent.com不过需要注意,ip可能之后需要更新,可以去站长工具,ping后面的域名来获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/476242.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell--第一次作业

1.接收用户部署的服务名称 # 脚本入口 read -p "请输入要部署的服务名称&#xff1a;" service_name 2.判断服务是否安装 # 判断服务是否安装 if rpm -q "$service_name" &>/dev/null; then echo "服务 $service_name 已安装。" 已…

项目部署问题bug记录(长期更新)

一、编译相关 1.submodules/simple-knn/simple_knn.cu(90): error: identifier "FLT_MAX" is undefined me.minn { FLT_MAX, FLT_MAX, FLT_MAX }; 部署photoreg工程&#xff0c;在编译simple_knn的时候&#xff0c;报错&#xff1a; (photoreg) leelee…

ant-design-vue中table组件多列排序

antD中table组件多列排序 使用前注意实现效果图实现的功能点及相关代码1. 默认按某几个字段排序2. 点击排序按钮可同时对多个字段进行排序3. 点击重置按钮可恢复默认排序状态。 功能实现完整的关键代码 使用前注意 先要确认你使用的antD版本是否支持多列排序&#xff0c;我这里…

影视后期学习Ⅰ~

1.DV是光盘 磁带 2.序列就是我们要制作的一个视频。 打开界面显示&#xff1a; 一号面板放的是素材&#xff0c;二号面板叫源监视器面板&#xff08;它的名字需要记住&#xff09;在一号面板点击文件之后&#xff0c;进入二号面板&#xff0c;在二号面板预览没问题后&#xf…

大语言模型---Llama模型文件介绍;文件组成

文章目录 1. 概要2. 文件组成 1. 概要 在使用 LLaMA&#xff08;Large Language Model Meta AI&#xff09;权重时&#xff0c;通常会涉及到与模型权重存储和加载相关的文件。这些文件通常是以二进制格式存储的&#xff0c;具有特定的结构来支持高效的模型操作。以下以Llama-7…

elasticsearch介绍和部署

1 elasticsearch介绍 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。可以很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性。Elasticsearch 的实现原理主要分为以下几个步骤&#xff0c;首先用户将数据提交到Elasticsea…

ZYNQ-7020嵌入式系统学习笔记(1)——使用ARM核配置UART发送Helloworld

本工程实现调用ZYNQ-7000的内部ARM处理器&#xff0c;通过UART给电脑发送字符串。 硬件&#xff1a;正点原子领航者-7020 开发平台&#xff1a;Vivado 2018、 SDK 1 Vivado部分操作 1.1 新建工程 设置工程名&#xff0c;选择芯片型号。 1.2 添加和配置PS IP 点击IP INTEGR…

Jenkins更换主题颜色+登录页面LOGO图片

默认主题和logo图片展示 默认主题黑色和白色。 默认LOGO图片 安装插件 Login ThemeMaterial Theme 系统管理–>插件管理–>Available plugins 搜不到Login Theme是因为我提前装好了 没有外网的可以参考这篇离线安装插件 验证插件并修改主题颜色 系统管理–>A…

《操作系统》实验内容 实验二 编程实现进程(线程)同步和互斥(Python 与 PyQt5 实现)

实验内容 实验二 编程实现进程&#xff08;线程&#xff09;同步和互斥 1&#xff0e;实验的目的 &#xff08;1&#xff09;通过编写程序实现进程同步和互斥&#xff0c;使学生掌握有关进程&#xff08;线程&#xff09;同步与互斥的原理&#xff0c;以及解决进程&#xf…

【倍数问题——同余系】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e5 10, M 1e3 10; int maxx[M][4]; void consider(int r, int x) {if(x > maxx[r][1]){maxx[r][3] maxx[r][2];maxx[r][2] maxx[r][1];maxx[r][1] x;}else if(x > maxx[r][2]){maxx[…

结合第三方模块requests,文件IO、正则表达式,通过函数封装爬虫应用采集数据

#引用BeautifulSoup更方便提取html信息&#xff1b;requests模块&#xff0c;发生http请求&#xff1b;os模块&#xff0c;文件写入import requests from bs4 import BeautifulSoup import os#当使用requests库发送请求时&#xff0c;如果不设置User - Agent&#xff0c;默认的…

Linux虚拟机网络配置

Linux固定IP 跳转到 cd /etc/sysconfig/network-scripts/ 打开文件并编辑 vim ifcfg-ens33 增加或修改选中内容 重启网卡 systemctl restart network ifconfig -a 查看ip已固定 虚拟机网络编辑器调整 子网IP进行修改&#xff0c;例如本机IP修改为10.212.197.34 此处就修改…

CSS实现实现当文本内容过长时,中间显示省略号...,两端正常展示

HTML 结构解析 文档结构: <ul class"con">: 一个无序列表&#xff0c;包含多个列表项。 每个 <li class"wrap"> 表示一个列表项&#xff0c;内部有两个 <span> 元素&#xff1a; <span class"txt">: 显示文本内容。<…

排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序

1.直接插入排序 基本思想&#xff1a;把待排序的数按照大小逐个插入到前面已经排序好的有序序列中&#xff0c;直到所有的都插入完为止&#xff0c;得到一个新的有序序列。 如图所示&#xff0c;当插入第i个&#xff08;i>1&#xff09;元素的时候&#xff0c;前面的arr[0]…

Qt:信号槽

一. 信号槽概念 信号槽 是 Qt 框架中一种用于对象间通信的机制 。它通过让一个对象发出信号&#xff0c;另一个对象连接到这个信号的槽上来实现通信。信号槽机制是 Qt 的核心特性之一&#xff0c;提供了一种灵活且类型安全的方式来处理事件和数据传递。 1. 信号的本质 QT中&a…

aws凭证(一)凭证存储

AWS 凭证用于验证身份&#xff0c;并授权对 DynamoDB 等等 AWS 服务的访问。配置了aws凭证后&#xff0c;才可以通过编程方式或从AWS CLI连接访问AWS资源。凭证存储在哪里呢&#xff1f;有以下几个方法&#xff1a; 一、使用文件存储 1、介绍 文件存储适用于长期和多账户配置…

Win11下载和配置VSCode(详细讲解)

配置VSCode需要的工具&#xff1a; 一、MinGW-w64 二、Visual Studio Code 一、MinGW-w64下载 1、下载 MinGW官网地址&#xff1a; Downloads - MinGW-w64 直链下载&#xff1a; 下载 mingw-w64-install.exe &#xff08;MinGW-w64 - 适用于 32 位和 64 位 Windows&#…

Python简介以及解释器安装(保姆级教学)

目录 一、Python介绍 1、简介 2、特点 3、来源 4、发展 二、Python解释器的安装 1、安装包下载 2、下载完成后&#xff0c;点击安装包进入安装流程 一、Python介绍 1、简介 Python 是一门解释型、面向对象以及动态数据类型的高级程序设计语言&#xff0c;语法简洁&…

【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击

基本信息 原文标题&#xff1a;ROBUSTKV: DEFENDING LARGE LANGUAGE MODELS AGAINST JAILBREAK ATTACKS VIA KV EVICTION 原文作者&#xff1a;Tanqiu Jiang, Zian Wang, Jiacheng Liang, Changjiang Li, Yuhui Wang, Ting Wang 作者单位&#xff1a;Stony Brook University…

美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设

随着科技的持续发展&#xff0c;建筑行业正朝着智能化的方向迅猛迈进。智慧工地作为建筑行业智能化的关键体现形式&#xff0c;借助各类先进技术来提升工地的管理效率、安全性以及生产效益。在这个过程中&#xff0c;视频汇聚平台发挥着极为重要的作用。以畅联AIoT开放云平台为…