通过ZerTier实现远程adb连接

最近接到需求,需要在Linux服务器上连接本地的Android设备,要求能在Linux上执行adb命令识别到本地的Android设备。查了一些资料,请教了一些朋友,被推荐了这种通过ZerTier组件虚拟局域网,让需要连接的设备都处于这个虚拟局域网中,就可以实现连接要求了。

什么是ZerTier

ZerTier是内网穿透工具,可以搭建用于自己的虚拟网络,经过授权连接成功之后彼此都在同一网段,可以像在局域网一样互相访问。

网络准备

先到官网注册一个zerotier账户,如果你有GitHub的账户,可以通过第三方登录进行授权。注册地址:https://my.zerotier.com/

有了账户之后新建一个网络:

Create A Network

创建了网络之后需要记住这个即将要使用网络的NETWORK ID:

NETWORK ID

Windows客户端准备

从官网下载安装包:

ZeroTier的Windows安装包

双击自动安装,完成安装后,可以在右下角的任务栏中看到

运行中的ZeroTier

右键图标后可以看到一个Join Network的选项,点击后会出现填写NETWORK ID的弹窗。还有一个My Address,左键点击后会自动复制到剪切板。

将这个Address id填到官网的NETWORK配置中,通过点击这个进入配置页面:

点击要加入的Network

在配置页靠下的部分中,添加Node:

将Windows设备作为Node添加到网络

添加成功后,可以在Windows的dos界面中看到被指定的IP:

被分配的ip地址

Linux客户端准备

Linux的ZeroTier客户端安装都可以通过命令,在官网也给出了参考命令,这里记录一下我使用的命令:

curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi
sudo apt install zerotier-one -y

如果你的Linux没有curl,就通过本地安装工具安装一下curl。

安装成功后会给出一个Address id,也是一样需要添加到官网中自己建的网络中的,添加方式和上面的一样。

如果你没记住这个Address id,也可以通过命令查看,下面任意一个都可以:

zerotier-cli info
zerotier-cli status

除了上面查看状态信息的命令,还有几个比较常用的命令:

# 加入虚拟局域网
zerotier-cli join 
# 离开虚拟局域网
zerotier-cli leave 
# 显示连接列表
zerotier-cli listnetworks
# 启动zerotier服务
sudo systemctl start zerotier-one.service
# 停止zerotier服务
sudo systemctl stop zerotier-one.service
# 打开开启自启动zerotier
systemctl enable zerotier-one.service
# 关闭开启自启动zerotier
systemctl disable zerotier-one.service

Android客户端准备

去官网下载客户端,不过大概率是会下载失败的,至于原因嘛,DDDD。可以在网上找一下客户端,不过个人建议还是去官网下,因为网上经过别人手的东西很难说是否带了私货。我这里也提供一个Android客户端的网盘,真没办法官网下载的可以从这里下载:

密码:rg5c
https://cloud.189.cn/web/share?code=UbQJ7veQJfme

apk安装到手机成功后,启动apk:

启动页面

点击右上角的➕,会出现一个Join Network的页面,将在官网Create A Network时记录的NETWORK ID填到这个页面中:

Join Network

填完NETWORK ID后直接点击Add Network就可以。会自动回到首页,点击列表中出现的Network的开启按钮,出现一个提示弹窗,大概意思就是会监控流量,这也就是ZeroTier很难在实际工作中使用的原因,多数有点规模的公司,为了安全考虑,都不会允许使用ZeroTier。但是我们先不考虑这个,只要能达到目的就行。

监控流量提示

点击确认后,首页左下角会出现一个Address id:

左下角Address id

将这个Address id填到官网的NETWORK配置中,通过点击这个进入配置页面:

点击要加入的Network

在配置页靠下的部分中,添加Node:

将Android设备作为node添加到网络

将网络中的设备ip地址都改成同一个网段。当设备都处于ONLINE状态时,就可以互相直接ping通了。

adb验证效果

在操作端配置好adb环境,在Android设备上开启监听端口,如果没有端口监听,可以通过这个命令开启:

# 端口不一定是5555,只要没其他进程占用就行
adb tcpip 5555

然后就能用adb连接了,具体效果:

连接后的效果

总结

对于个人,且没有什么机密信息的情况,ZeroTier的确是个简单又方便的工具,除了会有点网络延迟,其他暂时没感知到什么毛病。

但是正是因为数据安全和流量监控互相冲突,ZeroTier往往不能成为我们的远程adb连接的首选方案。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章