I have been running Windows NLB for many years under Windows 2003. The setup has always been Unicast with two NIC’s in each server. The setup has worked well for load balancing both websites and email servers.
Since it is already 2013 I thought it was time to upgrade to Windows 2008 server.
The setup for NLB was exactly the same, same server hardware and network environment.
Imagine my surprise (anger is more like it) when the NLB no longer worked. I search for a couple of days and found a few links that got me set straight.
In Windows 2003 using IPv4 the networking operates in weakhost mode. It has to do with if a server will send/receive traffic if it is received at a NIC that does not have the IP address bound to it.
In Windows 2008 they have changed it to increase the security and use stronghost mode. If a NIC receives traffic for an IP that is not bound to the NIC it is ignored.
The bottom line is you can’t pass traffic as Windows 2008 comes out of the box, so NLB will not work. Thanks Microsoft!
I understand the risk which is someone could route traffic to a server via the Internet and get it to pass over the server into another network. This does not apply in my case as the servers are only public Internet facing.
There are a few ways to fix it, but for me the easiest was to enable weak mode again. To do this you can execute a couple of commands using netsh against the Local Area Connection NIC and things will start working again.
netsh interface ipv4 set interface "Local Area Connection" weakhostreceive=enable netsh interface ipv4 set interface "Local Area Connection" weakhostsend=enable
You can verify the NIC status both before and after you have run the command to see if the change was made:
netsh interface ipv4 show interface "Local Area Connection"