需先用ethtool确认网卡支持eee:sudo ethtool --show-eee eth0输出含“supported: on”且“eee status: disabled”才可配置,若显示“not supported”,则因固件、驱动或内核过旧(如老intel i210+旧内核)不支持。

检查网卡是否支持EEE和WOL
不查直接设,大概率白忙。先确认硬件和驱动层面能不能撑住:ethtool 是唯一靠谱入口。
-
sudo ethtool --show-eee eth0:输出含Supported: on且EEE status: disabled才值得继续;若显示not supported,说明网卡固件、驱动或内核版本太老(比如老 Intel I210 + kernel -
sudo ethtool eth0 | grep "Wake-on":必须看到Wake-on: g,d表示禁用,g才代表支持魔术包唤醒;有些网卡(如部分 Realtek RTL8168)即使显示g,实际关机后仍无法响应,得靠 BIOS/UEFI 中的ErP Ready或Deep Sleep设置配合
启用EEE节能但不拖慢网络延迟
EEE不是开就完事——它会在空闲时插入低功耗状态,但链路重激活有微秒级延迟。对 NFS、iSCSI 或低延迟金融应用,这可能引发超时或重传。
-
sudo ethtool --set-eee eth0 eee on tx-lpi on:这是最常用组合;rx-lpi on多数网卡不支持,强行加会报错Operation not supported - 别碰
advertise参数:像--set-eee eth0 advertise 0x00000020这类手动协商位设置,极易导致链路反复 down/up,尤其在对接老交换机时 - 验证是否真生效:运行
sudo ethtool --show-eee eth0后,持续 ping 同网段主机(ping -f -c 100 192.168.1.1),同时用另一终端跑watch -n1 'cat /sys/class/net/eth0/device/power/runtime_status';若看到suspended频繁切换,且 ping 没明显抖动(std-dev ),才算稳
让WOL在关机后真正管用
很多人设完 ethtool -s eth0 wol g 就以为成了,结果关机后发包没反应——问题几乎全出在电源路径上。
- BIOS/UEFI 必须开启三项:
Wake on LAN、PCIe Power Management(设为Enabled)、ErP Ready(设为Disabled;开反而会切断网卡待机电压) - 系统级陷阱:
systemd的logind.conf默认设了HandleLidSwitch= suspend,若你合盖休眠再关机,网卡可能被提前断电;改/etc/systemd/logind.conf中HandleLidSwitch= ignore并systemctl restart systemd-logind - 关机前务必执行:
sudo systemctl hibernate或sudo poweroff,别用sudo reboot测试——重启不会触发 WOL 状态保持逻辑
持久化设置绕过发行版差异
写 /etc/network/interfaces 或 ifcfg- 文件,不如统一走 systemd service。不同发行版的网络服务管理方式太分裂,service 方式最可控。
- 新建
/etc/systemd/system/enable-net-power.service:
[Unit] Description=Enable EEE and WOL on eth0 After=network.target [Service] Type=oneshot ExecStart=/usr/bin/ethtool --set-eee eth0 eee on tx-lpi on ExecStart=/usr/bin/ethtool -s eth0 wol g RemainAfterExit=yes [Install] WantedBy=multi-user.target
- 启用:
sudo systemctl daemon-reload && sudo systemctl enable --now enable-net-power.service - 注意:
ExecStart不能合并成一行(如用&&),systemd 不认 shell 语法;每个命令必须独立ExecStart= - 若网卡名是
enp3s0而非eth0,别硬改 service 文件——用systemd-networkd的.link文件做 consistent naming 更稳妥
真正难的不是命令怎么敲,而是 BIOS 设置、固件版本、交换机兼容性这三层黑盒。哪怕 ethtool 显示一切正常,关机后网卡 PHY 层没电压,WOL 和 EEE 都是纸面功能。











