FOG 1.2.0 - WOL on multiple VLANs
-
Just an update: capturing packets on the same VLAN as the FOG server revealed that it is indeed sending out WOL packets to the destination IP 255.255.255.255. They are not travelling any further than the router however, as we don’t see them on any other VLAN.
We dug into this article: [URL=‘http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipapp/configuration/12-4/iap-12-4-book/iap-bph.html’][FONT=Calibri]http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipapp/configuration/12-4/iap-12-4-book/iap-bph.html[/FONT][/URL], tried to set ip helper-addresses and the like but still nothing. We even attempted allowing UDP broadcast flooding and still a no go. Everything else pertaining to that document is enabled (access lists, forward UDP port 9 enabled, ip directed broadcast enabled on VLANs, helper-addresses as mentioned).
We’re really at a loss. Anything jump out at anybody? I realize this isn’t a FOG issue per se just looking for some friendly advice.
Thanks!
-
The problem is the broacast direction. Actually, I’m trying to solve this problem. We have computers in different vlans and his broadcast IP are not 255.255.255.255. The problem are the wakeOnLan function in FOGCORE.class.php, MACAddress.class.php, WakeOnLan.class.php and wol.php file. You need pass the broadcast ip of the vlan to create wellthe magic packet.
:eek:
-
OK sure, that makes sense. It seems like that was what was done with the workaround mentioned in the wiki above, although it was very much a messy solution (going through each VLAN one by one and sending a WOL packet to each VLAN broadcast IP).
-
There is a way to do this without changing the code in the WakeOnLan class.
How do I know this?
Because We have 12 separate vlan’s.
Each vlan is within it’s own subnet of course (though all vlan’s have the same subnet.)
The fix for us, was from our routing switch, we had to enable ip-broadcast-forward :
We did it from the “central” routing switch:
We have HP Procurve switches.The way we did it for the hp procurve (should be very similar for cisco).
-
Telnet, or ssh into the switch and provide any passwords.
-
At the prompt enter [code]configure[/code]
-
Enable UDP broadcast forwarding globally [code]ip udp-bcast-forward[/code]
This simply allows you to forward UDP broadcast as you specify later. -
Figure out what UDP port fog is trying to use to do Wake on LAN with either wireshark or some other packet monitoring tool. FOG, by default, uses UDP port 9.
-
Enter the vlan conext for the SERVER’s vlan (aka the FOG Server’s vlan.) For us it’s on vlan 75.
[code]vlan 75[/code] -
From the particular vlan context enable the ip forwarding for udp with port for the DESTINATION subnet you want the WAKE on lan to operate on: For our example the vlan is 10.125.0.0 with a broadcast of 10.125.255.255
[code]ip forward-protocol udp 10.125.255.255 9[/code] -
Repeat the command for each of the other VLAN’s you need setup wake on lan for.
NOTE: You do not need to run the command for the vlan where the fog server resides as it’s layer 2 and should already work for wake on lan. -
save the config’s and log out of the routing switch.
-
-
Hi Tom,
Unfortunately with Cisco ip forward-protocol is a global setting only, it’s not available at the VLAN level in order to configure the VLAN broadcast IP.
We have other systems within our organization that use subnet-directed WOL and they work fine with no config changes. One in particular I know uses dns lookups to determine the IP based on the hostname and sends to the VLAN broadcast IP based on that. And like I mentioned before when using wakeonlan with the -i switch and the VLAN broadcast IP from the FOG server it works as well.
Jacob
-
-
Unfortunately no. The first one refers to UDP relay which is not an option on our particular router. And the second article is exactly how we have things set up, but no go. It appears that the router is discarding broadcasts to 255.255.255.255 whereas subnet-directed broadcasts are working properly.
Jacob
-
Hi Tom,
we have 40 differents vlans which mask isn’t 24. Also, we can not manage the network; because that work is done by another department
We may match the IP address with the broadcast address of the subnet. We put this relationship into wakeOnLan function, isn’t the best solution, but works.
-
Okay.
I’ll see about what I can do to help.
WOL, in 1.0.0, wasn’t really written by me either. But if you’ve taken a look at the /var/www/fog/lib/fog/WakeOnLan.class.php file, you’ll notice we’re not relying on a program to be executed to do wake on lan any more.
I’d be interested in figuring out a fail proof method in cisco and place that in the wiki as it really can’t be this hard.
-
More links that may help.
Remember, as far as I can tell, you only need to make the changes at the “central” switch/router as it’s handling the routing of any said traffic.
@Fernando, while you have many vlan’s and you guys don’t control the networking, maybe having one of the heads of that department take a look could help?
I realize customizing these things would help, it’s also a bit unwieldy to try making a programmatic solution too. Having you do your own code works too, but you lose those changes in future updates. Seeing as so much changed between 0.32 and 1.x.x, I imagine it’s not always going to be easy. That said, we could think about making a plugin that deals with VLAN Wake on lan.
I don’t know where to start with it, but it can’t be too difficult. Try the regular Wake on lan, if that doesn’t work, enable the plugin, then that plugin Wake On lan system does the work. It would require you to install the wakeonlan package though.
-
I think that make a wakeOnLan plugin will be a good solution. If you want, I can develope it … I need it
It’s easy, and the code changes are littles. The “big” problem is how manage the different broadcast directions. Actually, those relationships are “saved” in the code.
[PHP]function wakeOnLan( $mac, $ipHost=null)
{
if ($ipHost != null)
{
list($ip1, $ip2, $ip3, $ip4) = explode(“.”, $ipHost);
$subnet=$ip1 . “.” . $ip2 . “.” . $ip3;if ( getSetting( $conn, "FOG_WOL_BCAST" ) == "" ) switch ($subnet) {
##########################################################################
####### Here you must to write the broadcast IPs
##########################################################################
case “10.227.34”: $ipBroadcast = “10.227.35.255”; break;
case “10.227.84”: $ipBroadcast = “10.227.87.255”; break;
case “10.227.85”: $ipBroadcast = “10.227.87.255”; break;
case “10.227.15”: $ipBroadcast = “10.227.15.31”; break;
#########################################################################
default: $ip = $ip1 . “.” . $ip2 . “.” . $ip3 . “.” . “255”;
// default: $ipBroadcast = “255.255.255.255”;
} else $ipBroadcast = getSetting( $conn, “FOG_WOL_BCAST” );
…
[/PHP]I would like manage them from the webUI
-
[quote=“Fernando Gietz, post: 37878, member: 13”]We may match the IP address with the broadcast address of the subnet. We put this relationship into wakeOnLan function, isn’t the best solution, but works.[/quote]
Fernando - just wondering where you would get the IP address you’re referring to? Just given that computers can and do change subnets fairly often in our environment, so the last IP of the workstation isn’t necessarily correct.
-
The idea of the “plugin” would be to create a management page for WOL that you simply specify the broadcast addresses you need.
If you guys want to try:
maybe edit the 255.255.255.255 part of the WakeOnLan .class.php file and put it to your broadcast as in the post above?
(10.155.255.255) and see if that works?
-
This IP is the IP of the host, and you can get it from the DB. In the hosts table, there is a atribute hostIP.
From “Create new host” submenu in the webUI you can not enter the IP address , but if you import the computers, you can enter the IP address.
For example:
Host 1: IP 10.227.15.25 -> subnet direction: 10.227.15 -> broadcast IP is 10.227.15.31 (and not 10.227.15.255, with this direcction doesn’t work)You can test the Tom’s solution
-
[quote=“Tom Elliott, post: 37895, member: 7271”]The idea of the “plugin” would be to create a management page for WOL that you simply specify the broadcast addresses you need.
If you guys want to try:
maybe edit the 255.255.255.255 part of the WakeOnLan .class.php file and put it to your broadcast as in the post above?
(10.155.255.255) and see if that works?[/quote]
It works . I change the broadcast 255.255.255.255 to 10.227.15.31
-
If my suggestion works, we won’t have to change much and I can build in default and plugin style commands to loop through the vlans.
We don’t use the IP field any more in FOG 1.x.x, though it is still present.
The nice part about building a plugin for handling this is it makes a place to edit changes down the road, and values can be stored in the DB allowing for “upgrades” to keep the settings you set rather than having to recode a specific file every time you update.
-
[quote=“Tom Elliott, post: 37895, member: 7271”]The idea of the “plugin” would be to create a management page for WOL that you simply specify the broadcast addresses you need.
If you guys want to try:
maybe edit the 255.255.255.255 part of the WakeOnLan .class.php file and put it to your broadcast as in the post above?
(10.155.255.255) and see if that works?[/quote]
We actually did try this last week and it did work with a single VLAN broadcast IP. We then attempted to add in all of our VLAN broadcast IPs directly (copying and pasting the if statement) but that didn’t work, unsurprisingly.
If, as you mentioned in your last post, there was a mechanism to loop through all broadcast IPs specified in a plugin that would be ideal.
-
That’s what I’m working on right now, a prototype of sorts to attempt this.
-
2426 pushed.
I don’t quite know if it will work for you, but the plugin Fernando and I were talking about has been created. The WakeOnLan takes this into consideration as well and iterates through the broadcast addresses and recreates the sockets.
To install, upgrade just like you normally would.
You’ll likely need to update db as you’re coming from 1.2.0 rather than a 2403 and up svn revision. Once you upgrade, you will not be able to retrograde, AND if you upgrade, if you have separate nodes, they’ll all need to be at least at that level or higher. So please take this into consideration.
If you understand and are able to continue on, please do so.
To install the plugin, go to FOG Configuration page -> FOG Settings -> Plugin settings, and check the checkbox to enable installing of plugins.
Once saved, you’ll see a new icon in the menu. It should look like a gear. Click on it
Go to active plugins
Choose the one with the plug icon.
Click on it to “activate” it
Go to installed plugins.
Click on it and it should ask you to install
Click the submit and you should be good there along with another new menu entry.The new menu entry will have the same icon as that of what you clicked to install the plugin.
Click on it and add your entries.Have fun as this method seems to work now.
-
Sounds promising! Is there any quick and easy way to check my current svn revision? Although I’m sure you’re correct that below 2403.
And follow this for upgrading? (I’m a first timer!): [url]http://www.fogproject.org/wiki/index.php/SVN[/url]