电脑休眠状态能下载东西吗(家庭电脑的网络唤醒)

大家好,关于电脑休眠状态能下载东西吗很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于家庭电脑的网络唤醒的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

家里有个配置可观的台式机,但苦于噪声和耗电,基本处于关机状态。这个对于偶尔需要远程登陆该机器的需求就不太可能满足,更不谈远程控制了。为此探究了一下电脑的远程唤醒功能,并且给家里的台式机配置了该功能,从此无论何时何地,只要有个轻终端和网络就能如同在家一样折腾这个工作站了。

介绍

家里有个自己DIY组装的台式机,最初对它的设想是既能充当让我折腾的工作站也满足我娱乐的平台。为此给它安装了双系统,Ubuntu是它的默认系统,也是我常用的工作环境;Win10是另一个系统,偶尔用它来打打游戏。一开始想将它当做服务器一直开机,但后来直接放弃了。原因一方面是运行时水冷风扇还有有声的,特别是夜深人静的时候;另一方面是一天大部分时间都在公司上班,不可能比较高频的操作家庭电脑,比较浪费电。所以家里的电脑基本就是下班回来会捣鼓捣鼓,而且还是通过公司提供的Mac电脑局域网远程登陆,毕竟台式机开机登陆也挺耗时的。最近突发奇想的搜索了远程开机的信息,想以此来达到想用就开机,不用就自动休眠或手动关机的目的。没想到还真有这骚操作,学名叫远程唤醒或网络唤醒,英文叫Wake-on-LAN。

基本概念

在实践网络唤醒之前,我们需要了解一下网络唤醒的原理以及唤醒方法。

网络唤醒

电脑处在关机(或休眠)状态时,机内的网卡及主板部分仍保有微弱的供电,此微弱供电能让网卡保有最低的运作能力,使网卡能聆听来自电脑外部的网络广播信息,并对信息内容进行侦测与解读,一旦发现网络广播的内容中有特定的魔法数据包MagicPacket,就会对该数据包的内容进行研判。

魔法数据包是以广播方式发送的,广播的方式与范畴可以是整个局域网(LAN),也可以是特定的子网(Subnet),同时魔法数据包内会有某部(或一群)电脑的网络地址资料,网卡一旦解读研判出所指的地址是自身所处的电脑时,网卡就会通知机内的主板、电源供应器,开始进行引导(或唤醒)的程序。

魔法数据包

魔法数据包MagicPacket是一个广播性的帧frame,透过端口7或端口9进行发送,且可以用无连接Connectionlessprotocol的通信协议(如UDP、IPX)来传递,不过一般而言多是用UDP,原因是Novell公司的Netware网络操作系统的IPX协议已经愈来愈少被使用。

魔法数据包内,每次都会先有连续6个FF(十六进制,换算成二进制即:11111111)的资料,即:FFFFFFFFFFFF,在连续6个FF后则开始带出MAC地址信息,有时还会带出4字节或6字节的密码,一旦经由网卡侦测、解读、研判(广播)魔法数据包的内容,内容中的MAC地址、密码若与电脑自身的地址、密码吻合,就会启动唤醒、引导的程序。

实战

硬件基础

要想实现电脑的网络唤醒WOL,首先必须要有具备WOL功能的主板和网卡(二者一般是一体的)。这是硬件基础,现在的主板一般都会支持网络唤醒的功能,但是默认情况不一定启用该功能,需要在BIOS中开启PCI/PCIe唤醒功能或网卡唤醒功能。

我的主板是微星Z270GAMINGM7,网卡是KillerE2500Gigabit。该主板开启网络唤醒功能需要通过开机过程中,长按DELETE键进入BIOS进行如下设置:

?高级-整合周边设备-网卡ROM启动,设置为允许

rom

?高级-电源管理设置-Erp,设置为禁止

erp

?高级-唤醒事件设置-PCIE设备唤醒,设置为允许

pcie

软件基础

除了硬件支持外,还需要在操作系统中设置网卡的唤醒功能。而网卡的唤醒功能是需要网卡驱动支持的,这是Ubuntu升级过程中通过踩坑明白的道理。下面列举了Win10操作系统和Ubuntu系统下的设置。

windows

Window系统中驱动是很健全的,所以只要对应的主板和网卡硬件支持网络唤醒功能,那么对应的驱动基本没有问题。那就只剩下最后一步:设备管理器-网络适配器-电源管理-允许这个装置唤醒电脑

setting_win10

ubuntu

Ubuntu的版本是20.04LTS,其默认内核版本为5.4.x。因为该版本距今两年多,所以其对应的网卡驱动alx-driver已经支持远程唤醒wol功能。为了验证当前网卡是否开启对远程唤醒功能的支持,需要安装软件ethtool。

验证当前网卡enp5s0是否开启wol支持\nsudoethtoolenp5s0

Ubuntu系统安装的20.04LTS,后来升级为22.04LTS(升级过程中踩了默认驱动不支持wol的坑,查了好多资料才填了这个坑).

ubuntu_wakeon

