如何在 Ubuntu 20.04 上自动为网络接口启用局域网唤醒?

如何在 Ubuntu 20.04 上自动为网络接口启用局域网唤醒?

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。

相关内容