Answers:
旧线程,但我想加入,因为它仍然是“ wol over vpn”的最高评分搜索结果。
是的,WOL魔术包是在第2层的约束中定义的,但这并不意味着它不能包含在网络和传输协议实体中,该实体可以用于在VPN上进行路由。其原因是“魔术”序列可以在有效载荷内的任何位置。因此,从本质上讲,要获得一个有效的规则包,以有效负载中带有“魔术”序列的形式向目标主机发送路由。
魔术包的大多数实现都使用UDP端口9,尽管只要它正确路由并在与目标计算机相同的广播域上传输,这实际上并不重要。只要VPN客户端具有正确的路由,它就可以通过Internet将正确的广播数据包(例如192.168.1.255)(广播地址)正确发送到VPN网关。
因此,路由确实非常简单,问题可能出在从目标VPN网关正确广播它。这意味着配置VPN网关/找到一个选项,以将广播流量从VPN远程客户端转发到本地网络。
通常不会,因为“ MagicPacket”实际上位于第2层。没有转发器(例如IP帮助器)的帮助,它甚至无法路由。
有一种使用SSH构建第2层隧道的好方法,并且使用此WOL应该可以很好地工作。因此,我认为没有理由不让机器进入睡眠状态。
在提及@slm的基础上,我在下面提供了源代码的重要部分。
先决条件:
1)两台计算机都必须启用root登录。(对不起,您在两台计算机上的凭据都必须允许您创建TAP设备)。这意味着:在系统级别,root用户具有密码;
2)在运行ssh守护程序的主机的sshd_config文件中,设置了PermitTunnel yes和PermitRootLogin yes选项;
3)在内核中启用了IP转发。使用sysctl命令设置此选项:sysctl -w net.ipv4.ip_forwarding = 1; 另外,将行net.ipv4.ip_forwarding = 1添加到您的/etc/sysctl.conf文件中,以使设置在重启后仍然有效。在两台计算机上都执行此操作;
4)您已经在两台计算机上都安装了bridge-utils软件包,或者已经有了brctl命令。
创建隧道:
ssh -w 1:1 -o Tunnel =以太网主机名
-w选项在任一主机上设置TAP设备的名称(此处,将在两端创建tap1)。
-o选项用于在命令行上指定配置文件选项。我们使用Tunnel = ethernet来建立第2层隧道。
此表单将使ssh会话在前台保持打开状态。如果您希望它在建立隧道后放弃外壳程序,可以使用-f选项告诉它派生到后台。但是,它需要一个分叉的命令,因此您可以只使用诸如true的虚拟命令来使其工作。您也可以使用此功能在远程端建立网桥,但是我现在不打算讨论。因此,它看起来像这样:
ssh -f -w 1:1 -o Tunnel =以太网主机名true
将TAP设备添加到网桥:
brctl addbr br0; brctl addif tap1; ifconfig tap1向上;ifconfig br0向上
您在两台主机上都运行此程序(请注意,我没有分配IP)。brctl是用于操作桥接设备的命令。brctl addbr添加桥br0,而addif命令将tap1设备连接到该桥。
下一步是将物理以太网接口添加到桥接设备。您的操作方式会有所不同,因此我将介绍几种情况。第一种情况是您的VPN对等体在同一子网上(即,它们之间没有路由),第二种情况是在Internet上。
无耻的偷来了:http : //la11111.wordpress.com/2012/09/24/layer-2-vpns-using-ssh/
是的,您可以,而不是将WoL数据包发送到目标网络中的广播地址,只需将其发送到您要唤醒的计算机的IP地址即可。使用PPTP VPN测试的程序:
我同意user48838-根据定义,魔术包仅通过本地子网发送。但是,我以前使用过jpo编写的脚本,该脚本通过普通路由器在其他子网中工作。试试这个-YMMV