什么是網絡喚醒WOL
見維基百科:https://zh.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF%E5%96%9A%E9%86%92
Wake-on-LAN簡稱WOL或WoL,中文多譯為“網絡喚醒”、“遠程喚醒”技術。WOL是一種技術,同時也是該技術的規范標準,它的功效在于讓==休眠==狀態或==關機==狀態的電腦,透過局域網的另一臺電腦對其發令,使其喚醒、恢復成運作狀態,或從關機狀態轉成引導狀態。
要求
要想實現WOL,首先必須要有具備WOL功能的主板、網卡。
現在的主板通常只需在BIOS中開啟PCI/PCIe喚醒功能或網卡喚醒功能,主板內置的網卡可支持WOL。除了開啟BIOS中的PCIe喚醒功能外,可能還要在操作系統中設置網卡的喚醒功能
除了古董機之外現在的電腦一般都支持,多在BIOS中找找相關選項
工作原理
電腦處在關機(或休眠)狀態時,機內的網卡及主板部分仍保有微弱的供電,此微弱供電能讓網卡保有最低的運作能力,使網卡能聆聽來自電腦外部的網絡廣播信息,并對信息內容進行偵測與解讀,一旦發現網絡廣播的內容中有特定的“魔法數據包”(Magic Packet),就會對該數據包的內容進行研判。
魔法數據包是以廣播方式發送的,廣播的方式與范疇可以是整個局域網(LAN),也可以是特定的子網(Subnet),同時魔法數據包內會有某部(或一群)電腦的網絡地址資料,網卡一旦解讀研判出所指的地址是自身所處的電腦時,網卡就會通知機內的主板、電源供應器,開始進行引導(或喚醒)的程序。
魔法數據包
魔法數據包(Magic Packet)是一個廣播性的幀(frame),透過端口7或端口9進行發送,且可以用無連接(Connectionless protocol)的通信協議(如UDP、IPX)來傳遞,不過一般而言多是用UDP
在魔法數據包內,每次都會先有連續6個"FF"(十六進制,換算成二進制即:11111111)的資料,即:FF FF FF FF FF FF,在連續6個"FF"后則開始帶出MAC地址信息,有時還會帶出4字節或6字節的密碼,一旦經由網卡偵測、解讀、研判(廣播)魔法數據包的內容,內容中的MAC地址、密碼若與電腦自身的地址、密碼吻合,就會引導喚醒、引導的程序。
如:
00000000 : FF FF FF FF FF FF 6C BC 4A B3 F4 BC 6C BC 4A B3
00000010 : F4 BC 6C BC 4A B3 F4 BC 6C BC 4A B3 F4 BC 6C BC
00000020 : 4A B3 F4 BC 6C BC 4A B3 F4 BC 6C BC 4A B3 F4 BC
00000030 : 6C BC 4A B3 F4 BC 6C BC 4A B3 F4 BC 6C BC 4A B3
00000040 : F4 BC 6C BC 4A B3 F4 BC 6C BC 4A B3 F4 BC 6C BC
00000050 : 4A B3 F4 BC 6C BC 4A B3 F4 BC 6C BC 4A B3 F4 BC
00000060 : 6C BC 4A B3 F4 BC
設置
BIOS設置
BIOS設置各不相同,如:
高級 -> 喚醒事件設置 -> 將 PCIE設備喚醒 和 網絡喚醒 設置為 允許 (Enable)
BIOS選單,選擇Power Management Setup 把PME Event Wake Up 改成 Enabled即可設置成功
進入BIOS設置,Power->Automatic Power On里面,設置Wake on LAN = Enable/Automatic
不同機器的BIOS設置位置不同,找到對應的Wake on LAN選項設置就OK。一般2010年后的網卡都支持網卡喚醒功能,如果在BIOS設置里面找不到相應的設置項,很可能默認就是開啟的。
電腦端設置
進入網絡適配器 ,選擇對應網卡 右鍵 -> 屬性 -> 配置 -> 高級
- 魔術封包喚醒 = 開啟
電源管理 -> 勾選 允許此設備喚醒計算機
軟件
這個網站有各個平臺的工具
https://www.depicus.com/wake-on-lan/
WEB網頁工具
http://www.dslreports.com/wakeup
桌面軟件
發包軟件:
https://www.depicus.com/downloads/wakeonlangui.zip
收包測試軟件:
https://www.depicus.com/downloads/wakeonlanmonitor.zip
不用真正的不停的開關機,這個軟件有監聽到數據包就可以了
建議還是用Wireshark,規則欄里面寫wol就可以,這個工具只能收指定端口的UDP包
手機端控制軟件
下載:
https://www.depicus.com/wake-on-lan/wake-on-lan-andriod
安裝 -> 打開應用,提示不兼容 沒有關系忽略
或者:https://apkpure.com/search?q=wake+on+lan
里面有很多app
測試
這里用手機測試
手機連入和電腦相同的局域網中
輸入mac地址,通過 getmac 或 ipconfig /all 獲取
IP地址輸入廣播地址,如:192.168.31.255
子網掩碼輸入當前網絡的子網掩碼,如:255.255.255.0
端口隨意,點擊 Wake Up
即可啟動電腦
公網遠程開機
前提是:路由器取得公網IP
沒有公網IP就打電話找網絡運營商,如中國電信,讓他們改
光貓弄成橋接模式,用路由器撥號上網,要做端口映射
直接百度IP
123.0.99.18(本機)
地理地址: 中國 XXX XXX XXX
運營商: 中國電信
路由器設置端口映射
由于路由的端口轉發不支持廣播地址
"子網定向廣播”,默認情況下,大多數路由器和防火墻都禁用此選項
這里做一下 DHCP靜態IP分配
設備名稱 | IP地址 | MAC地址 |
---|---|---|
TEST-PC | 192.168.31.111 | AA:BB:CC:11:11:11 |
端口轉發規則列表:
名稱 | 協議 | 外部端口 | 內部IP地址 | 內部端口 |
---|---|---|---|---|
遠程喚醒 | TCP和UDP | 999 | 192.168.31.111 | 9 |
用喚醒工具,填入公網的ip
設置了DDNS后就可以用域名喚醒了,不用管IP的變化
注意子網掩碼填:255.255.255.255
這里喚醒的是指定的IP,不再是廣播了,掩碼要全是1
端口填 前面映射的999
問題
配置到這里,已經可以通過因特網發送喚醒數據包到我的電腦,電腦關機后兩分鐘內可以再次喚醒,但是超過2分鐘,喚醒操作失敗,原因就是路由器arp映射表動態更新后把關機電腦的arp項刪除了,導致路由器接收到魔術包后不能正確的轉發。
參考:
https://github.com/melonbo/wolTool
https://www.office26.com/luyouqi/miwifi-wol-waiwang.html
解決辦法
路由器開啟ssh,獲取root權限,配置靜態arp
配置arp
通過ssh登錄路由器
設置arp靜態綁定mac
arp -s ip地址 ma地址
用 man arp 查看說明
完了可以用arp命令查看結果
路由器重啟自動配置
但是有個問題,重啟之后會丟失
window下就是永久的....
所以我們把這條指令寫到啟動腳本rc.local里面
$ vi /etc/rc.local
# 增加arp映射
arp -s 192.168.31.111 XX:XX:XX:XX:XX:XX
如果需要配置多個可以考慮配置在文件中
查看說明可以看到有個 arp -f 命令,可以從文件中讀取,默認文件是:/etc/ethers
我們在這個文件中寫入配置:
vi /etc/ethers
192.168.31.aa XX:XX:XX:XX:XX:XX
192.168.31.aa XX:XX:XX:XX:XX:XX
在開機啟動下加入
vi /etc/rc.local
arp -f
遠程桌面
在電腦上設置一下開啟遠程桌面,設置一個強密碼
在路由器上再配置一個端口映射,遠程桌面的端口是3389
名稱 | 協議 | 外部端口 | 內部IP地址 | 內部端口 |
---|---|---|---|---|
遠程桌面 | TCP和UDP | 43389 | 192.168.31.111 | 3389 |
遠程桌面軟件:
電腦端:mstsc
手機端:RD client
Centos wol 工具
[root@wol ~]# yum -y install net-tools
# ether-wake [MAC address of the computer you'd like to turn on]
[root@wol ~]# ether-wake 00:22:68:5E:34:06 # send magick packets
指定接口
ether-wake -i eth0 11:22:33:44:55
java 工具
https://github.com/wangwen135/wol4j
直接java -jar 運行
參數說明:Mac地址 [廣播地址] [端口]
如:
# java -jar wol4j-1.0.0.jar 22-00-DD-11-44-7A 192.168.1.255
默認端口是:9
這個工具也是發的UDP包