前言
由于视力越来越差,我在寝室放了一台24寸的显示器,笔记本电脑也因此立式放置了。
为了不经常移动笔记本,也为了外出携带的电脑重量轻一点,我使用另外一台mac远程连接寝室的笔记本以完成学习工作。
因此,好用的远程桌面环境搭建对我来说十分重要。
接下来我将介绍一下我的远程办公环境搭建流程,并对一些技术细节进行相关说明。
我使用parsec+zerotier来完成桌面串流和虚拟局域网的搭建,使得我的任意一台电脑都可以在不同的网络环境下相互远程办公。
设备要求
- 1台云服务器或者是任何具有公网IP的设备
- parsec
- zerotier
- 若干台主机
parsec介绍
parsec官网下载
parsec本身是一款游戏串流软件,由于其完全免费以及功能完善的特性,作为桌面串流软件来说十分合适。
parsec可以远程获得被控主机的图像、声音、设备控制权限(如连接游戏手柄),并且可以自由调节解码模式和传输流量限制、帧数等,相比于常见的远程桌面软件画面更流畅清晰。
美中不足的是,parsec无法远程传输文件,但是毕竟传输文件的方式太多了,小小缺点不能阻碍它成为我远程桌面的主力军。
parsec采用的连接技术应该是p2p,但是依然有终端服务器负责提供部分中介技术。因此,parsec的最佳适用场景是局域网,如果2台主机位于不同的网络环境中,parsec虽然可能可以直接提供服务,但是网络不稳定、容易断线。此时,为parsec建立一个虚拟局域网就十分重要了。
zerotier介绍
zerotier官网下载
zerotier是一款搭建虚拟局域网的软件。简单来说,zerotier可以利用内网穿透技术,使得任意2台计算机间加密收发数据,暂时摆脱NAT技术和非公网IP的限制,达到局域网的效果。
但是,zerotier在创建虚拟局域网前需要先通过服务器或者中继节点进行一系列的通信与确认,并且在不具备内网穿透条件的情况下由服务器提供虚拟局域网主机直接的数据传输。然而zerotier官方服务器在外网,连接时延相当高,并且还有完全连接不上的可能性,这使得单纯使用zerotier的用户体验十分糟糕。
不过zerotier提供灵活的自定义行为,可以自己搭建zerotier的中继节点——moon节点。利用自己搭建的moon节点即可愉快的使用zerotier搭建私人虚拟局域网了。
创建zerotier网络
- 进入zerotier官网,创建好账号后点击Create A Network
- 根据自己爱好设置网络情况,建议使用私人网络
- 记下Network ID,客户端加入网络的时候需要用到
搭建moon节点
一般来说moon节点都搭建在公网服务器上,以linux系统为主,这里就只介绍linux的搭建方法,其中搭建moon节点的用户最好是具有sudo权限的用户。
moon节点可以看作是一种特殊的zerotier网络成员,所以在搭建前需要先安装zerotier。
- 安装zerotier
curl -s https://install.zerotier.com/ | sudo bash
- 开启服务
systemctl start zerotier-one.service systemctl enable zerotier-one.service
- 加入zerotier网络
zerotier-cli join [Your Network-ID]
- 创建并生成moon配置文件(权限不足就sudo su吧)
cd /var/lib/zerotier-one sudo zerotier-idtool initmoon identity.public > moon.json
- 修改moon配置文件
vim moon.json
将
"stableEndpoints":[]
改为"stableEndpoints" :["youripv4address/9993","youripv6address/9993"]
,没有ipv6地址就不用添加那项了。 - 生成moon节点签名文件
sudo zerotier-idtool genmoon moon.json
- 创建管理moon节点的文件夹moons.d,并将刚刚生成的.moon文件移动到moons.d文件夹中
mkdir moons.d mv 0000000xxxxx.moon moons.d/
- 重启moon节点主机的zerotier服务
systemctl restart zerotier-one
- 将
000000xxxxxx.moon
文件下载到本地,方便接下来的流程
客户端加入zerotier网络并添加moon节点
windows
- 下载好客户端后,点击Join New Network
- 输入刚刚记下的Network ID
- 在zerotier管理页面通过设备
- 在
C:\ProgramData\ZeroTier\One\
目录下创建moons.d
文件夹 - 将刚刚下载好的
000000xxxxxx.moon
文件复制到C:\ProgramData\ZeroTier\One\moons.d\
文件夹下 - 重启zerotier服务
- 按
win+r
- 输入
services.msc
- 找到
ZeroTier One
服务,右键选择“重新启动”
- 按
- 等待一会后检查是否成功连接到moon节点
zerotier-cli listpeers
macos
- 下载好客户端后,点击Join New Network
- 输入刚刚记下的Network ID
- 在zerotier管理页面通过设备
- 打开终端,cd到
/Library/Application Support/ZeroTier/One
目录下,并创建moons.d
文件夹cd /Library/Application\ Support/ZeroTier/One sudo mkdir moons.d
- 打开终端,将
000000xxxxxx.moon
文件复制到/Library/Application Support/ZeroTier/One/moons.d
路径处cp your_path_to_moonfile/000000xxxxxx.moon /Library/Application\ Support/ZeroTier/One/moons.d/000000xxxxxx.moon
- 重启zerotier服务
sudo launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist sudo launchctl load /Library/LaunchDaemons/com.zerotier.one.plist
- 等待一会后检查是否成功连接到moon节点
zerotier-cli listpeers
远程办公,启动!
- 打开zerotier
- 打开parsec并登录
- 点击connect,连接远程主机,过不久就会得到画面了
我会在常驻的远程主机上开启parsec+zerotier自启动,为了保险起见,我还会多开一个todesk以防万一。
大家记得及时更新各个软件,以防出现0day变成肉鸡的情况。😎