通过不同的子网唤醒局域网

我有3个IP模块和3个思科交换机。 每个交换机都有自己的IP块 – 10.45.100.0/24,10.45.101.0/24和10.45.102.0/24

我在10.45.100.0/24块有一台PC。 我可以从C#中的这个IP块中唤醒整个计算机(IP地址,Mac地址,子网,端口)。

但是,当我试图从另一个IP块唤醒另一台机器时,它不起作用。

这是一个networking问题或代码问题? 我该如何解决?

这是一个基本问题: WOL只能在子网内工作,因为WOL魔术数据包不是有效的IP数据包,因此不能在本地局域网中路由。

维基百科条目概述了这个问题的解决scheme(子网定向广播),但我从来没有看到这个行动。 解决此问题的另一种方法是创build将WOL数据包转发到其他子网(即作为UDP数据包)的WOL代理代理。

如果您有三个不同的子网,则这些子网不能在没有路由器的情况下彼此通信。

这是100%的故意和devise。

你想从WOL尝试做WOL的机器的默认网关必须知道如何到达其他子网,否则它将你的数据包发送到互联网上,在那里它将被你的ISP立即丢弃。

所以,你有两个select:

  1. 在子网之间设置正确的路由
  2. 减less你的子网掩码为255.255.0.0(/ 16),以便所有的机器在同一个子网。 我不build议这样做,因为我确定有一个原因,就是你的机器被划分成了彼此之间的子网。

一个可能的解决scheme:在控制PC上添加第二个(甚至是第三个)NIC卡,然后configuration其他IP地址以直接与其他路由器连接。 然后,魔术数据包将根据WOL命令(IP,MAC,子网,端口)中的目标IP传出相关的NIC。

WOL魔术包只是你注意到的子网。 您可以使用单播或子网定向广播,具体取决于您可以在networking/路由器configuration中启用的内容:

https://technet.microsoft.com/en-us/library/bb632911.aspx

缺点是由于安全性和性能方面的考虑,定向广播默认通常是不支持的。 虽然单播通常依赖于清除的路由器configuration中保存的MAC地址表内存,通常在大约四个小时内。

这可能是一个networking问题。 您正在发送可能在防火墙/路由器中被阻止的广播消息,因为您很less允许广播stream量通过networking。

我假设你可以唤醒他们个人IP上的电脑? 如果你不能这样做,我会说你的防火墙阻止完全的LANstream量唤醒。