通过 SSH 进行 LAN 唤醒

通过 SSH 进行 LAN 唤醒

多年来,我已经在许多 Linux 设备上成功使用 LAN 唤醒功能。它运作良好。

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

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

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

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

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

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

答案1

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

# ethtool interface | grep Wake-on

# ethtool eth0 | grep Wake-on
    Supports Wake-on: pumbag
    Wake-on: d

根据ArchLinux 的 wiki:

唤醒值定义触发唤醒的活动:

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

如果您需要某种“传入 SSH 唤醒”,请尝试

# ethtool -s interface wol u

相关内容