如何实现LAN或WAN远程开机?

一、实现远程开机的原理

远程唤醒Wake onLAN(WOL),又叫远程开机。现在很多网卡都支持的功能。而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包。其实就是通过socket向目标的机器发送MagicPacket(魔术包),魔术包的格式,包含有连续6个字节的“FF”和连续重复16次的MAC地址。

你可以在任何协议的数据包(如在TCP/IP、IPX包)中填上 "FFFFFFFFFFFF"+连续重复16次的MAC地址,就可利用该协议作出一个使用该协议的MagicPacket。只要NIC检测到数据包中任何地方有这样的片段,便会将计算机唤醒。
假设被控计算机的Mac地址为01:02:03:04:05:06 (6 bytes),那么那台机器的网卡在数据帧内发现以下的片断便会将计算机唤醒。
FFFFFFFFFFFF010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506
正是因为这个Magic Packet可以封装在任何协议的数据包中,可以在各种Router和switch之间传送,而不会影响MagicPacket唤醒的功能。也就是说,不管Magic Packet是来自于LAN还是WAN,只要网卡检测到MagicPacket就能唤醒。

所以我们要做的是如何让目标计算机的网卡接收到这个开机指令。至于发送指令的功夫已经有软件帮我们做了。这类软件很多,如:LanHelper、Magic Packet Utility、NetWaker for windows、WakeOnLanGui

二、实现远程开机的步骤:

1、网卡开启远程唤醒功能。

2、BIOS开启远程唤醒功能。

3、路由器的设置(要实现WAN唤醒,则需要这步,如果是局域网内的唤醒则不需要):

A、端口映射

  “转发规则”-“虚拟服务器”,添加一新条目,端口为7(7是默认的端口号,也可以是其它端口号,只要不和其它的冲突),IP地址为需要唤醒电脑网卡所使用的IP地址(比如192.168.1.8),协议为UDP,并使之处于“生效”状态。这一步使得当路由器收到发到它7端口的数据都会转发到192.168.1.8这台电脑上。

B、IP与MAC绑定

  “IP与MAC绑定”-“静态ARP绑定设置”,添加一新条目,MAC地址添为网卡(被唤醒电脑上的)MAC,如00-0B-2F-XX-XX-XX,IP为上一步设置的IP192.168.1.8

C、设置为静态IP

为了确保该电脑在启动后可以获得192.168.1.8这个IP,需要在DHCP服务器中设置一个静态地址分配,即MAC 00-0B-2F-XX-XX-XX 静态分配192.168.1.8永不过期。

D、开启DDNS功能

在路由器上使用动态DDNS功能,这样可以用一个域名来访问而不用查看经常改变的公网IP(ADSL拨号上网的IP是经常变的)。同时,允许路由器可以进行无端WEB管理,以方便当我们在任何地方都可以检查路由器的状态。

4、接下来就可以利用软件启动远程计算机了(如果是局域网间的唤醒,不需要第3步的路由设置)。

注:Mac Address 是目标机网卡而不是WAN口的Mac。因为数据包要有目标机网卡的Mac地址;有做映射的端口都可以试着用,不一定是7;如果是广域网,Subnet Masks要用255.255.255.255;Internet Address就是WAN口的IP地址,如果IP地址不是固定的,就要用DDNS绑定。
三、这是我试着在单位远程启动家中电脑的截图:

家中电脑我上班前退出了的,现在能够远程控制,证明已顺利唤醒并进入系统。


时间: 2024-10-10 21:50:05

如何实现LAN或WAN远程开机?的相关文章

C#实现局域网内远程开机

1.远程开机原理 远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet).魔术包的格式,包含有连续6个字节的“FF”和连续重复16次的MAC地址,你可以在任何协议的数据包中填上 "FFFFFFFFFFFF"+连续重复16次的MAC地址,就可利用该协议作出一个使用该协议的MagicPacket.如果远程计算机最后一次

极路由电脑远程开机

