Wake On Lan(Wol)
简介¶
Wake-on-LAN 也叫 WoL,指通过网络消息打开或唤醒计算机。
WoL 需要由另一台「同局域网」设备发送网络信号,任意有能力发送 WoL 信号 的设备都可以充当此角色;在远程办公场景中,则最好由「带有线网卡的低功耗设备」来执行,这类设备包括但不限于以下选项:
- 带网络唤醒 WoL 功能的路由器产品
- OpenWrt Linux 设备「TP-Link 703n」
- 树莓派「推荐 2 代」
网络扫描¶
获取局域网下设备MAC地址, 或者OpenWRT直接显示 |平台 |工具 | | ---| ---| Windows | Softperfect Network Scanner Linux | arp-scan Android / iOS | Fing / PingTools
发出唤醒信息的软件¶
可以使用的幻数据包唤醒工具有:
平台 | 工具 | 特点 |
---|---|---|
Windows | wolcmd.exe | 命令行,跨网段 |
Linux/MacOS | etherwake, wakeonlan | 命令行,同网段 |
Android / iOS | Fing / PingTools | 可扫描 |
请注意,WoL 属于无状态协议,仅发送、不确认。
问题:抓包发现 WolCmd和wakeonlan的目的地址不同¶
WolCmd.exe 90:09:D0:15:70:B8 192.168.233.242 255.255.255.255 9 (目的地址 192.168.233.242)
WolCmd.exe 90:09:D0:15:70:B8 192.168.233.242 255.255.255.0 9 (测试过本地能成功,br-lan路由器能抓, 本地wireshark目的地址 192.168.233.255)
WolCmd.exe 90:09:D0:15:70:B8 192.168.233.242 0.0.0.0 9 (目的地址 192.168.233.109.53362 > 255.255.255.255.9 注意:109是macboook)
shaojiemike@shaojieikedeAir ~/github/hugoMinos (main*) [11:46:22]
> wakeonlan 90:09:D0:15:70:B8 (目的地址 192.168.233.109.53362 > 255.255.255.255.9 注意:109是macboook)
Sending magic packet to 255.255.255.255:9 with payload 90:09:D0:15:70:B8
Hardware addresses: <total=1, valid=1, invalid=0>
Magic packets: <sent=1>
路由遇到目的MAC是广播地址怎么办?
IP的广播有三种: 1. 255.255.255.255叫本地广播,也叫直播,direct broadcast,不跨路由器。 2. 172.16.33.255叫子网广播,广播给172.16.33.0这个子网,可以跨路由器 3. 172.16.255.255叫全子网广播,广播给172.16.0.0这个主网,可以跨路由器。
路由器是三层设备,可以隔离广播,但并不是所有广播都隔离。事实上只有本地广播路由器才不转发,对于子网广播和全子网广播,路由器是转发的。
为什么呢?我们来看255.255.255.255的广播,在MAC的封装中,对应的目的MAC是广播,而子网广播和全子网广播,对应的目的MAC是单播,所以路由器会转发。所以路由器隔离的广播是目的MAC为全1的广播,对于目的MAC是单播的上层广播,路由器是不能隔离的。
广播规则¶
> netstat -r -anv
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 192.168.233.1 UGScg en0
127.0.0.1 127.0.0.1 UH lo0
192.168.233 link#11 UCS en0 !
192.168.233.1/32 link#11 UCS en0 !
192.168.233.1 5c:2:14:b3:2:a UHLWIir en0 1172
192.168.233.109/32 link#11 UCS en0 !
192.168.233.242 90:9:d0:15:70:b8 UHLWI en0 151
192.168.233.255 ff:ff:ff:ff:ff:ff UHLWbI en0 !
255.255.255.255/32 link#11 UCS en0 !
255.255.255.255 ff:ff:ff:ff:ff:ff UHLWbI en0 !
[root@ax6s ~]$ ip route get to 192.168.233.242 from 192.168.233.142 iif lan2
192.168.233.242 from 192.168.233.142 dev br-lan
cache iif lan2
[root@ax6s ~]$ ip route get to 192.168.233.255 from 192.168.233.142 iif lan2
broadcast 192.168.233.255 from 192.168.233.142 dev lo table local
cache <local,brd> iif lan2
[root@ax6s ~]$ ip route get to 255.255.255.255 from 192.168.233.142 iif lan2
broadcast 255.255.255.255 from 192.168.233.142 dev lo
cache <local,brd> iif lan2
电脑需要远程被远程唤醒¶
电脑设置¶
- 「网络连接」
- 以太网(有线网)属性
- 【网络】(Realtek PCIe 2.5GbE Family Controller)下配置
- 【电源管理】勾选「允许此设备唤醒计算机」以及「只允许幻数据包唤醒计算机」
- BIOS打开相关选项
需要进一步的研究学习¶
暂无
遇到的问题¶
暂无
开题缘由、总结、反思、吐槽~~¶
Nas 太吵,需要自动关机
参考文献¶
https://sspai.com/post/67003
https://www.depicus.com/wake-on-lan/wake-on-lan-cmd