一,什麼情況下需要遠程開機?
如果我們的服務器沒有部署在本地(實際上通常都是這樣的,我們會把服務器托管到IDC機房),
而且服務器在機房中不止一台,其中一台被關閉時,則我們可以遠程連接一台沒有關機的服務器上,
然後進行遠程開機.
二,遠程開機需要的軟件
它需要wakeonlan這個軟件,
從何處得到它?
它的官方站是:http://sourceforge.net/projects/wake-on-lan/
如果使用rpm包可以從這裡下載:http://dag.wieers.com/rpm/packages/wol/
如果使用fedora,則可以用yum命令安裝:
yum install wol
三,如何進行遠程開機?
先不要急著去關閉你的linux服務器,你首先要確定它是否支持遠程開機?
第一步:登錄到目標服務器,用ethtool這個命令打印出網卡的信息
[root@localhost lhd]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 32
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes
可以看到,ethtool 把網卡的信息全部列出,我們只關心其中的這兩項:
Supports Wake-on: pumbg
Wake-on: d
如果 wake-on 一項值為 d,表示禁用wake on lan
值為 g,表示啟用 wake on lan
因為此機器禁用了 wake on lan,所以用下面的命令來啟用它:
[root@localhost lhd]# ethtool -s eth0 wol g
再用 ethtool命令進行查看,會發現:
Wake-on: g
OK,目標機器的網卡已經支持了遠程開機,下面我們得到它的本地MAC地址:
[root@localhost lhd]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:03:0D:1D:1F:97
inet addr:192.168.6.101 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34470 errors:0 dropped:0 overruns:0 frame:0
TX packets:35377 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31559763 (30.0 MiB) TX bytes:5340032 (5.0 MiB)
Interrupt:5 Base address:0x2c00
把HWaddr 00:03:0D:1D:1F:97這一項記錄下來即可
現在你可以試著把目標機器關閉
第二步:開機
現在我們需要登錄到已安裝了wake on lan軟件的機器上,在上面執行開機命令:
wol 00:03:0D:1D:1F:97
稍後就會發現,目標機器已開機可以登錄了
四,多學一點:
1,ethtool 的 -s 參數是修改指定以太網設備的設置
2,wol的取值默認是d,含義是disable
修改後的值為g,含義是Wake on MagicPacket(tm)
它還有幾個取值,分別是:
p Wake on phy activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
如果有興趣,大家可以通過 man ethtool查看
3,當機器重啟後,eth0的設置又會回復到Wake-on: d 狀態,
這個問題怎麼解決?
兩個辦法:第一個,也是我們的慣性思維;
把/sbin/ethtool -s eth0 wol g 這條命令附加到/etc/rc.local這個文件中,
則下次開機後會自動執行
第二個: 編輯/etc/sysconfig/network-scripts/ifcfg-eth0
(eth0網卡的配置文件),添加上一行:
ETHTOOL_OPTS=”wol g”
4,網絡喚醒的局限性:
它只能在局域網中應用,而不能通過互聯網運行,為什麼?
因為機器關閉後,完全是靠網卡喚醒機器,此時的機器是關閉的,沒有操作系統運行,
也就談不上支持tcp/ip協議,當然也就不能通過互聯網運行了.
也就是說:如果我們在某個局域網中只有一台機器,就不能使用此功能了.
我們必須能登錄到局域網中的一台機器上,在此機器上運行 wake on lan 去喚醒目標機器
前提條件就是:目標機器和我們登錄的機器在同一局域網中
5,還有一點:被遠程開機的目標機器必須是插電的,沒插電源的機器也能開機只有電影中才會出現
下面簡單介紹一下linux下的wakeonlan 的用法:
假設遠程要喚醒的計算機IP:12.34.56.78,Mac地址:01:02:03:04:05:06
$ wakeonlan -i 12.34.56.78 01:02:03:04:05:06