这算是一个老问题了,互联网上的方法一堆!前些天自己也折腾了下,主意是要取家里面的电脑,一天到晚天着耗电,关机了,要是想取东西取不出来!所以自然需要远程开机了,网上有好多说远程开机软件之类的,有些要收费有些不收费,但是实现不了!下面看看我的做法! 工具/原料 极路由一台 支持wake on lan的网卡一块(主要网卡支持即可) 方法/步骤 1 1.准备支持wake on lan网卡,大多数电脑主板自带的集成网卡都是支持的!大家先到BIOS里面去看下!有没这个选择项,如果有则说明支持该功能! 2 2

C#实现远程开机(局域网测试通过)

首先介绍相关知识. UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务. 下面是UDP与TCP的一些区别: **A)**UDP是无连接的.相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接. **B)**UDP是尽最大努力交付的.也就是说UDP协议无法保证数据能够准确的

戴尔服务器的远程开机和关机

手上有一台戴尔的DELL PowerEdge R210服务器,闲来无事,研究了一下它的远程开机和关机. Dell的服务器默认都带BMC,这个用来做管理的网口和操作系统 是共用的同一个网口(注意必需是第一个网口,即服务器上标有1的那个),只要BMC里设置的IP地址和操作系统的IP不一样就可以了.BMC的设置很简单,按以下步骤进行设置: 1.在服务器启动时看到Press <Ctrl-E> for BMC Setup提示的时候按Ctrl+E键进入设置画面,将蓝色的光条移动到 IPMI OverLAN

WOL远程开机

WOL远程开机 http://www.cnblogs.com/ZHF/p/3303082.html 最近在一直都在研究PC机硬件和软件相结合的软件,硬件信息都是通过C++与驱动结合获取.对于一个好久都没有接触C++的人来说看这些东西太费劲了,必须的重新捡一下C++的基础知识,必然也少不了C知识,底层都是通过C++与C结合,提供接口给J2EE调用,J2EE也忘的一干二净了.从C++那也了解到了AMT.ACPI.DPM等不少驱动的结合,可以取到哪些硬件信息和对硬件操作,有空就使用C#做了Demo,不

Linux远程开机

一,什么情况下需要远程开机?    如果我们的服务器没有部署在本地(实际上通常都是这样的,我们会把服务器托管到IDC机房),   而且服务器在机房中不止一台,其中一台被关闭时,则我们可以远程连接一台没有关机的服务器上,   然后进行远程开机.    二,远程开机需要的软件     它需要wakeonlan这个软件,     从何处得到它?     它的官方站是:http://sourceforge.net/projects/wake-on-lan/     如果使用rpm包可以从这里下载:htt

网卡远程唤醒-远程开机再配合远程控制

远程开机再配合远程控制 procedure TForm1.Button2Click(Sender: TObject);var  vBuf:array[0..101] of char;  i,j:integer;begin  //包的格式很简单,在以太网包的任何位置上,  //以6个FF为先导,后面跟相应MAC地址重复16次即可:  for i:=0 to 5 do vBuf:=char($FF);  for i:=0 to 15 do  begin    j:=6+i*6;    vBuf[j]

centos远程开机的操作

如果我们的服务器没有部署在本地(通常都会把服务器托管到IDC机房),而且服务器在机房中不止一台,其中一台被关闭时,则我们可以远程连接一台没有关机的服务器上,然后进行远程开机. 用yum命令安装远程开机需要的软件:yum install wol 如何进行远程开机? 第一步:首先要确定你的linux服务器是否支持远程开机?登录到目标服务器,用ethtool这个命令打印出网卡的信息 [[email protected] lhd]# ethtool eth0 Settings for eth0: Sup

java代码实现网络远程开机

http://my.oschina.net/kingfire/blog/156764 概述 远程开机(Wake onLAN)是指通过网络实现对服务器或者pc启动运行,现在很多网卡都支持的这个功能. 其原理简单来说是向目标主机发送特殊格式的数据包, 目标主机收到后,对系统进行启动. 具体方法. 设置bios开启Wake onLAN(WOL)功能 查看主机网卡的mac地址 将主机通过网卡连接到以太网上 发送开机编码,启动系统 其实就是通过socket向目标的机器发送MagicPacket(魔术包),