首页 > Linux, Windows > 关于电脑网络唤醒(WOL)、远程关机或待机等

关于电脑网络唤醒(WOL)、远程关机或待机等

2013年3月9日 LTNS     访问次数 1,569 发表评论 阅读评论

局域网内的WOL

现在的电脑主板一般都支持通过网卡实现关机状态下的网络唤醒(Wake on Lan),只需要在bios里启用WOL即可,有的电脑上可能还需要在网卡属性里面启用WOL功能,比如下图中的唤醒魔包(Wake on Magic Packet)。
NIC_WOL


如想实现待机状态下的WOL,则还需要到网卡属性里的电源管理项设置一下(该设置不影响关机状态下的WOL)。
NIC_PM
注:如果不勾选“只允许magic packet唤醒计算机”,局域网内的各种数据包容易误唤醒待机状态下的电脑。虽说Magic Packet不如直接网络访问触发来得方便,但现在支持Magic Packet的软件不少,所以还可以接受。

现在可以通过Magic Packet软件在局域网内远程开机或唤醒电脑了,Windows操作系统下可用的WOL软件是 Magic Packet UtilityWakeOnLanGui,iOS平台上可用 iNet Pro,Android平台上可用 Fing。另外,有的嵌入式系统比如路由器,GUI管理界面已内置了WOL工具,在一些刷了第三方固件如DD或Tomato的路由器还支持终端命令行界面里执行WOL命令(DD是 wol,而Tomato是 ether-wake)。

顺便提一下,只有正常关机的电脑才可以被远程开机或唤醒,非正常关机的电脑上是无法实现的。

 
至于远程关机(remote shutdown)、待机(standy)或重启(restart)等功能,则需要先在电脑上做几个批处理文件,文件名可随便写

#如下两行内容保存为gj.bat
shutdown -s -t 00
exit

#如下两行内容保存为dj.bat
rundll32.exe powrprof.dll,SetSuspendState
exit

#如下两行内容保存为cq.bat
shutdown -r -t 00
exit

 
以Win7操作系统为例,将如上三个批处理文件保存在电脑的 c:\Users\Administrator\ 目录下(XP的话应该是 c:\Documents and Settings\Administrator\),另外,如果Administrator帐号没有启用,请自行上网搜索如何启用和设置密码。

然后在电脑上安装SSH Server软件,这里推荐 WinSSHD,该软件针对个人使用免费。安装完成并启用后,就可在局域网内的其他任意一台电脑或移动设备(iOS或Android等平台)上使用ssh客户端,登录SSH Server后在如下的命令行界面运行前述的三个批处理命令,可实现远程关机、待机或重启。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
 
C:\Users\Administrator>

Windows操作系统下可用的ssh客户端建议 putty,iOS平台 issh,Android平台 ConnectBot,具体用法请自行网上搜索。另外,有的路由器,比如刷了DD或Tomato等第三方固件的,也内置了ssh客户端。

当然也可以在电脑上安装第三方的VNC之类的远程控制软件(Windows系统自带的Remote Desktop Connection软件没法远程关机)来实现这三个功能,不过VNC软件占用的带宽更高,局域网内使用无所谓,但对于通过互联网尤其是移动数据网络的操作来说,ssh方式占用带宽更低、速度更快、也更安全。

 

通过互联网的WOL

从外网(互联网,包括移动数据网络)远程开机或唤醒内网中的一台电脑则要麻烦些,因为关机状态的电脑是没有ip的,所以magic packet只能利用局域网内的广播方式(但路由器默认屏蔽了来自外网的访问类似192.168.1.255广播地址的请求)来唤醒对应某个MAC地址的电脑,除非使用静态ARP绑定(static ARP binding)。

在试过局域网内的WOL功能都正常之后,先在路由器上设置DDNS(动态域名服务,因为一般情形下宽带运营商ISP分配的是动态ip),以便从外网可以通过域名访问到路由器,然后在路由器上做一个NAT端口映射(自定义的端口号->UDP 2301);
nat

接下来在路由器上设置DHCP静态分配ip(本例中是192.168.1.9)给指定的内网电脑;同时设置一下静态ARP绑定,如果路由器的GUI界面没有静态ARP绑定工具,可以在脚本或定时任务中添加命令行(如下以刷了DD或Tomato第三方固件的路由器为例)

ip neigh change ip地址 lladdr MAC地址 nud permanent dev br0
ip neigh add ip地址 lladdr MAC地址 nud permanent dev br0

注:这里的ip地址跟前面端口映射设置中的ip地址须一致。

最后通过 WakeOnLanGui 从外网远程开机或唤醒指定的内网电脑。
WOL_over_internet

如果路由器本身不支持静态ARP绑定,则有篇 博文 介绍了一种另类的办法可让路由器接受来自外网的广播地址请求。比如设置子网掩码为255.255.255.128而非常见的255.255.255.0,则192.168.1.127就是192.168.1.0网段的广播地址了,然后做一个端口映射指向该广播地址。不过这种方法会造成内网ip的管理不方便,也不够直观。

需要提醒的是,上述的端口映射方式安全性不太好,任何人只要知道端口号、路由器的外网ip或域名就可以唤醒这台内网子机了,所以建议使用刷了DD或Tomato等第三方固件的路由器。因为路由器本身支持SSH Server/Client,则可先远程登录到路由器的SSH Server,再通过路由器的终端命令行界面里执行WOL命令(还可自制WOL脚本,可大大简化命令行的操作);而如果路由器本身支持VPN Server的话就更方便了,相当于在同一个局域网内操作WOL。

 
至于从外网远程关机、待机或重启,相对而言比较简单,可通过如下几种方式:
1. 同样在路由器上做一个端口映射(自定义的端口号->TCP 22),允许从外网通过自定义的端口登录到指定的内网电脑上的SSH Server即可;
2. 如果路由器本身支持SSH Server/Client,则可先远程登录到路由器的SSH Server,再通过路由器的SSH Client登录电脑上的SSH Server,这样更安全,因为路由器只需对外开放一个ssh端口;
3. 而如果路由器本身支持VPN Server的话就更方便了,相当于在同一个局域网内进行操作。

 
 

参考文章
http://forums.anandtech.com/showthread.php?s=bcaf7f3c0e9fe1aac687de42f69ce75b&t=257874&page=4
 

分类: Linux, Windows 标签: , , ,
  1. wang
    2013年8月3日12:57 | #1

    WOL以前搞过,不过有时出现的问题莫名其妙,比如远程唤醒后,要等好多几分钟才启动远程电脑,手机也能远程唤醒电脑,哈哈。

  2. wang
    2013年9月15日17:30 | #2

    博主你好,有pxe 启动远程(外网)案例吗?

  3. LTNS
    2013年9月16日10:45 | #3

    @wang
    抱歉,没用过pxe

  4. hsiang
    2014年2月16日21:36 | #4

    windows的rdp可以远程关机,组策略里设置好就行

    • LTNS
      2014年2月17日20:08 | #5

      @hsiang
      谢谢指正,虽然通过WinXP的 RDP无法在开始菜单中找到关机等图标,但设置好组策略后,通过 RDP或者在另一台子机上运行 shutdown命令,都可以远程关掉内网中的子机。

  1. 2014年9月29日11:23 | #1
34 - 8 = (必填)