前言
其實這個專題很久很久之前就想寫了,但是一直因為各種原因拖着沒動筆。
因為沒有資格,也沒有錢在一線城市買房 (😂😂😂); 但是在要結婚之前,婚房又是剛需。
我和太太最終一起在一線城市周邊的某二線城市買了房。
再之後,一起裝修,她負責非電相關,我負責電 網相關的裝修。
家庭組網,家庭實驗室就這麼一步一步随着家庭的組建而組建了起來:
- 家庭有線無線組網
- 智能家居
- NAS
- 公網 IP 和 IPv6
- Wake Online (WOL)
- 家庭網絡安全 (😂看了防火牆日志,才知道被 Hack 的頻率能有多高)
- 玩轉樹莓派
- 組建 Full Mesh 網絡
- 手機 PAD 遠端控制電腦
- ...
有了所謂的"家庭實驗室", 我的自身專業技能有了更多實驗機會和試煉場,對新的技術了解不再浮于表面;
有了所謂的"家庭實驗室", 即使兩地奔波,也能通過手機看到我們,以及小孩經曆的每一個點點滴滴,幸福萦繞心頭。..
理工男難得這麼矯情一下,此為前言。..
系列文章:
- 标簽 - HomeLab - 東風微鳴技術部落格 (ewhisper.cn)
Wake-on-LAN(WOL) 簡介
LAN 喚醒(WoL 或 WOL)是以太網或令牌環計算機網絡标準,允許通過網絡消息打開或喚醒計算機。
消息通常由在連接配接到同一區域網路的裝置上執行的程式發送到目标計算機。
以太網連接配接(包括家庭和工作網絡、無線資料網絡和 Internet 本身)都基于計算機之間發送的幀。 WoL 是使用一種特殊設計的稱為魔術包的幀來實作的,魔術包被發送到網絡中的所有計算機,其中包括要被喚醒的計算機。 魔術分組包含目的地計算機的 MAC 位址、内置在計算機中的每個網絡接口卡(“NIC”)或其它以太網裝置中的辨別号,其使得它能夠在網絡上被唯一地識别和尋址。 具有 LAN 喚醒功能的已關機或關閉的計算機将包含能夠在系統關機時以低功耗模式“偵聽”傳入資料包的網絡裝置。 如果接收到指向裝置 MAC 位址的魔術包,網卡會向計算機的電源或主機闆發出信号,以啟動系統喚醒,其方式與按下電源按鈕的方式相同。
魔術分組在資料鍊路層(OSI 模型中的第 2 層)上被發送,并且當被發送時,使用網絡廣播位址被廣播到給定網絡上的所有附接的裝置;不使用 IP 位址(OSI 模型中的第 3 層)。
由于 LAN 喚醒是基于廣播技術建構的,是以通常隻能在目前網絡子網内使用。 不過,也有一些例外情況,LAN 喚醒實際上可以在任何網絡上運維,隻要配置和硬體适當,包括通過網際網路進行遠端喚醒。
為了使 LAN 喚醒工作,網絡接口的某些部分需要保持打開狀态。這會消耗少量的待機功率,比正常工作功率少得多。 鍊路速度通常被降低到不浪費功率的最低可能速度(例如,千兆以太網 NIC 僅維持** 10 Mbit/s 的鍊路**)。
網絡喚醒 (WOL) 的前提條件
硬體: (幾乎現在的所有電腦都滿足)
- 電源:支援 ATX 2.01 标準
- 主機闆:支援 PCIE 2.2 标準
主機闆 BIOS:
- 啟用 PCIE 裝置喚醒(可能會有很多不同的名字,關鍵詞:"wake" "wol" "PCIE" "Power On" 等)
電腦電源設定和狀态:
- S3(一般是睡眠)
- S4(一般是休眠)
- S5(一般是關機)
配置得當後,主機闆在這些狀态下,網卡會處于待機 (standby) 狀态。可以随時被魔術包喚醒。
有線網卡配置(必須是有線網卡):
啟用如下配置:
-
允許此裝置喚醒計算機
-
隻允許幻資料包喚醒計算機
WOL 完整配置
BIOS 配置
這裡以 MSI B450 迫擊炮 主機闆為例,開機後按
DEL
鍵進入 BIOS 設定,BIOS 界面左上角有個 🔍 樣式的搜尋按鈕,直接搜尋關鍵詞 "PCIE" 即可找到:"PCIE 裝置喚醒" 選項,将其設定為 允許. 如下圖:
Windows 電源選項設定
⚠️注意:
适用于 windows 8.1 以上,win7 快速啟動選項不是預設啟用項。
進入 控制台 -> 電源選項 -> 系統設定:
關閉
啟用快速啟動(推薦)
, 如下圖:
另外提一句,休眠可以開啟,休眠狀态下是可以被喚醒的。
詳細說明如下:
📚Reference:
System Power States - Win32 apps | Microsoft Learn
快速啟動是一種使用休眠檔案來加快後續啟動速度的關機類型。
當使用快速啟動時,即使系統實際上已經屬于 S4 狀态,系統對使用者來說也好像發生了完全關機(S5)。 系統此時不會響應裝置喚醒。
📝 備注:
從 Windows 8 開始,當請求系統關機時,快速啟動是預設選項。
這也是為什麼建議關閉
啟用快速啟動(推薦)
一般情況下,我們都是可以從休眠狀态網絡喚醒裝置的,如果主機闆支援,甚至可以在 關機 (S5) 狀态網絡喚醒裝置。
具體說明如下:
📚Reference:
WOL 在軟關閉(S5)時不受 (windows) 正式支援。 但是,某些系統上的 BIOS 可能支援配置 NIC 以進行喚醒,即使該過程中不涉及 Windows。
這裡以 MSI B450 迫擊炮 主機闆為例,相關的設定如下:
啟用了以上選項後, 我的電腦可以直接在關機(S5) 狀态下被 WOL 喚醒. (供參考)
有線網卡配置
首先,最重要的📌📌📌, 一定要注意,先手動安裝或更新對應作業系統版本的有線網卡驅動 (win10 就下載下傳對應的 win10 網卡驅動,win11 就下載下傳對應的 win11 網卡驅動), 確定已成功安裝完整的官方驅動,而不是 window 自動安裝的驅動. windows 自動安裝的驅動可能無法實作 WOL 功能。
還是以我的 MSI B450 迫擊炮為例,在 MSI 官網下載下傳 PCIE 網卡驅動,驅動包如下圖:
這裡以 Realtek PCIe 系列為例,配置如下:
控制台 -> 網絡連接配接 -> 選擇對應的有線網卡, 右鍵 -> 屬性 -> 配置, 如下圖:
進入有線網卡配置 後,選擇進階, 開啟與喚醒有關的所有功能,關閉與環保節能有關的所有功能,示例如下:
接下來,進入電源管理 标簽頁,勾選:
- 允許計算機關閉此裝置以節約電源
- 允許此裝置喚醒計算機
- 隻允許幻資料包喚醒計算機
詳細說明如下:
Q: 為什麼勾選 隻允許幻資料包喚醒計算機?
A: 如不勾選,可能會被時不時誤喚醒
實戰 WOL
以上主機闆 BIOS 系統電源選項 網卡配置 都設定好之後,就可以進行 WOL 了。
WOL 用戶端前提
- 需要和被喚醒裝置在同一區域網路内
- 需要安裝 WOL Client 相關軟體(安卓,Linux, Windows 等版本都有)
- 需要知道被喚醒裝置的 MAC 位址(能知道 IP 位址更好,且 IP 位址固定更更好)
步驟
📝Notes:
這裡以 Linux 或類似(樹莓派或路由器) 和 安卓為例。
Linux 端實戰 WOL
安裝 WOL Client:
etherwake
(這裡也有好幾種 WOL Client, 這裡以這一款為例)
sudo apt install -y etherwake
安裝後,在被喚醒裝置處于休眠狀态下,執行喚醒:
etherwake -i eth0 -p 192.168.2.32 2C:F0:xx:xx:xx:5E
說明:
-
: 通過哪個 WOL Client 的網卡發送魔術包,可以通過 -i eth0
或 ifconfig
ip address
找到和被喚醒裝置在同一區域網路的網卡名稱,如下圖:
🔺這裡我的區域網路是
, 是以選擇:192.168.2.0/24
或 eth0
都可以wlan0
-
: 被喚醒裝置的 IP 位址-p 192.168.2.32
-
: 被喚醒裝置的 MAC 位址2C:F0:xx:xx:xx:5E
成功喚醒!
安卓端實戰 WOL
這裡推薦安裝:
WolOn
這款 WOL Client.
先輸入被喚醒裝置的相關資訊,如下:
🔺MAC 位址必填,其他非必填
儲存後,點選這一條,會出現搖晃🍺的過渡動畫,然後就可以成功喚醒,如下圖:
🎉🎉🎉
我的 WOL 用法
對于 Home Lab 來說,主要的用法都是這樣的場景:
- 人在外地
- 家裡高配桌上型電腦在休眠
- 希望通過網際網路 WOL 家裡的桌上型電腦
這裡主要有 2 種思路:
- 将家裡桌上型電腦的網絡喚醒端口映射到網際網路上
- 這樣直接通過 WOL Client 通路網際網路指定端口,WOL Client --網際網路--> 網際網路對應的 WOL 端口 ----> 相當于區域網路網關去喚醒指定裝置
- 但是有前提:有公網 IP
- 也有一定的劣勢:暴露在公網,不太安全
- 家裡放一台 Always On 的小裝置(如:軟路由,樹莓派,NAS 等), 再将人帶在外地的裝置(如手機或 pad) 和家裡的裝置組建一個 Full Mesh VPN 内網(或者家裡某一台可以内網穿透連接配接到也行)
- 通過 VPN 登入到 Always On 的小裝置上
- 再通過該裝置執行 WOL
- 這樣會更加安全。
我用的就是第二種,理由如下:
- 此前曾開放到公網上,被 Hack 的頻率太高了,吓到我了,我可不想成為殭屍電腦;
- 聯系電信營運商要了個公網 IPv4, 用了一段時間,突然被悄悄滴收回去了😂
- IPv6 吧,在外地的環境不可能永遠都有 IPv6 位址可以使用。
- 最後:安全,安全,還是安全!
總結
- 主機闆 BIOS
- Windows 系統電源選項
- 有線網卡配置