概要
- Ubuntuサーバー のTime Machineバックアップ用ホームサーバーを、自動スリープ&オンデマンド起動対応にカスタマイズ
- Wake-on-LAN(WOL) とARP Stand-inで、ネットワーク経由の自動起動を実現
- Raspberry Pi などの常時稼働デバイスを活用し、ARP応答やmDNSサービスを代行
- 省電力化 と利便性を両立し、手動操作不要のバックアップ運用を実現
- 設定手順・注意点 を具体的に解説
Ubuntuホームサーバーの自動スリープ&オンデマンド起動構成
- 高消費電力PCサーバー (例:HP ProDesk 600 G3 SFF、Intel I219-LM NIC)を Ubuntu Linux で運用
- 常時稼働の低消費電力デバイス (例:Raspberry Pi、Ubuntu Linux)を同一ネットワークに配置
- ネットワークサービス (SSH、AFP、Time Machineバックアップ等)を利用
- サーバーはアイドル時に自動スリープ、必要時はネットワーク経由で自動復帰
- Wake-on-LAN(WOL) は ユニキャストパケット 対応NICが必須
サーバー側の設定
- Wake-on-LAN(WOL) を ユニキャストパケット で有効化し、永続化
sudo ethtool -s eno1 wol ug/etc/networkd-dispatcher/configuring.d/wolスクリプト作成・実行権付与
- アイドル検知&自動スリープスクリプト をcronで定期実行
- SSHログインユーザー数・AFP接続数でアイドル判定
- アイドル時のみ
systemctl suspendでRAMスリープ - 例:
/home/ubuntu/auto-sleep.sh
- IPv6無効化 (ARP利用のため)
/etc/default/grub編集:GRUB_CMDLINE_LINUX="ipv6.disable=1"sudo update-grub後、再起動
- ネットワークサービスのスリープ前停止 (不要な復帰防止、例:Netatalk)
netatalk-sleep.serviceをsystemdで作成・有効化
常時稼働デバイス側の設定
- ARP Stand-in (Rubyスクリプト等)で、スリープ中サーバーのARPリクエストに代理応答
- Avahi で、サーバーのmDNSサービス(例:_afpovertcp._tcp)をスリープ中もアナウンス
avahi-publish.serviceをsystemdで作成・有効化
注意点・要件
- NICがユニキャストWOL対応 必須
- 不要なパケット送信で意図しない復帰 が発生しないよう、ネットワーク監視・設定に注意
- ARPオフロード はLinuxドライバ未対応の場合が多い(Windowsは対応)
- ARPキャッシュ切れ問題 はARP Stand-inで解決
サーバーアイドル検知・自動スリープ実装
- アイドル判定基準 :SSHログインユーザー数、AFPポート(548)接続数
whoコマンドでログイン数取得lsof -i:548でAFP接続数取得
- cronジョブ で10分毎にスクリプト実行、アイドル時のみRAMスリープ
- circadian 等の高度なツールも検討可だが、シンプルなbashスクリプトで十分
Wake-on-LANとARPキャッシュ問題
- Wake-on-LAN(WOL) は通常「マジックパケット」で復帰
- ユニキャストWOL で通常パケットによる復帰も可能(NIC対応必須)
- ARPキャッシュ切れ でサーバーMACアドレスが解決できず、パケット未送信→復帰不能問題発生
- ARPオフロード (NICがスリープ中もARP応答)はLinux非対応が多い
ARP Stand-inによる解決策
- ARP Stand-in は、常時稼働デバイス(例:Raspberry Pi)がスリープ中サーバーのIP/MACに代理応答
- クライアントは通常通りサーバーにアクセス可能 となり、ARP解決→パケット送信→WOLで復帰
- mDNS(Avahi) 併用でTime Machine等のサービス検出も維持
まとめ・応用ポイント
- 完全自動のバックアップ運用 と 省電力化 を両立
- LinuxサーバーのWOL運用 にはARP Stand-in等の補助が必須
- Raspberry Pi等の活用 で、より高度なホームラボ構築が可能
- ネットワーク機器の機能・Linuxカーネルの制限 に留意し、運用設計を行うこと