远程开机详细说明

Chapter1:远程唤醒的基本条件

Wake on LAN(WOL),俗称远程唤醒,是现在很多网卡都支持的功能。而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的Magic Packet这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet)。Magic Packet格式虽然只是AMD公司开发推广的技术,并非世界公认的标准,但是仍然受到很多网卡制造商的支持,因此 许多具有网络唤醒功能的网卡都能与之兼容。 
Boeing、IBM、Cisco、United States Army、Canada Customs and Revenue Agency、Intel Corp、Compaq、Lucent、Microsoft Ltd、Dell Computer Corporation、Hewlett-Packard、Siemens、Walt Disney World Co.、Compuware Corp、AMD (Isn't that ironic)、Nortel Networks、Macromedia Inc.、British Telecommunications plc、eBay等等公司均在使用WOL技术。

要实现远程唤醒,还需要硬件的设置:

主板和网卡必须都支持远程唤醒功能。一般目前的主板都支持这个功能(2002年以后的板都有),支持的主板上通常都有一个专门的3芯插座,以便在关机时为网卡供电。但并非所有的网卡都支持该功能(特别是一些价格较便宜的低档网卡),要判断网卡是否支持远程唤醒功能的方法很简单,支持远程唤醒的网卡上都有一个3针的WOL接口和一条3芯的远程唤醒电缆,通过判断网卡是否带有WOL接口即可(有些较新的网卡可能没有WOL接口也能支持远程唤醒。这是因为现在流行的主板支持PCI2.2标准,而PCI 2.2标准不需要通过专门的WOL接口为网卡供电,允许主板直接通过PCI插槽向网卡提供Standby电源)。

1.硬件连接

网卡安装完毕后将远程唤醒电缆的一端插入到网卡的WOL接口上,另外一端与主板的3针WOL远程唤醒接口相连(该接口旁通常标有WOL_CON的字样,当然如果主板和网卡都支持PCI2.2标准则无须做这一步)。

需要说明的是,某些主板上已经集成了具有网络唤醒功能的网卡,只要开启“Wake on PCI Card”功能就可以了,没有什么三脚插座,更不需要专用的三芯连线。

2.CMOS设置

打开CMOS远程唤醒功能很简单,只要将CMOS设置中的“Power Management Setup”的“Wake Up On LAN”或“Resume by LAN”项设置为“Enable”或“On”即可。

ATX电源

必须要使用ATX电源,而且其+5V Standby电流必须比较大,根据Intel的建议,它需要在600mA以上。该电流的大小可以从电源外部标识中的+5VSB(或+5AUX,5VSB)栏里查到。(绝大部分的网卡在0.7A以下都可唤醒)

如果远程计算机最后一次关机的时候是属于非正常关机(突然断电或者关机时死机等),唤醒就有可能会失败。在Windows 2000/XP系统中如果在关闭计算机时使用休眠 ,也可能会造成唤醒失败。这是因为一些网卡需要复位一个标记,这只有在操作系统正常关闭的时候才会发生。

软件的实现方面,其实就是通过socket向目标的机器发送Magic Packet(魔术包),魔术包的格式,包含有连续6个字节的“FF”和连续重复16次的MAC地址。你可以在任何协议的数据包(如在TCP/IP、IPX包)中填上 "FFFFFFFFFFFF"+连续重复16次的MAC地址,就可利用该协议作出一个使用该协议的Magic Packet。只要NIC检测到数据包中任何地方有这样的片段,便会将计算机唤醒。

假设被控计算机的Mac地址为01:02:03:04:05:06 (6 bytes),那么那台机器的网卡在数据帧内发现以下的片断便会将计算机唤醒。

Code:

FFFFFFFFFFFF010203040506010203040506010203040506010203040506 
    010203040506010203040506010203040506010203040506010203040506 
    010203040506010203040506010203040506010203040506010203040506 
    010203040506010203040506

正是因为这个Magic Packet可以封装在任何协议的数据包中,可以在各种Router和switch之间传送,而不会影响Magic Packet唤醒的功能。也就是说,不管Magic Packet是来自于LAN还是WAN,只要网卡检测到Magic Packet就能唤醒。最常被使用的是UDP广播包,不需要端口号,只要知道被控计算机的MAC地址即可。

注:UDP广播分两种,一种是directed broadcast,比如你的网段是192.168.0.X,你就往192.168.0.255发就可以了。另一种是limited broadcast,广播地址是255.255.255.255

要了解更多请参见“Magic Packet? Technical Documentation”

http://www.amd.com.cn/chcn/ConnectivitySolutions/TechnicalResources/0,,50_2334_2481_2494,00.html

Chapter2:局域网远程唤醒

请你务必弄懂Chapter1中所讲解的东西再开始看Chapter2。

首先声明一点,在你机上安装任何远程控制软件的客户端都不可以实现远程唤醒,PCAnywhere、Remote Administrator之类的远程控制软件在关机的情况下根本不可能工作,手机短信实现远程唤醒也是天方夜谭。远程唤醒只能基于你的计算机的硬件去实现。

现在假设A、B两机位于同一个局域网中, 要用主控计算机A机远程唤醒被控计算机B。

那你只要在B机的CMOS设置(有人喜欢叫BIOS设置)中设置好两个地方:

1.开启“Wake on PCI Card”功能,没有这项的设置的话,那可能就要插远程唤醒电缆了; 
这步的目的是“在关机时为网卡供电”

2.开启“Wake Up On LAN”或“Resume by LAN”功能;

这步的目的是“让主板接受网卡发送的唤醒信号” 
设置好之后,就保存退出。 
在A机你要下载局域网唤醒的小软件,下面我推荐两款给大家用吧。

PCnet Magic Packet Utility——AMD的产品,英文介面,需要安装才可以使用,功能比较强大 
http://dl.pconline.com.cn/html_2/1/59/id=1885&pn=0.html
NetWaker for windows 简体中文版 
http://www.j66.net/lbmagic/doc1.htm

下面以AMD的Magic Packet为例,在A机下载安装好。该软件默认安装在C:\pcnet\magic_pkt目录下,由于不会在程序项中或桌面上增加任何快捷方式,因此,要想运行该软件,用户必须自己到所安装的目录下执行magpac.exe,自己动手将该程序在桌面上建立一个快捷方式当然更方便了。

运行magpac.exe,在“Magic Packets”菜单中单击“Power On One Host”(启动某一主机)命令,显示“Send a Magic Packet to One Host”(向主机发送唤醒数据包)对话框(如图所示)。在“Destination Ethernet Address”(目标以太网地址)中输入B机的网卡MAC地址,单击“Send”(发送)按钮。B机将自动启动。

当然,Magic Packet还可以远程唤醒局域网内多台计算机,留给你自己去摸索吧。 
下面我提供一个图文版Magic Packet的教程链接供大家学习吧: 
http://www.codefans.com/ArticleView/Article_1174.html

Chapter3:广域网的远程唤醒

1、广域网中实现远程唤醒的话,其实也不比局域网远程唤醒难多少。被控计算机端只要增加一个能获取公网IP地址、能设置端口映射的设备(如路由器、防火墙)。

现在主流的宽带上网方式不外乎ADSL跟Cable(即视讯宽频、有线电视网络)两种,都可以使用宽带路由实现共享上网,下面简单讲下这两种上网方式下路由器怎样设置才能获取到公网IP地址。

ADSL分两种,一种是固定IP的ADSL,在路由器中选择固定IP地址上网方式,填上电信分配给你的公网IP地址即可;另外一种是动态IP的ADSL,在路由器中设置PPPoE拨号,填上你的用户名、密码,拨号成功后路由器就会自动获取一个公网IP地址;

Cable的话,只要在路由器设置“自动获取IP”上网方式,路由器就会自动获取一个公网IP地址; 
正确设置好路由器之后,在路由器的连接状态那里可以直接查看其公网IP地址。

2、在路由器中设置允许“Subnet Directed Broadcasts(子网定向广播)”,并且设置端口映射,将路由器的某一端口映射到被控计算机的任意端口

3、只要路由器通电,主控计算机就能通过互联网向路由器发送Magic Packet,而路由器与被控计算机之间是通过网线连通的,所以可以很顺利地将Magic Packet发送到被控计算机的网卡。路由器实际上起到中间桥梁的作用。

附上能发送Magic Packet的网页Wake On Lan over the Internet 
http://www.depicus.com/wake-on-lan/woli.aspx

Netmask是一个比较值得注意的地方,填错了的话,目标IP地址就会出错。

下面我通过一个例子简单讲述一下广域网远程唤醒的过程

假设主控计算机为A机,被控计算机为B机

B机的所在局域网环境如下:一条ADSL接在4口路由器R1上,R1的4 个口分别连接着S1,S2,S3,S4四台交换机。B机接在S3交换机的其中一个口。

R1拨号后自动获取到的IP为12.34.56.78,B机在局域网中的IP为192.168.1.167,MAC地址为BB:BB:BB:BB:BB:BB。 
在R1设置端口映射条目如下:12.34.56.78:9——>192.168.1.255:168 
这里192.168.1.255为192.168.1.167所在网络的定向广播地址。

为什么不直接映射到192.168.1.167呢?因为当B机关机后,192.168.1.167这个IP不再与R1通信,R1中关于192.168.1.167的ARP条目也会很快就消失,所有与192.168.1.167这个IP通信的数据包都会被丢弃。

1.A机向12.34.56.78(255.255.255.251)这个目标IP的9号端口发送一个包含FFFFFFFFFFFF和连续重复16次BBBBBBBBBBBB的Magic Packet的单播包,中间经过了N个路由,该单播包顺利进入R1;

2.当R1检测到该数据包端口号为9,根据端口映射条目将该数据包的目标IP及端口号修改为192.168.1.255:168,此时该包被R1识别成定向广播包,因为R1已设置成允许Subnet Directed Broadcasts,所以该包并没有被丢弃;

3.R1将这个广播包向4个口广播,S1,S2,S3,S4所连的所有端口都收到这个广播包,即便B机处于关机状态也会收到该广播包;

B机的网卡检测到广播包中含自己MAC地址信息的Magic Packet,就会被唤醒,而其它机收到之后只会将该数据包丢弃。

4.实际应用中不建议主控计算机通过IP地址去跟路由器通讯,因为一旦路由器重新获取IP地址,远程唤醒就会失效。只要路由器支持动态域名解析(DDNS)功能,可将路由设置成IP地址变更时自动向DDNS提供商重新注册IP地址,DDNS提供商将根据你的帐号对你申请的域名进行域名解析。设置成功后就可以通过固定的域名去与路由器通讯,唤醒与该路由器直连的计算机。

欲了解更多关于DDNS(动态域名解析服务)的信息可参见这里: 
http://publish.it168.com/2005/0519/20050519002902.shtml?cChanNel=no&cPositi

Chapter4:

网络远程唤醒还可以使用调制解调器,只要主板支持Wake-Up On Internal Modem(WOM),那么电话能通的地方都能利用WOM来实现远程唤醒。普通的内置调制解调器是不能直接通过PCI插槽得到+5VSB待命电流的,我们需要用一条“WOM”连接线,插到内置调制解调器及主板的WOM的插槽内。若使用外置式调制解调器时则不存在这个问题,因为工作电压是由外置式调制解调器单独的电源变压器提供的。

确保主机和调制解调器的电源打开电话线已插好,在POWER MANAGEMENT SETUP里找modem ring resume或者POWER ON BY RING项,将其设定为ON或者ENABLED。只要Modem处于开启状态,拿另一部电话拨打Modem所连接的电话号码就可以通过WOM实现远程唤醒了。使用WOM进行远程唤醒不用担心电话费的问题,因为Modem只要侦测到电话震铃不需要接听电话就可以启动机器(所以我们不用花一分钱就可以打国际长途去唤醒位于另一个国家中的计算机了)。

然后WOM有个弊端,所有电话打进来都会马上唤醒,而这通电话很可能不是你打进的。计算机开着自然就要耗电的啦,当然你可以设置计算机在空闲一段时间后自动关机,这样可以省下不少电费。但是如果整天有电话打进的话,估计被控计算机也命不久已。

(0)

相关推荐

  • 远程开机详细说明

    Chapter1:远程唤醒的基本条件 Wake on LAN(WOL),俗称远程唤醒,是现在很多网卡都支持的功能.而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的Magic Packet这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet).Magic Packet格式虽然只是AMD公司开发推广的技术,并非世界公认的标准,但是仍然受到很多网卡制造商的支持,因此 许多具有网络唤醒功能的网卡都能与之兼容. Boeing.IBM.Cisco.Unit

  • SSH设置别名访问远程服务器详细介绍

    SSH设置别名访问远程服务器详细介绍 一般使用ssh访问远程服务器的命令是:ssh username@ip地址, 例如:ssh root@112.232.12.12,然后输入密码即可访问. 以Mac OS为例,其他操作系统,根据目录自行查找 设置如下: 使用cd ~/.ssh/ 进入ssh目录,会看到有config.known_hosts两个文件,一般的没有设置的话,只会有known_hosts,可以使用touch config命令创建config文件. 使用vim编辑config文件,添加如下

  • 使用Python实现Wake On Lan远程开机功能

    Wake-On-LAN简称WOL,是一种电源管理功能:如果存在网络活动,则允许设备将操作系统从待机或休眠模式中唤醒.许多主板厂商支持IBM提出的网络唤醒标准.该标准允许网络管理员远程打开PC机电源,以便进行文件升级.资源跟踪和设备清点等工作. 先看下使用Python实现WakeOn Lan远程开机功能,具体介绍如下: 创建魔法唤醒包 格式化mac地址,生成魔法唤醒包,然后发送包,首先电脑需要打开wake on lan功能 创建main_wake_on_lan.py文件 import socket

  • 如何利用Gitlab-ci持续部署到远程机器(详细教程)

    长话短说,今天聊一聊使用Gitlab-CI 自动部署到远程服务器. 看过这篇文章的朋友,会注意到我是在 Gitlab-Runner服务器上自动部署的站点,本次我们结合ssh部署到远程机器(将CI服务器和部署服务器分离,避免资源抢占). SSH免密登陆 还是那句话,CI/CD实质是将我们手动集成.拷贝部署的方式脚本化,远程部署的重要姿势是要求免密操控. 要让Gitlab Runner部署到远程机器,远程机器必须信任gitlab runner账户. 先执行su gitlab-runner切换到git

  • 局域网远程开机软件制作代码分享

    复制代码 代码如下: /************************************************************************* > File Name: wake_up.c > Author: wz > Created Time: Fri 15 Nov 2013 03:42:47 PM CST ************************************************************************/ #i

  • Python 远程开关机的方法

    用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机. GitHub 仓库地址: https://github.com/injetlee/Python/tree/master/Python%20%E9%BB%91%E9%AD%94%E6%B3%95 本文目标 远程开机原理 Python 远程开机代码实现 Python 关机说明 Python 开机 关于用程序来开机,是怎么做到的呢?这就是 WOL 技术 Wake-On-La

  • IBM HTTP Server 远程溢出漏洞

    涉及程序: GET 描述: 通过提交超长的GET请求导致IBM HTTP Server远程溢出 详细: IBM 的 HTTP 服务器是一个 web 服务器.在 Windows NT 使用的版本中存在拒绝服务的漏洞. 如果提交一个超过219个字符的 GET 请求,将导致服务器停止响应,并报错.要恢复服务正常工作需要重新启动应用程序.成功的利用该漏洞,攻击者可在受害的主机上执行任何代码.(但这还未得到完全证实.) 以下代码仅仅用来测试和研究这个漏洞,如果您将其用于不正当的途径请后果自负 $ teln

  • 深入挖掘Windows脚本技术第1/2页

    深入挖掘Windows脚本技术 文章作者:zzzEVAzzz <zzzevazzz@126.com> 为使文中涉及的代码整洁,将使用论坛的PHP标签处理.(没有VBS标签,code标签不好用,郁闷) 如果转载本文,请注意做相应调整. [目录] 1,前言 2,回顾WSH对象 3,WMI服务 4,脚本也有GUI 5,反查杀 6,来做个后门 7,结语 8,参考资料 [前言] 本文讲述一些Windows脚本编程的知识和技巧.这里的Windows脚本是指"Windows Script Host

  • 基于WebService的数据访问(上) Flex与.NET互操作(二)

    本文以.NET平台下C#语言开发的WebService作为远程数据源,详细介绍Flex与.NET的WebService的数据通信知识点;包括连接WebService,远程调用WebService方法,给WebService方法传递参数等相关知识点.三个标签的使用方法基本上是一样,这里就以<mx:WebService>标签为例进行介绍. 首先看看如下代码块: 复制代码 代码如下: <mx:WebService id="dataService" wsdl="ht

  • 远程数据库的表超过20个索引的影响详细解析

    昨天同事参加了一个研讨会,有提到一个案例.一个通过dblink查询远端数据库,原来查询很快,但是远端数据库增加了一个索引之后,查询一下子变慢了. 经过分析,发现那个通过dblink的查询语句,查询远端数据库的时候,是走索引的,但是远端数据库添加索引之后,如果索引的个数超过20个,就会忽略第一个建立的索引,如果查询语句恰好用到了第一个建立的索引,被忽略之后,只能走Full Table Scan了. 听了这个案例,我查了一下,在oracle官方文档中,关于Managing a Distributed

随机推荐