一.緣起
先說說為什么有這個想法,比如在游戲首發的時候,想遠程控制電腦開始下載;向遠程電腦查詢電腦 上的資料等等。作為一名IT行業的從業者,在生活和工作中需要電腦的地方很多,我們不能無時無刻把電腦帶在身邊,但是現在我們身邊無時無刻伴隨著兩樣東西:蜂窩網絡和手機。因為我的習慣不喜歡電腦長時間的開著,我不用我就關掉,而且我的電腦散熱風扇風比較大,我覺得長時間開著影響室內空氣質量,所以我就有了遠程控制電腦開機的需求,使用蜂窩網絡和手機來實現此需求便可以隨時隨地的控制。
這里需要說明的是,本文講的是遠程控制電腦開機,而非電腦的遠程桌面,遠程桌面已經有非常多的方案 teamviewer、向日葵、anydesk等等,不過我不喜歡用這些方式(其實比較喜歡 teamviewer,但是經常被提示商用),我的遠程桌面方式是搭建內網穿透(frp 內網穿透遠程桌面(windows 10)配置),然后直接使用自帶的遠程(PC),App 的話使用的是微軟開發的 “Microsoft 遠程桌面”。回到正題,下面我分享我的遠程控制電腦開機的實現過程。
二.解決方案一:Wake on LAN
Wake on LAN 簡稱 WOL,簡而言之就是可以通過網卡來喚醒電腦,現在的網卡基本上都是支持的。其原理為向網卡發送一個數據包,英文名:Magic Packet,中文:魔術包或幻包,網卡接收到以后便可以啟動電腦。
需要以下步驟來進行設置:
- 進入主板 BIOS 開啟 Wake on LAN 功能,這里需要去查詢自己的主板如何設置,一般在電源管理功能里面。
- 關閉主板節電設置,關閉后最明顯的特征是 USB 口關機后也帶電,主板燈關機后也常亮。因為需要網卡帶電,才能接受魔術包。
- 路由器DHCP靜態IP分配
- 進入 Windows 設備管理,設置網卡
電源管理:
網卡屬性:
設置好以后,重啟電腦,下載一個 WOL APP,填寫電腦 IP 和 mac 便可測試,我是 IOS 在 App Store 搜索 WOL 便可以搜到很多 APP
正常情況下,會測試成功,向電腦發送魔術包以后,電腦會立即開啟。
注意:如遇到電腦關機長時間以后 WOL 無法喚醒電腦,那么需要進入路由器設置 ARP 綁定,若路由器沒有相關功能,則需要 SSH 進入路由器,執行命令 arp -s ip地址 mac地址,需要注意的是此命令執行后,重啟路由器就失效了,有解決辦法,就是加入路由器開啟執行的腳本,這里不做詳細講述,因為不同的路由器ROM是有區別的。執行ARP綁定后就會解決這個問題(PS:這個問題困擾我很久了,還是同事給了這個解決辦法)。
1.關于 廣域網喚醒
若有公網 ip,那么直接設置端口轉發,轉發到電腦的 9 端口(一般都是)。沒有公網 ip 可以在局域網的某一持續運行的設備設置內網穿透,建議在路由器上設置,若是梅林等固件可以安裝現成的插件,我是小米路由器,進入SSH 裝了一個 frp 內網穿透,配置如下若有公網 ip,那么直接設置端口轉發,轉發到電腦的 9 端口(一般都是)。沒有公網 ip 可以在局域網的某一持續運行的設備設置內網穿透,建議在路由器上設置,若是梅林等固件可以安裝現成的插件,我是小米路由器,進入SSH 裝了一個 frp 內網穿透,配置如下
[common]
server_addr = <公網服務器ip>
server_port = <公網服務器 frp 端口>
authentication_method = token
token = <認證 token>
[遠程桌面] type = tcp
local_ip = <電腦局域網ip>
local_port = 3389
remote_port = <遠程桌面端口>
[WOL廣域網]
type = udp
local_ip = <電腦局域網ip>
local_port = 9
remote_port = <WL遠程端口>
2.魔術包
魔術包有一個標準的算法,網上有很多解釋算法的文章以及各種語言的代碼實現。
C#: https://github.com/nikeee/wake-on-lan
JAVA:https://www.cnblogs.com/heidsoft/p/4011800.html
三.解決方案二:AC Recovery
AC Recovery 又名 來電自動啟動(回復),指電腦一通電便可以自動啟動。此方法是最簡單的,不需要WOL各種設置,不需要主板支持 WOL,但是需要具備兩個條件:
1.主板具有來電啟動功能
2.智能插座(小米智能插座等等各種智能插座)
我這里使用的是小米智能插座,設置的步驟如下:
1.進入主板BIOS設置來電自動啟動功能
2.進入主板BIOS 關閉節電設置(經過我的實驗,主板若開啟節電無法正常來電啟動)
3.正確設置智能插座,接入米家APP,并連上主機插頭。
此時控制智能插座 斷電->通電 便可以實現來電自啟動,若發現斷電->通電無法啟動,則可以在中間加一個延時,等待主板完全斷電,我的設置如下:
四.解決方案三:開機卡
前兩種方案都是我親自實踐并且成功了的,這里第三種方案,我只是在某寶看到,并未實驗,此方法略微復雜一點。此方法是將獨立的開機卡接入主板 PCI-E 插槽,在轉接條線到齊上,在通過商家提供的APP來進行控制。這個需要一定的動手能力,想了解的同學可以去某寶搜一下。