由于我目前打游戏已经全线转移到主机平台,所以一直没有什么换电脑的需求,2017 年上大学时买的神舟战神笔记本一直用到现在。曾经一直以为这破本子不支持 Wake on LAN,因为 BIOS 里找不到任何相关设置项,直到我前几天无聊随手测试了一下,结果非常顺利地唤醒了电脑...于是稍加配置,现在我就可以非常方便地远程控制电脑了。
Wake on LAN
首先确保电脑是有线连接网络,然后翻一下 BIOS 里有没有网络唤醒的相关设置,有的话就全部打开。
然后打开网卡的属性,点击配置。
在电源管理标签中勾选“允许此设备唤醒计算机”,下面的“只允许幻数据包唤醒计算机”也可以勾选。
电脑上的 Wake on LAN 配置就这么简单,现在可以来简单测试一下能否正常接收到数据。
我使用的是这个项目:WakeOnLAN,打开后是这个样子
选择“封包监控诊断工具”
然后在手机上随便下载一款能够发送 Wake on LAN 消息的 app
确保手机与电脑处于同一网络,填入相关配置,尤其注意电脑有线网卡的 MAC 地址一定要写对
保存后点击发送,如果电脑接收到相关数据,那就可以关机测试是否能正确开机了。
HomeKit 配置
现在电脑已经可以在局域网内实现网络唤醒开机,下一个问题就是如何在外网环境向电脑发送指令。因为家里正好有一台 24 小时开机的树莓派在当服务器使用,所以我这里的解决方案是使用 Home Assistant。
翻了一下 Home Assistant 的文档,发现正好支持 Wake on LAN 的集成配置,可以作为一个开关设备控制,完美符合需求。
编辑 configuration.yaml
,照猫画虎加入以下配置:
switch:
- platform: wake_on_lan
name: "电脑"
mac: XX-XX-XX-XX-XX-XX
host: 192.168.31.108
turn_off:
service: shell_command.turn_off_pc
shell_command:
turn_off_pc: "ssh username@192.168.31.108 shutdown -p"
配置完重启 Home Assistant,就可以在控制面版中看到一个名为“电脑”的开关实体了。
现在完整的数据流,就是我在手机的 HomeKit 里点击开机,家里作为中枢的 HomePod mini 接收到指令并下发到树莓派 Home Assistant 中创建的开关,开关再在局域网中向电脑发送 Wake on LAN 消息完成开机。
关机配置
这里需要额外注意的是关机命令,是通过 ssh 登录 Windows 执行 shutdown
命令来实现的,还需要在电脑上做一些相关配置。
打开系统设置,在 应用 - 可选功能 中安装 OpenSSH 服务器,让我们可以通过 ssh 连接到电脑。
由于我们需要无密码访问,所以还要配置 ssh 密钥。
在树莓派上使用 ssh-keygen
生成密钥,由于我的 Home Assistant 使用的是 docker 版本,所以需要进入容器的 bash 再生成密钥才行
docker exec -i -t homeassistant /bin/bash
将生成的公钥 ~/.ssh/id_rsa.pub
内容复制出来,在 Windows 端的用户目录 C:\Users\%UserName%\.ssh
下创建 authorized_keys
文件,把公钥粘贴进去,现在就可以通过 ssh 命令一键执行 Windows 关机了。
远程桌面
由于我这边没有公网 IPv4 地址,尝试跟客服申请也无果,所以只能使用 IPv6 来连接了。
首先配置光猫,我使用的中国联通的 TEWA-802G,跟宽带安装师傅要到了管理员密码是 CUAdmin
,登录后修改 INTERNET 连接的 IP 模式为 IPv4&IPv6
。
在路由器后台也打开 IPv6 相关设置
此时电脑应该已经可以获取到公网 IPv6 地址了
由于不是固定 IP,每次开机获取到的 IPv6 地址都会变化,所以还需要 DDNS,我使用的是 GitHub 上的这个项目 DDNS 配合阿里云来实现。
直接下载 Windows 二进制版,首次运行会在当前目录生成 config.json
,填写域名和 token,就可以在每次运行的时候更新域名解析地址。
最后配置任务计划程序,就可以实现每次开机后自动刷新 DNS,并且每五分钟更新一次。
在系统中打开远程桌面,就可以愉快地连接了。
如果还无法连接,可能是防火墙的原因,需要在路由器和光猫中开放相应端口
ip6tables -I forwarding_rule -p tcp --dport 3389 -j ACCEPT
最终效果
现在出门在外,无论在公司还是在户外,只要有 IPv6 网络,都可以一键开启家里的电脑,并连接远程桌面随意控制,非常方便。
将电脑接入 HomeKit 之后,还能联动智能家居进行一些更有趣的玩法,比如配合人体传感器在我靠近桌面之后自动打开电脑,或是在晚安场景中关闭灯光的同时控制电脑关机,更多的玩法就自由发挥想象力吧。