Networking - Games can't see/join anyone else's LAN servers, unless I host

This happens with various games, from Battlefield 2 to Trackmania and therefore seems to be some network configuration error:

When anyone else hosts a LAN game I am the only one that can't see their server in the in-game server browser, nor can I join it with a direct IP connection. However, when I host the game everyone else is capable of joining my server without any problems. I am also the only one on the network experiencing these issues.

Things I already checked:

  • Windows Firewall is set to allow each application (and the problem still happens when it is completely disabled)
  • Other networking an internet programs like browsers, e-mail, ssh and ftp are working perfectly fine
  • Various static/dynamic IP address/subnet mask and default gateway settings don't fix the problem

The problem seemed to be that the games don't properly handle my PC having multiple network adapters. They then connect using the wrong network adapter and only see that adapter's own network/subnet.

In my case this was caused by the Virtualbox network adapter, although it also seems to be common with other software adapters such as Hamachi. The simplest solution I could find was to disable the problematic adapter before playing any game. Other possible options are to disable all other network adapters except the one for your current network or to correctly setup the priority of your network adapters.

The priority of the network adapters can be set by following this procedure in Windows Vista/Seven (source):

  • Open 'Network and Sharing Center'
  • Choose 'Change adapter' settings
  • Hit ALT on your keyboard to show the menus
  • From the 'Advanced' menu choose 'Advanced Settings'
  • Under the 'Adapters and Bindings' tab select your proper network adapter from the 'Connections list'
  • Use the green arrow on the right to move it to the top of the Windows Network Adapter Priority List
  • Click 'OK' to apply the new settings and you are done!

If you know the server IP, you can enter via command line like this:

TmForever.exe /lan /join=192.168.100.110

For me, it worked!