默认情况如上图,SupportsWake-on表示当前驱动支持的远程唤醒方式,候选项有以下几种。wake-on表示当前远程唤醒的方式。

选项

描述

含义

d

disabled

不支持远程唤醒

p

PHYactivity

物理唤醒

u

unicastactivity

单播唤醒

m

multicastactivity

多播唤醒

b

broadcastactivity

广播唤醒

g

magicpacketactivity

魔法包唤醒

其中选项g是开启远程唤醒功能的标识。

设置enp5s0网卡驱动永久支持魔法包唤醒,需要重启两次\nnmclicmodifyenp5s0802-3-ethernet.wake-on-lanmagic

ubuntu_setting

内网通

软硬件基础都搞定后,下面一步就是在内网(局域网)中通过魔法包唤醒目标机器。唤醒的方法这里提供两种:

?命令唤醒

操作机器和目标机器需要在同一个局域网中,操作机器需要安装wakeonlan命令。

命令唤醒\nhost_address为远程计算机的域名或ip地址\nmac_address为远程计算机的mac地址,mac地址是&39;间隔的形式\nwakeonlan-ihost_addressmac_address

?app唤醒在软件市场中搜索Wake-On-Lan或WOL可以找到相关软件

外网通

网上有相关教程[1],大致流程分为三步:

?DDNS绑定域名和动态公网IP鉴于家庭宽带在桥接模式下路由器会获取公网IP,但是这个公网IP是会变化的。所以最好通过DDNS将不变的域名和变化的公网IP绑定在一起。我这里使用的是ddns-go。

?设置IP和MAC绑定网络唤醒的核心是将魔法数据包发送给目标机器,如果数据包中的MAC和目标机器一致则会触发唤醒引导程序。而路由器下面有多个终端机器,所以需要将路由器下终端机器和其MAC地址一一绑定,这样如果有魔法数据包经过路由器时,路由器知道将该包路由到哪台机器。

?设置端口映射注意IP地址与目标机器的IP一致,也就是刚才MAC绑定时的IP地址,端口随便开一个就行(但是不要用运营商封禁的端口,推荐使用9端口)。另外协议类型选择UDP或者ALL!!因为唤醒数据包是通过UDP协议发送的,所以协议类型只选择TCP协议的话数据包是进入不了内网的!!

上面的三步我依次操作了,但是没有成功。目前还没有定位的具体原因。不过我通过另一种方式解决了外网远程唤醒的问题:远程登陆到家庭Nas(该机器是24小时不关机的),然后通过wakeonlan命令在局域网中唤醒目标机器。

常见问题

系统升级带来的问题以及解决

当时是奔着高性能买的这款微星主板Z270GAMINGM7,网卡是KillerE2500Gigabit,号称可以干掉游戏延迟。不过Ubuntu中对这块网卡的驱动支持并没有那么通用,在系统升级(20.04LTS升级到22.04LTS)中还是碰到比较麻烦的驱动支持问题。这里特地记录了一下解决过程。

从这个帖子[2]我们知道,网卡KillerE2500Gigabit的驱动是alx,但是该驱动默认是关闭远程唤醒功能的。如果想要开启该功能需要内核支持。看遍了该帖子发现对于最新的Ubuntu22.04LTS(内核5.15)并没有直接的解决方案。但是发现对于内核5.16.3有了alx补丁,所以有了如下的升级内核的解决方案。

?升级内核到5.16.3

?mainline方式[3]该方式未生效,主要是UbuntuMainlineKernelInstaller中只有2个内核版本

?deb包方式[4]简单直接

?安装alx补丁下载仓库[5],并执行./setup

?重启后验证

alx_fix

目前已经验证成功,为此还提了request[6]给仓库。

参考文献

网络唤醒[7]archlinux中网络唤醒[8]外网唤醒配置教程远程开机[9]Wake-on-LANbrokeninalx[10]alx_driver[11]ubuntu22.04LTSalx补丁[12]如何在Ubuntu中安装Linux主线内核[13]内核deb包[14]alx_dkms_installer支持22.04LTS[15]

References

[1]相关教程:https://blog.csdn.net/qq_19764639/article/details/82817719[2]帖子:https://bugzilla.kernel.org/show_bug.cgi?id=61651Wake-up_after_shutdown[9]外网唤醒配置教程远程开机:https://blog.csdn.net/qq_19764639/article/details/82817719[10]Wake-on-LANbrokeninalx:https://bugzilla.kernel.org/show_bug.cgi?id=61651#c166[11]alx_driver:https://wiki.linuxfoundation.org/networking/alx[12]ubuntu22.04LTSalx补丁:https://github.com/AMV007/alx_dkms_installer/pull/5[13]如何在Ubuntu中安装Linux主线内核:https://www.sysgeek.cn/ubuntu-install-linux-mainline-kernel[14]内核deb包:https://kernel.ubuntu.com/~kernel-ppa/mainline[15]alx_dkms_installer支持22.04LTS:https://github.com/haojunyu/alx_dkms_installer

OK,关于电脑休眠状态能下载东西吗和家庭电脑的网络唤醒的内容到此结束了,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平