一. 准備工作
1. 一台具備可用的 LAN 喚醒功能,支持WoL(Wake On LAN)功能的主機,需要網卡支持,根據網卡型號在對應的官網查找即可,主流的最近的網卡基本都支持。
比如我的主機是戴爾的T7810工作站,在戴爾的官網就可以找到:《如何在戴爾系統上設置-lan-喚醒-wol》,在支持的設備列表中可以找到。
2. 一台支持進入系統后台的路由器,我這里用的是基於openWRT的Pandora系統的極路由4增強版無線路由器。
因為openWRT是基於Linux發行版的嵌入式版本,內核其實也是Linux,完全可以當作是一台小型的主機。
因為WoL只能在內網喚醒,當初我還在想要是我的服務器意外關閉我應該怎么遠程喚醒它的時候,突然想起來可不可以用路由器作為一台主機對其進行喚醒,查了查果真可以。
注意,某些品牌的路由器支持ARP綁定喚醒,所以可以不用敲命令行就很方便的進行遠程喚醒。
3. IP地址是公網IP,這個對於遠程喚醒至關重要,為了保證可以及時的獲取最新的IP地址來遠程連接路由器,還需要給路由器綁定DDNS,這里用的是公雲(3322)的免費服務,質量和穩定性非常好。
二. 路由器
1. 在路由器上主要的操作就是打開路由器遠程登陸權限和系統后台對外權限。
2. 首先需要處理的是DDNS綁定,看這里:《申請域名並使用DDNS》
要想保證IP及時更新,請將"檢查間隔"設置的盡量短,但是也不要設定太短,否則可能會影響性能。
3. 對外開放路由器后台,在"防火牆 - 端口轉發",按下圖設置。
不要忘記保存&應用,下面來試一下是否可以用外網登陸,可以選擇用 DDNS:剛剛設定的端口 來嘗試。
4. 對外放開SSH登陸路由器系統后台,在"系統 - 管理"中配置。
接口一定要用LAN,端口保持22即可,這並不是對外的接口,因為還需要配置端口轉發,用來指定外面連接使用的端口。
密碼驗證和允許root用戶憑密碼登陸一定要關掉,否則會很不安全,使用SSH登陸最安全。網關端口要開啟,用來保證SSH驗證可以通過。
和配置路由器后台一個流程,配置路由器系統的端口轉發,內部端口就是上面設置的22。
下面用配置了SSH私鑰的macOS的SSH連接工具進行連接嘗試。
SSH默認使用22端口,因為之前配置的外部接口肯定不會是22,所以需要在連接后面用 -p 對外接口 拼接。
順利的登陸到了路由器后台。
5. 安裝喚醒工具
openWRT官方提供了兩種喚醒工具,wol 和 etherwake,我還是比較喜歡使用etherwake。
openWRT包管理工具:https://openwrt.org/zh/docs/techref/opkg
opkg update opkg install wol etherwake
wol語法:/usr/bin/wol -i 目標主機所在局域網的廣播地址 目標機網卡MAC地址
舉例:/usr/bin/wol -i 192.168.1.255 XX:XX:XX:XX:XX:XX
etherwake語法:/usr/bin/etherwake -b 目標機網卡MAC地址 -i 路由器網卡名稱
舉例:/usr/bin/etherwake -b XX:XX:XX:XX:XX:XX -i br-lan
三. 目標主機(Linux)
1. 目標主機的配置相對來說比較簡單,分別是在BIOS設置和系統中確認是否開啟WoL功能。
2. 以手頭的戴爾T7810工作站為例,啟動F12進入BIOS。選擇"System Configuration - Integrated NIC",這是設置板載網卡的,設置為Enabled即可。
戴爾T7910工作站BIOS手冊:https://blog.csdn.net/fengda2870/article/details/79184767/
3. 在"Power Managerment - Wake on LAN"設置為LAN Only,這是開啟WoL的功能。
4. 在"Power Managerment - Deep Sleep Control"中,設置為Disabled,關閉深層睡眠,這個很關鍵,保持網卡處於一直激活狀態。
5. 保存設置並重新啟動,進入Linux系統。首先需要確定當前系統是否開啟WoL功能。
(1) 檢查板載網卡: ifconfig ,找到帶內網IP的網卡,就是連接正在使用的板載網卡。
里面第一個紅框就是網卡的名字,第二個紅框是內網IP地址,第三個紅框是網卡的MAC地址,記下這三個數據。
(2) 檢查板載網卡設置: ethtool 網卡名稱
看第一個紅框,里面記錄的是支持的WoL模式。
d -- 禁用 p -- 物理活動喚醒 u -- 單播消息喚醒 m -- 多播(組播)消息喚醒 b -- 廣播消息喚醒 a -- ARP 喚醒 g -- 特定數據包magic packet喚醒 s -- 設有密碼的特定數據包magic packet喚醒
第二個紅框就是當前WoL設置的啟動模式。如果是d的話,需要手動修改網卡配置。
# 進入目錄 cd /etc/sysconfig/network-scripts # 使用文本編輯器打開名為 ifcfg-網卡名 的文件,替換成自己的 nano ifcfg-exxxxxxxx5 # 將下面文本添加到文件末尾 ETHTOOL_OPTS=”wol g” # 保存文件並退出重啟系統
再次進入系統,使用ethtool命令查看網卡的WoL模式是否為"g"。
四. 嘗試遠程啟動
一切准備就緒,關閉目標機,外網通過DDNS的域名登陸到路由器系統后台。
使用etherwake命令喚醒目標主機!
如果報錯請檢查路由器當前使用的網卡名是什么,命令還是ifconfig,帶內網IP地址的就是
將此網卡名替換掉 -i 后面的字符串即可。
不出意外已經激活了目標主機了。
五. 其他操作
因為登陸路由器系統還是比較費勁的,最好在路由器管理界面就喚醒機器。
openWRT提供了一個帶頁面的遠程喚醒工具。
opkg update # 安裝如下,第一個是wol的主程序,第二個是漢化包 opkg install luci-app-wol luci-i18n-wol-zh-cn # 安裝完畢,清理路由器的luci界面緩存 rm /tmp/luci-indexcache # 重新進入路由器后台
當然,如果用PandoraBox或者其他UI的如果有軟件包管理頁面,也可以忽視第二節的第4部分及以下部分。
因為我這個是PandoraBox,所以位置在"服務 - 網絡喚醒"Tab頁。