前言
我有个很奇特的需求,在保证性能的前提下对于我来说手机屏幕越大越好 pc 屏幕越小越好,主要目的是为了方便随时随地能利用碎片时间满足多样化办公。事实上现在手机或 pad 其实已经满足了部分用户专业化的办公需求,比如 iPad pro 已经可以运行完整的 PhotoShop 了,但是对于另一些比如想调试个代码或者运维什么的,还是离不开一台 PC 或者 mac,华为手机上推广的 云电脑 就是一个让你可以扔了普通 PC 的非常不错的 app,手机终端只是作为一个瘦终端(也不瘦了),目前我用的华为 mate 系列手机(不是打广告)就可以利用 typeC HUB 实现投屏功能,只要能连接上一台显示屏,我们就可以获得非常好的接近原生 PC 的办公体验。
华为云电脑收费如下
经济型 | 标准型 | |
---|---|---|
按需 | 2 元 / 小时 + 10 + 元数据保留 | 3 + 元 / 小时 + 10 + 元数据保留 |
按月 | 29.8 元 / 月 | 59.8 元 / 月 |
一年需要 300 + 的收费,在停止缴费后数据只保留 15 天,对于我这样的穷人来说买这个服务还是有些犹豫的。那么是否我们可以免费打造一个类似的服务呢,(当然是可以的,不可以我写啥呢)当然一个废话的前提是你得有一台 PC 机。
这样的问题可以简化为总共分两步实现:远程登陆我的电脑;远程控制电脑开机。
什么远控端好用
远控软件还是比较多的,有大名鼎鼎的老牌 teamviewer,VNC,还有像 Microsoft Remote Desktop,Chrome Remote Desktop,国产的向日葵远控等等。
要满足我们远控的最低要求是,可以从外网穿透内网,如果只能在同一网段的内网远程登陆,那显然不能满足我们的需求。最终选用了 teamviewer, VNC, 向日葵三种不同的远控软件,各有优缺点,不做强烈推荐,总结对比了一下优点和不足
- teamviewer 这个大家可能都用过,算是最成熟广泛的使用的远控软件了。
- VNC 官网称作 RealVNC, 也是历史悠久的软件了,之所以加面加 Real 前缀,或许是盗版太多?
- 向日葵这款国产软件由花生壳出品,结合发布的一些硬件,有不少亮点,也是有相当多的用户。
优点 | 不足 | |
---|---|---|
teamviewer | 免费,连接速度快,支持内网穿透,跨平台支持,支持文件传输 | 鼠标的控制的两种模式不能随意切换,对蓝牙鼠标支持不好 |
VNC | 免费,连接速度快,鼠标键盘支持好,支持内网穿透,最全的跨平台 | 没有目标机上线提示,除了远控不支持远程文件传输等一系列便利功能 |
向日葵 | 主要功能免费,支持内网穿透,跨平台,支持鼠标的触摸模式,支持各种小功能包括硬件控制的远程开机 | 商业化太重,穿插广告过多,远程画面无平滑处理锯齿感太明显,除了远控外的功能都要收费 |
远控软件鼠标的处理方式,一般是两种,鼠标交互与触摸交互。
在 teamviewer 上,官方是支持在 6.5 寸的屏幕的 Android 平台才能开触摸交互,除此之外并没有设置的入口,根据在大屏手机上的使用来说,这个功能是有 bug 的,并不能在 6.5 寸手机上正常稳定开启。VNC 只有一种鼠标交互的模式,但是对于外接蓝牙鼠标支持非常友好,而向日葵只能切换到触摸交互才能使用鼠标,这种情况下也就失去了鼠标移动时在软件界面上的的 Hover 效果了。
综合来说,如果需要外接鼠标和键盘和外接屏幕,VNC 应该是首选。
如何远程开机
对于另外一个关键问题,我们不可能在家里长期不关机等着远控,那么在日常关机时,能远程开机就是一个必需要解决的问题了。
远程开机是一个十多年前就推出的技术,称作 WOL(Wake On LAN),最初是由 AMD 牵头开发推广的,关机时网卡不会完全关闭,当监听到了特定的数据包 (Magic Package) 时则会请求开机。
如果你的 PC 机是带网线插口的,那么一般来说主板都可以支持远程开机,但是需要注意的是如果某些笔记本只带无线网卡的情况下,是可能会阉割掉这个功能的。
远程开机有很多方法,有向日葵插在路由上的硬件开机棒,甚至某些路由的后台设置里就有控制选项,以下我会讲一个在智能路由上比较通用的方法(例如在小米路由极路由或者其它可开启 ssh 的路由上使用),不需要额外安装远程开机 app 或者购买特殊的硬件。
首先在确认了主板支持 WOL 后,需要在 BIOS 中开启功能,不同的 BIOS 设置的地方不一样,以下是一些可能见到的 BIOS
在 windows 中需要做如下设置,右键电脑属性,设备管理中
另外建议设置关闭睡眠开启定时休眠,做了如上设置后,WOL 功能才能算可以正式生效。
剩下我们要做的事是远程登陆路由,并在路由上放一个可执行程序帮助我们远程开机
对于小米路由或者极路由都是支持 ssh 登陆的,需要取得 root 权限,意味着我们可以完全的掌控此路由了,可以在路由的官网上找到拿 root 权限的详细说明。
我们可以看一下路由的 cpu 是什么型号,ssh 登陆后输入命令
cat /proc/cpuinfo | grep 'model' | awk -F ":" '{print $2}'
然后下载对应 cpu 的可执行文件 (小米和极路由对应的是 mipsle 架构) 下载地址:
https://github.com/oserz/wakeup-go
按项目说明中的操作填 sh 文件中 mac 地址,终端中切换到下载目录,用如下命令上传到路由中
scp wakeup root@192.168.X.X:/tmp/
scp wakesh.sh root@192.168.X.X:/tmp/
192.168.X.X 代表路由的 IP 地址
上传成功后,电脑插好网线,在关机状态下运行 sh 文件就可以成功启动电脑了。
还要做什么
为了方便在外网控制远程开机,方便可以在外网随时登陆路由,需要实现:
- 绑定动态域名服务,就是把域名解析到动态的家庭 IP 上,最好是有穿透的功能动态域名,因为一般家庭的网络的对外 IP 并不是公网,也是按区域划分的 NAT 内网,这个像花生壳之类都有免费的服务,一般路由也都支持,各种路由没有统一的设置界面,因此需要针对不同的路由做不同操作,动态域名一般都是免费的。
- 在路由后台上设置 TCP 端口转发,绑定一个 1024 以上的端口到内部 22 号端口。
这样我们用如下的命令就可以登陆上内网的路由了:
ssh root@(我的域名) -p (我绑定的转发端口)
另外因为远程控制的服务是一般可以在内网穿透的,同子网运行速度非常快,但如果是不同子网,通过隧道中转的网络包很多时候延时会比较高,表现为操作会比较卡顿,这个当然也是有办法解决的,可以在路由上构建一个 VPN 服务,在远程接入前先连入路由子网。具体不详细长篇大论了,可以参考一个开源项目叫做 brook 解决问题。
建议有办公需求的外接鼠标键盘,手机投屏运行,展示一下最终的效果