はじめに
こんにちは。元現場作業員のひよこです。
自宅で安くサーバー構築の経験を積みたいと思っていたところ、眠っていた古いデスクトップPCを思い出し、これを使ってproxmoxでホームラボを構築することに。
それは…サーバーの置き場が狭すぎるということ。
みてください。階段の上です。
「こんな狭いとこで作業できるか!!」
「電源をつけるのもひと苦労だぞ!!」
というもう1人の僕の声が聞こえてきます。
てなワケで、本記事は
遠隔での電源起動「Wake-on-LANの設定」について書き綴っていきます。
単独でも読めますが、一応続き物のパート3となっております。
パート1(VentoyによるインストーラUSBの作成)
パート2(Proxmoxインストール)
サーバーとして使用するPCのスペックはこちらです。
| 項目 | スペック |
|---|---|
| 機種 | HP Pavilion Wave 600-a305jp |
| CPU | Core i5-7400T |
| メモリ | 16GB |
| ストレージ | 512GB SSD + 2TB HDD |
ヘッドレス運用をする理由
冒頭にも書きましたが、
サーバーPCを設置している場所が狭く、
普段PC作業する部屋が別(3階)なので、
毎回モニターとキーボードを狭い階段の上に繋いでサーバーを操作するのは現実的ではありません。
熱もこもりそうな場所だし、電気代もかかるので、
サーバーの常時稼働も現状ではしたくありません。
そこで、以下のような運用を目指すことにしました。
- 普段はモニター・キーボードを繋がず、電源も切っておく
- 使いたいときだけ、別の部屋のノートPCからWake-on-LANでリモート起動
- 操作はノートPCのブラウザ経由で完結させる
- モニターを外した後は、HDMIポートにダミープラグを挿しておく(モニターが接続されていると誤認識させ、画面出力周りの不具合を防ぐため)
リモートアクセスの動作確認
Wake-on-LANの設定に入る前に、まずは通常通り起動した状態で、別室のノートPCからWeb UIにアクセスできるかを確認しました。
- ノートPCのブラウザで
https://192.168.1.XXX:8006にアクセス - 自己署名証明書の警告が出るので、「詳細設定」→「アクセスする(安全ではありません)」で進む
-
rootユーザーとパスワードでログイン
ちなみに、この警告を無視して良い理由ですが、
Proxmoxは自己署名証明書(自前発行の証明書)を使っているからだそうです。
アクセス先は自宅LAN内の自分のサーバーなので、「詳細設定」→「アクセスする」で進んで問題ありません。
ログインを確認できたので、いよいよWake-on-LANの設定に入ります。
Wake-on-LANの準備
ツールの導入
Windowsのノートパソコンから起動パケットを送るために、WakeMeOnLanというフリーソフト(NirSoft製)を導入しました。
公式サイトのページには、目立つ位置に「ダウンロード」と書かれた青いボタンがあるのですが、これは別ソフトへの誘導広告でした。
本物のダウンロードリンクは、ページの下の方に地味なテキストリンクとして存在していました。危うく誘導広告をクリックしかけたので、同じように探している方は注意してください。
PCの登録
-
WakeMeOnLan.exeを起動 - メニューの「編集」→「新規」を選択
- 以下を入力
- IP Address:
192.168.1.XXX - MAC Address:Proxmoxインストール時のNetwork Configuration画面に表示されていたものを使用(もしくは、Proxmoxで
ip -aコマンドで調べる) - Computer Name:任意の名前(
proxmoxなど)
- IP Address:
-
OKで保存
この矢印のところにMacアドレスが載ってます。(ip -aコマンド)
起動しない…
プロックスモックスを選択し、
Statusの「off」と書いてるところを右クリック→「Wake Up Selected Computers」を実行してみました。
が、しばらく待ってもデスクトップPCの電源ランプが点きませんでした。
念のため、近くに行って起動音なども確認しましたが、やはり電源が入っていませんでした。
原因調査
BIOS側の設定を再確認
前回の記事でBIOSの「S4/S5ウェイク オンLAN」を有効化していたはずなので、念のため再度BIOSに入って確認しましたが、設定は「有効」のままでした。BIOS側の問題ではなさそうです。
OS(Linux)側を疑う
BIOSが正しく設定されているにもかかわらず動かない場合、OS側でその機能が無効化されているのかも…。
という事で、Proxmoxにログインし、有線ネットワークインターフェースの状態を確認できる ethtool というコマンドで調べてみました。
ethtool nic0
ethtool は、有線LANの詳細情報や設定を確認・変更できるLinuxのコマンドです。
実行すると、以下のような出力が確認できました(一部抜粋)。
Supports Wake-on: pumbg
Wake-on: d
この2行の意味を調べたところ、次のようなことが分かりました。
-
Supports Wake-on: pumbgは、このNICが対応している機能の一覧を示しているだけで、現在の設定を表しているわけではありません -
Wake-on: dのdはdisabled(無効)の意味でした
つまり、BIOSでは有効にしていても、Linuxのドライバがネットワークカードを初期化する際に、Wake-on-LAN機能自体を無効な状態で起動していたことが原因でした。
一時的な解決
Wake-on: g(g = Magic Packetによる起動、Wake-on-LANの標準的な方式)に変更するため、以下のコマンドを実行しました。
ethtool -s nic0 wol g
-
-sは「設定を変更する(set)」ことを示すオプション -
wol gで、Wake-onの方式をg(Magic Packet)に指定
実行後、再度 ethtool nic0 で確認すると、無事 Wake-on: d(無効)からWake-on: g に変わっていました。
恒久化が必要な理由
ここで一度、WakeMeOnLanから起動を試すと、今度は無事に電源が入りました。
WAKE-ON-LAN成功です!
しかし、このままでは安心できません。
今回変更した設定はあくまで一時的なもので、PCをシャットダウンしたり再起動したりすると、ネットワークドライバが再度初期化される際に、また d(無効)の状態に戻ってしまうかもしれないとのこと。
そのため、PCが起動するたびに自動でこの設定を有効化してくれる仕組みを組み込む必要がありました。
恒久化の実装
Proxmox(Debianベース)のネットワーク設定は /etc/network/interfaces というファイルで管理されています。
catで中身を確認すると、以下のようになっていました。
auto lo
iface lo inet loopback
iface nic0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.11.XXX/24
gateway 192.168.11.1
bridge-ports nic0
bridge-stp off
bridge-fd 0
iface nic1 inet manual
source /etc/network/interfaces.d/*
この iface nic0 inet manual の行の直後に、pre-up という設定を追記しました。
pre-up は、そのインターフェースが起動する直前に、指定したコマンドを自動的に実行してくれる仕組みです。これを使えば、PCが起動するたびに毎回自動で ethtool コマンドを叩いてくれることになります。
以下のコマンドで、該当行の直後に1行追記しました。
sed -i '/iface nic0 inet manual/a\ pre-up ethtool -s nic0 wol g' /etc/network/interfaces
追記後、ファイルの中身を確認すると、以下のように反映されていました。
iface nic0 inet manual
pre-up ethtool -s nic0 wol g
最終テスト
設定を反映させた状態で、改めて一連の流れを確認しました。
- Proxmoxをシャットダウン(
shutdown now) - 電源ランプが消えたことを確認
- ノートPCから、WakeMeOnLanでproxmoxを右クリックし「Wake Up Selected Computers」を実行
- デスクトップPCの電源ランプを確認 → 点灯
- ノートPCのブラウザで
https://192.168.11.XXX:8006にアクセス → 正常にログイン画面が表示
これで、シャットダウン後もリモートから起動できることが確認できました。
学び・まとめ
- BIOSとOSは別々のレイヤーの設定であるということを、身をもって実感しました。「BIOSで有効にしたから大丈夫」と思い込まず、OS側の状態も別途確認する視点が必要だと学びました
- コマンドを打つときに、その場しのぎで動かすだけでなく、「このコマンドは何をしているのか」「このオプションは何を意味するのか」を一つずつ調べる癖をつけることで、単なる作業ログではなく、きちんとした理解につながると感じました
-
pre-upのような「起動時に自動実行する」仕組みは、今後別の設定を自動化したいときにも応用できそうです
おわりに
これで、Proxmoxのインストールからリモートでの起動確認まで、一通りの基盤が整いました。次回以降は、実際にVM(仮想サーバー)を作成し、Ubuntu ServerやWindows Serverを動かしていく話を書いていく予定です。よければ引き続きお付き合いください。
最後まで読んで頂きありがとうございました!







