Ubuntu 的网络堆栈在不断发展,关于为接口启用 LAN 唤醒的大多数先前信息都已过时(例如Ubuntu 维基百科)。
既然 Ubuntu 使用 Netplan 而不是/etc/network/interfaces
,那么如何在特定接口出现时自动启用 LAN 唤醒?
答案1
我通过在 /etc/netplan 中添加一个名为 /etc/netplan/50-wol.yaml 的文件来修复此问题。
文件内容为:(填写自己的mac地址)。
network:
version: 2
renderer: NetworkManager
ethernets:
enp2s0:
match:
macaddress: XX:XX:XX:XX:XX:XX
wakeonlan: true
dhcp4: yes
答案2
wiki 告诉我们ethtool -s <interface> wol g
当界面出现时我们需要运行。
尽管 Ubuntu 20.04ifupdown
下有脚本/etc/network/if-up.d
,但 Netplan 提供了不同的指导如何运行后续钩子脚本建议使用networkd-dispatcher
。
手册页networkd-dispatcher
没有解释如何检测哪个接口正在关闭,但是源代码显示已设置的几个环境变量,包括IFACE
。
因此,我们可以使用如下脚本来创建/etc/networkd-dispatcher/routable.d/50-wake-on-lan
(并创建它):chmod +x
#!/bin/sh -eu
case "$IFACE" in
enp60s0)
ethtool -s <interface> wol g
;;
esac
答案3
对我来说这篇文章真的很有帮助: https://forum.manjaro.org/t/troubles-with-setting-up-wol/24815/3
TLDR:执行sudo systemctl disable tlp
TLP 用于笔记本电脑等的电源管理。如果您想要能够远程启动机器,则不太可能需要系统上的 TLP。
执行上述命令后,WoL 变得持久,您不需要在每次重启后应用 netplan。