Before coming to my college's hostels at Bangalore, I used to play Half Life and other multiplayer games with my sister (yes, my sister) at home using a LAN. When I came here and after some days I tried to connect to the Half-Life server she was creating, i was getting the error LAN servers are restricted to local clients (class C). I tried to search, but in vain, then I found that using Hamachi VPN software and aliases inside it, its easy to play the game. But, again, if I tried to connect, it stuck at Requesting Resourcelist from server. Made me think it was not possible.
Then after some months, we used to play Counter-Strike on LAN, which continued for about a month. But one day, someone from another hostel of our hostels tried to connect (the subnets of the hostels are different), and he got the same LAN servers are restricted to local clients (class C) error. (It was here only i learnt that CS used the same engine HL multiplayer used). We tried Hamachi here also, where thankfully worked. But the problem? It required an internet connection, which isn't available round the clock.
So, i figured out that the problem was that CS/HL doesn't allow servers from outside server's subnet to connect. This indicated to use a way if we could trick the server. I got a unusual idea so that i could play with my sister at Patna, or between different hostels.
I was using Lava Software's ezProxy to share my home internet connection with my laptop over LAN at home before. I found out it has a feature which allows you to map a port on the computer on which its running to some port on another computer on the network/internet. What i did was simple, ran ezProxy on my sister's computer (118.95.xxx.xxx) and mapped a port, say 8001 to port 27015 (used by HL/CS servers). Then goto the HL console (by running hl.exe -dev -console from commands prompt and pressing the backquote ` button during the game) and type connect 118.95.xxx.xxx:8001 and press enter. And bravo! it connects (and that too at just 100ms latency).
What happens is that to my sister's HL server it appears that someone (ezProxy) from same subnet is connecting to the game, and hence it allows the connection, lol.
So, just follow the following steps for this (on the server) –
- Download ezProxy from Lava Software's website and install it (demo version allows 2 users to connect, which was enough for me and my sister).
- Start ezProxy in App Mode from the Start menu.
Right click on the tray icon and select Start manager. Click Login and fill password as 1234, and press OK.
Close the dialog that appears. Right-click on Service and select Add->UDP Map Proxy
Fill in anything in the Service Name, give a port (or leave default 8000), and goto the Map tab
In the Map tab enter 127.0.0.1 in Host and 27015 in Port and press OK
Verify that a service with the name specified in Step 5 appears under Services
- Now, start HL/CS and create the server.
Then, follow the following steps on the server client –
- Start HL/CS and bring the HL/CS console (in HL by running hl.exe -dev -console from command prompt and then pressing the backquote ` button during the game in HL/CS)
- Type connect xxx.xxx.xxx.xxx:8000 where xxx.xxx.xxx.xxx is the external IP address of the server( to know whats the IP address, goto sites such as www.cmyip.com on the server) and press enter
- This requires the person at the server to tell its external IP to the person at client manually through email/IM/telephone, but I have a software which you can install at the server and it'll automatically send the IP address of the server to the client's e-mail address. Till then use the manual email/IM/telephone, procedure.
- The game should successfully connect, and you'll be able to connect. Note that you've to repeat Steps 2 and 8 for server and all steps for client everytime you want to play a multiplayer game
NOTE: If the server and client are on a LAN, then instead of the external IP, give the internal LAN IP.
Hope this helps people getting the error LAN servers are restricted to local clients (class C). Happy shootin'.