如果我关闭 Ubuntu,局域网唤醒将不起作用

如果我关闭 Ubuntu,局域网唤醒将不起作用

我正在双启动 Ubuntu 18.04 和 Windows 10。如果我使用 Windows 关闭计算机,我可以使用 WOL 将其重新打开。但是,如果我使用 Ubuntu 关闭计算机,则使用 WOL 时计算机将无法重新打开。

有办法解决这个问题吗?


下列的这个答案我尝试了以下操作,但没有效果:

ignacio@ignacio-XPS-8930:~$ ifconfig 
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:cff:fea4:9a1e  prefixlen 64  scopeid 0x20<link>
        ether 02:42:0c:a4:9a:1e  txqueuelen 0  (Ethernet)
        RX packets 93  bytes 19417 (19.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 173  bytes 29457 (29.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.86.31  netmask 255.255.255.0  broadcast 192.168.86.255
        inet6 fe80::955b:12c8:20b9:7645  prefixlen 64  scopeid 0x20<link>
        ether d8:9e:f3:85:42:8a  txqueuelen 1000  (Ethernet)
        RX packets 2879  bytes 2068361 (2.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2313  bytes 515874 (515.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 355  bytes 27658 (27.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 355  bytes 27658 (27.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth76213c1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::5c2b:3aff:fea8:d68c  prefixlen 64  scopeid 0x20<link>
        ether 5e:2b:3a:a8:d6:8c  txqueuelen 0  (Ethernet)
        RX packets 93  bytes 20719 (20.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 214  bytes 34037 (34.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp3s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5c:ea:1d:4c:61:a7  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ignacio@ignacio-XPS-8930:~$ ifconfig enp4s0 | grep "HWaddr" | awk '{print $5}'
ignacio@ignacio-XPS-8930:~$ /sbin/ethtool -s enp4s0 wol g
Cannot get current wake-on-lan settings: Operation not permitted
  not setting wol

我也尝试使用 sudo:

ignacio@ignacio-XPS-8930:~/docker/greta$ sudo /sbin/ethtool -s enp4s0 wol g
[sudo] password for ignacio: 
Cannot get current wake-on-lan settings: Operation not supported
  not setting wol

答案1

我刚刚在将两台正确配置的机器升级到 18.04 后遇到了这个问题。我记得 Ubuntu 已经迁移到 netplan,并在 paulgj 的回答中找到了答案论坛这让我再次使用它。你可以尝试这个,如果现有的答案不起作用。

我通过添加 macaddress 匹配行使其工作,这是完整的 .yaml 文件:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      match:
        macaddress: 50:e5:49:b3:fc:97
      dhcp4: true
      wakeonlan: true

注意:您需要更改enp2s0并使用扩展程序50:e5:49:b3:fc:97保存它。我希望此配置不会禁用任何会在接下来的几周困扰我的东西。/etc/netplan/.yaml


编辑:对于桌面,您应该renderer: networkd用替换renderer: NetworkManager,然后运行sudo netplan apply​​。

答案2

这是一个老话题,但没有被接受的答案,我的问题也类似,只是它是一台双启动 MacOS 和 Ubuntu 18.04 的 Mac Mini;在 Mac 挂起时,我可以从 Windows 10 机器上 WOL;在 Ubuntu 挂起时什么也没有发生……

我也有:

marcelo@Ubuntu-Macmini:~$ sudo ethtool -s wlp3s0 wol g
[sudo] senha para marcelo: 
Cannot get current wake-on-lan settings: Operation not supported
  not setting wol

因此,我完成了所有步骤这个问题,更好地解释这里但它仍然不起作用;但我读过这个线和:

  1. 做了sudo lshw -C network

    *-network                 
       descrição: Ethernet interface
       produto: NetXtreme BCM57765 Gigabit Ethernet PCIe
       fabricante: ...
       nome lógico: enp2s0f0
       ... autonegotiation=on broadcast=yes ***driver=tg3***
    
  2. 在此之后,知道司机是tg3:

    sudo gedit /etc/default/acpi-support

    我改变了

    # Add modules to this list to leave them in the kernel over suspend/resume
    MODULES_WHITELIST=""
    

    MODULES_WHITELIST="tg3"
    

    重新启动网络服务后,它就可以正常工作了,但只有使用 Magic Packets 时才有效,这很酷;为了提供 Magic Packets,我使用了一个 Python 脚本,改编自这里;我说改编是因为这个脚本适用于 Python 2,而我的设置是 Python 3。希望这对某些人有帮助。

答案3

由于它在 Windows 中可以正常工作,因此您知道问题出在 Linux 操作系统中,因此解决方案是...视情况而定。无论哪种方式,您都需要知道网络接口的名称。运行以下命令:

ip a

具有 IPv4 地址的接口(不是环回接口)就是我们要找的接口。输出如下所示:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:f1:bb:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.12/24 brd 192.168.1.255 scope global dynamic ens160
       valid_lft 5919sec preferred_lft 5919sec
    inet6 fe80::20c:29ff:fef1:bbec/64 scope link
       valid_lft forever preferred_lft forever 

所以这个系统上的界面是ens160

网络管理器

请参阅此帖子:如何在 Ubuntu 16.04 中启用网络唤醒 (WOL)如果下面的方法不管用,还有另一种方法(我公然偷来的机车循环),这也许就是您所需要的。

如果您使用 Ubuntu 桌面 ISO 安装系统,那么您将使用 NetworkManager 来控制网络接口,并且您需要执行以下操作:

Systemd 是 Ubuntu 决定采用的方式,因此我们最好习惯它,并在每次系统启动时使用它来打开 WOL。创建并添加以下内容:/etc/systemd/system/[email protected]

[Unit]
Description=Wake-on-LAN for %i
Requires=network.target
After=network.target

[Service]
ExecStart=/sbin/ethtool -s %i wol g
Type=oneshot

[Install]
WantedBy=multi-user.target

接下来我们需要启用该服务在启动时运行:

sudo systemctl enable wol@enp3
sudo systemctl start wol@enp3

网络计划

如果你更有冒险精神,安装了 Ubuntu Server,那么你的界面将通过 systemd-networkd 进行控制,Ubuntu 已添加 Netplan.io 前端来帮助配置它。目录中将有一个 YAML 文件,/etc/netplan/格式为:0X-something.yaml,让我们看一下:

/etc/netplan/50-cloud.init.yaml

# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
  version: 2
  ethernets:
    ens160:
      dhcp4: true
  vlans:
    mgmt.10:
      id: 10
      link: ens160
      dhcp4: true
      dhcp6: false
    user.20:
      id: 20
      link: ens160
      dhcp4: true
      dhcp6: false

只需将“wakeonlan: true”添加到 ens160 部分即可。因此它看起来像这样:

...
network:
  version: 2
  ethernets:
    ens160:
      dhcp4: true
      wakeonlan: true
  vlans:
    mgmt.10:
...

这是一个 YAML 文件,它们对间距非常挑剔,因此请确保您添加的文本与该部分中的其他文本直接对齐。

现在我们需要生成、测试和应用新的配置(生成步骤不是完全必要的,但为了完整性我在这里将其包含进来):

sudo netplan generate
sudo netplan try

假设测试成功,如果没有成功,配置将恢复,而且你很可能输入了错误的格式,现在运行:

sudo netplan apply

答案4

@LiveWireBT 的回答对我有用。

https://askubuntu.com/a/1072862/874871

apply更改配置后,请不要忘记运行该命令。

$ sudo netplan apply

相关内容