Proxmoxで WOL(Wake-on-LAN)
WindowsのVMWareでサーバ運用していたPCを、Proxmox へ移行したのですが不用意にシャットダウンしてしまい Wake On Lan(以下 WOL)で起動できなかったときのメモです。
すっかり忘れていました。WOL を使用するためには、以下が必要です。
・BIOSによる WOL の 有効化
・OS側による WOL の 有効化
特に今回は、使用してたPCのOSを Windows から Linux に変更したこともあり、設定するのをすっかり失念していました。
WOL(Wake On Lan) とは
ネットワーク経由(物理)で起動したいマシンに "マジックパケット" を送信することで、そのマシンの電源をONにする機能です。特にサーバ機器の場合、遠隔地もしくは目に見えない場所においてあることもあるため電源が落ちた場合、立ち上げに苦労するのためこの WOL を有効化する意味があります。
WOL(Wake On Lan) を使えるLANポート
USB-LANでも使用することができるみたいですが、ハードウエアに付属のLANポートもしくはPCIに直刺ししたLANポートが良いと思います。
NIC の MACアドレス
ip a
コマンドを実行してNIC の MACアドレスを確認します。仮想マシンを複数作成している場合、かなり情報量が多く表示されますが 大概先頭のほうに「enpxxxx」と表示されているのが知りたいNICのデバイス名とMACアドレスになります。
# ip a
2: enp1s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000
link/ether ee:4f:ee:e8:ee:92 brd ff:ff:ff:ff:ff:ff
上記から判ることは
デバイス名:enp1s0f1
MACアドレス:ee:4f:ee:e8:ee:92
NIC が WOLに対応しているか
冒頭でもありましたように LANポート(NIC) が WOL(Wake On Lan) が使用可能か否かを確認します。そのために ethtool
をインストールします。
# apt install ethtool
先ほど調べたNICのドライバ名を指定してみます。
# ethtool enp1s0f1 | grep -i wake
結果として以下となります。注目して欲しいのは、「Wake-on」が 'g'(有効) となっていること。以下の例では 'd'(無効) となっています。
Supports Wake-on: pumbg
Wake-on: d
WOLを有効にする、そして半永久的にw
厄介なのが「'g'(有効)が有効化されるのは次回起動時のみ、次々回以降はWOLが無効になります。」という仕様らしい。ですので半永久的に'g'(有効)に設定します。
まず。 'g'(有効)にします。※現在の値が 'g'(有効) でも構わずやります。
# ethtool -s enp1s0f1 wol g
結果は・・・
# ethtool enp1s0f1 | grep -i wake
Supports Wake-on: pumbg
Wake-on: g
crontabに登録します。これで毎回実行されるようになります。
# crontab -e
・
・
・
@reboot /usr/sbin/ethtool -s enp1s0f1 wol g
お試しで電源OFF,,WOL で・・・・。起動!!
WOLツール
Linux ですと wakeonlan
コマンドを利用できます。Windowsではツールがありそうなのでそれを使用するのもいいかもしれませんね
・nWOL: Wake on LANを使った遠隔PC起動管理ツール
・マジックパケットとは?PowerShellでWakeOnLanを起動するコマンドの作成方法
参考にさせて頂いたサイト様
・ProxmoxでのWOL(Wake On Lan)起動で個人的につまずいたところ個人メモ
・Enable Wake On LAN on Proxmox/Debian