通过 SSH 的局域网唤醒

Mar*_*ark 13 linux ssh wake-on-lan

多年来,我一直在为我的许多 Linux 设备成功地使用 Wake-on-LAN。它运作良好。

不过,我家里也有一台 Mac Mini。我注意到它进入睡眠状态并且有两个不同的属性,与我在睡眠时拥有的任何 Linux 机器分开:

  1. 它仍然响应网络上的 ping。

  2. 它将在传入ssh连接时自动唤醒,无需 LAN 唤醒。

这第二个属性最终非常好:它在不使用时自动进入睡眠状态并节省电量,并且当我想通过 ssh 进入它时不需要任何额外的考虑来打开电源。它只是自动唤醒。在我注销后,15 分钟后它会再次进入睡眠状态。

我的假设是这是因为 Apple 控制着硬件和软件堆栈。因此,虽然全行业的 Wake-on-LAN 是一种基于魔术数据包的网络设备功能(不需要操作系统交互),但 Mac 的神奇“LAN 唤醒并且仍然响应 ping”是因为它们实际上并没有使整个操作系统进入睡眠状态和/或有一个单独的网络堆栈仍在睡眠模式下运行。但这只是一个猜测。

我很好奇是否有人在 Linux 机器上见过或实现了这种“Wake-on-incoming-SSH”?或者这种特殊的魔法是否只能在 Apple 设备上找到,它们可以通过软件控制硬件,并且可以以其他行业无法做到的方式做到这一点?

use*_*089 7

ethtools 将帮助您,但硬件必须满足您的需求。

# ethtool interface | grep Wake-on

# ethtool eth0 | grep Wake-on
    Supports Wake-on: pumbag
    Wake-on: d
Run Code Online (Sandbox Code Playgroud)

根据ArchLinux 的 wiki

Wake-on 值定义了哪些活动会触发唤醒:

  • d(禁用),
  • p(物理层活动),
  • u(单播活动),
  • m(多播活动),
  • b(广播活动),
  • a(ARP 活动),以及
  • g(魔术包活动)。

如果您需要某种“Wake-on-incoming-SSH”,请尝试

# ethtool -s interface wol u
Run Code Online (Sandbox Code Playgroud)

你好