遠端喚醒(Wake-on-LAN)
遠端喚醒 使用 Magic Packet 啟動已關機或休眠的區域網路裝置。fn-knock 可以直接向本機所在區域網路廣播,也可以透過另一台 fn-knock 的內建 Relay 跨網路廣播;已登入使用者還可以從閘道傳送門開啟精簡喚醒頁面。
Wake-on-LAN 只能發出喚醒訊號,不能取代裝置本身的電源管理。目標主機板、網路卡、韌體與作業系統必須已啟用 WOL,而且裝置關機後仍需保留網路卡供電。
開啟功能
在 系統設定 → 功能 → 遠端喚醒 開啟功能。儲存後會顯示 遠端喚醒 側邊欄入口,並啟動裝置上線偵測、內建 Relay 與已設定的第三方平台連線。關閉開關會停止這些執行工作並隱藏入口,但不會刪除裝置、Relay 或第三方平台設定。
建議先在同一區域網路完成一台裝置的直接喚醒,再設定跨網段或第三方平台。這樣可以先排除目標裝置本身未啟用 WOL 的問題。
新增本機裝置
進入 遠端喚醒 → 裝置,可手動新增,也可以使用 一鍵探索:
- 預設掃描 fn-knock 自動識別的直連 IPv4 網段;需要指定範圍時展開掃描設定,填寫一個或多個 CIDR。
- 掃描只顯示確實回應且可從鄰居表解析出 MAC 位址的上線裝置。休眠、禁止 ICMP 或已從交換器鄰居表逾時移除的裝置可能不會出現。
- 選取裝置並確認名稱後批次新增。探索流程也會填入裝置 IP 與對應網段的定向廣播位址。
手動新增時的主要欄位如下:
| 欄位 | 作用 |
|---|---|
名稱 | 顯示於管理頁、傳送門與事件記錄的裝置名稱 |
MAC 位址 | Magic Packet 的目標;儲存後統一為大寫冒號格式 |
裝置 IP 位址 | 用於上線偵測,不是傳送 Magic Packet 的唯一依據 |
喚醒路徑 | 本機裝置選擇直接廣播;其他網路的裝置選擇已配對 Relay |
廣播位址 | 本機直接喚醒時使用;留空則嘗試向偵測到的本機網路卡廣播 |
啟用 | 停用後保留設定,但不能從管理頁、傳送門或第三方平台觸發喚醒 |
按下 喚醒 只代表廣播已提交,不代表裝置一定成功開機。同一裝置的喚醒要求有短暫冷卻時間,連續點擊不會持續傳送封包。
如何判斷上線狀態
啟用的裝置大約每分鐘偵測一次。新增或編輯裝置後會立即觸發偵測;送出喚醒後還會在短暫等待後重新檢查兩次,因此狀態不會在按下按鈕的瞬間變成上線。
上線:探測收到回應,而且回應位址與目標 MAC 一致;離線:探測流程完成,但沒有找到目標裝置;待偵測:尚未檢查,或探測逾時、Relay 無法使用、位址無法確認。
裝置 IP 因 DHCP 變更時,fn-knock 可以根據鄰居表更新觀察到的位址。不要把 待偵測 直接解讀為裝置一定關機;容器網路、ICMP 原則、跨 VLAN 路由與系統權限都可能讓探測結果不確定。
從閘道傳送門喚醒
開啟 WOL 後,系統設定 → 閘道 → 傳送門 會出現 顯示遠端喚醒快速入口,預設開啟。也可以從 遠端喚醒 頁面右上角的設定修改。已登入使用者點擊入口後會開啟內建 /__wol__ 頁面,只能看到已啟用裝置的名稱與簡化上線狀態,不會取得 MAC、裝置 IP、廣播位址、Relay 或內部錯誤詳情。
這個入口同時要求:
- WOL 功能已開啟;
- 傳送門允許顯示 WOL;
- 瀏覽器持有仍有效的登入工作階段;
- 登入憑據具有內建 WOL 頁面的服務範圍。
使用 全部範圍 的憑據會自動包含此入口;使用 自訂範圍 時,需要在 驗證設定 → 權限 中勾選 內建遠端喚醒頁面。隱藏傳送門快速入口不會刪除裝置,也不會影響管理員、Relay 或第三方平台觸發,但會禁止透過公開驗證 API 開啟與操作該內建頁面。
跨網路 Relay
當目標裝置與目前 fn-knock 不在同一廣播網域時,也在目標網路部署一台 fn-knock,並依下列順序配對:
- 在控制端進入
遠端喚醒 → 跨網段,選擇新增遠端網路,填寫可連到目標網路 fn-knock 的 IP。預設 UDP 連接埠為40009。 - 儲存後立即複製以
FNW1.開頭的一次性配對碼。 - 在目標網路的 fn-knock 開啟
遠端喚醒 → 跨網段接收,貼上配對碼並啟用。 - 回到控制端執行
測試連線,再新增目標裝置並將喚醒路徑指向這個 Relay。
兩台 fn-knock 之間必須存在可路由的 UDP 鏈路,可透過站點 VPN、受控連接埠轉送或其他可信網路實現。路由器與主機防火牆需放行 Relay 的 UDP 連接埠;Docker 還要明確發布 UDP 連接埠,並確保容器能向目標 LAN 傳送廣播。
配對碼包含預先共用金鑰,只應透過可信通道傳遞。Relay 要求與 ACK 會進行簽章、時間窗與重放檢查;允許的來源 CIDR 可進一步限制控制端位址,但不能取代 PSK。重新產生配對碼後舊金鑰會立即失效,目標端必須重新貼上新碼。兩端系統時鐘差距過大時,Relay 會拒絕要求。
進階設定中的監聽位址、廣播目標與來源 CIDR,只應在自動偵測不符合 VLAN、容器或多網路卡拓撲時修改。廣播目標至少保留一項,通常使用目標網段的定向廣播位址與 UDP 9 連接埠。
點燈科技與巴法雲
編輯裝置,在 第三方平台串接 中選擇一個提供者。每台裝置只能啟用一個平台,連線狀態會顯示為連線中、已連線、重新連線中、缺少憑據或異常。
點燈科技(Blinker)
在點燈 App 建立獨立網路裝置,將裝置金鑰填入 fn-knock。啟用 綁定 switch 元件 後:
on會觸發喚醒;off只回覆目前上線狀態,不會遠端關機;- 狀態查詢會回傳 fn-knock 最近一次偵測到的上線狀態。
巴法雲(Bemfa)
填寫巴法雲私鑰與訂閱主題。主題只允許字母、數字和底線;需要被語音平台識別時,請依巴法雲約定使用以 001 或 006 結尾的主題。
- 收到
on會觸發喚醒; - 收到
off不會關機,只會向{主題}/up發布目前狀態; - 上線偵測狀態變更後,也會向上行主題同步
on或off。
串接米家與小愛同學
完成點燈科技或巴法雲設定,並確認裝置已經連線後:
- 開啟米家 App,進入
我的 → 連接第三方平台。 - 搜尋
巴法或點燈,選擇與 fn-knock 目前裝置設定相同的平台,並依提示新增。 - 完成帳號授權並同步裝置,即可在米家 App 中觸發喚醒,或透過小愛同學使用「開啟」「開機」等指令喚醒裝置。
米家與小愛同學會透過所選平台傳送控制指令。「開啟」會對應為 on 並觸發 WOL;「關閉」不會遠端關閉目標裝置,只會依前述平台規則回傳或同步目前狀態。
兩種串接都需要 fn-knock 主動存取提供者的 HTTPS 與 MQTT TLS 服務。不要公開裝置金鑰、私鑰、主題或包含它們的螢幕截圖。平台命令會略過閘道傳送門頁面,因此只應把平台帳號與裝置授權交給可信使用者。
事件、備份與移轉
每次喚醒完成都會寫入 遠端喚醒完成 事件,記錄目標、投遞方式、來源(管理員、傳送門、點燈科技或巴法雲)、結果與延遲,可在事件中心建立通知規則。事件表示廣播流程的結果,不等於裝置已經啟動;應搭配後續上線狀態判斷。
裝置、Relay 與非敏感串接設定屬於應用程式設定。Relay PSK、點燈裝置金鑰與巴法雲私鑰儲存在目前安裝綁定的加密憑據目錄,不包含在 .knock 應用程式備份中。移轉或還原後,應重新配對 Relay、重新填寫第三方憑據,並驗證廣播位址、裝置 IP、UDP 連接埠與防火牆是否仍適用於新環境。
疑難排解順序
- 在目標裝置 BIOS/UEFI、網路卡驅動程式與作業系統中確認 WOL 已開啟,並先使用同一 LAN 的其他工具測試。
- 檢查 MAC 是否正確;裝置完全關機後確認網路連接埠仍亮燈。
- 本機直連時檢查定向廣播位址。Docker 優先確認網路模式、UDP 廣播可達性與主機防火牆。
- 跨網路時先測試 Relay;檢查 UDP
40009(或自訂連接埠)、路由、來源 CIDR、兩端時鐘與重新配對狀態。 - 廣播成功但裝置未啟動時,問題通常在目標裝置、交換器或廣播路徑,不要只重複點擊喚醒。
- 狀態一直待偵測時,確認裝置 IP、ICMP、鄰居表、跨 VLAN 路由或 Relay 狀態探測是否可用。
- 傳送門沒有入口時,檢查功能開關、
顯示遠端喚醒快速入口與憑據服務範圍。 - 第三方平台無回應時,查看連線狀態與最近錯誤,確認對外 HTTPS / MQTT TLS、憑據與主題,再重新儲存裝置。
