How to tunnel World of Warcraft through SSH =========================================== IMPORTANT UPDATE: now contains section for merged battle.net accounts 1. Introduction Ever been on a network that for some reason doesn't let you access World of Warcraft? Maybe some weird Hotel wireless internet or your college LAN or even your corporate network (with a ton of firewalls thrown into - to keep the worker bees safe from harm). Now if you still can access a certain server using SSH from this special network, this guide could come handy. You could be asking: "Why is it that I can access this SSH server but not the plain and simple World of Warcraft?". Let's just say that often firewalls are configured to allow only known traffic to pass through, and more often that not TCP traffic with destination port 22 (SSH default port) is among those, but not TCP port 3724 that is used by WoW. So blocking WoW could simply be something the network admins did unintentionally while doing their best for your network. If the path between you and WoW is blocked but you can think of a lot of reasons, why it shouldn't be - then let us continue to undo this evil! Note: the tunneling of WoW traffic as is done by following this guide is accomplished without any apps that hook to the WoW executable and without any other stuff that could be interpreted as breaking the License terms of World of Warcraft. If using SSH in this manner violates the terms of the network you are connected to then please don't read further. 2. Requirements 1) You'll need SSH access to a server that has port forwarding enabled. 2) You'll need to know the IP of the World of Warcraft realm you are playing on. To find this, start WoW as normal, log in, choose your toon and enter the realm. Now alt-tab to windows, open a command prompt and check with "netstat -an" for a connection to host xxx.xxx.xxx.xxx:3724 - the number before :3724 is most likely your realms IP address. 3) You'll need to know how to configure your SSH client and your computer's network settings. 3. Procedure 3.1 Standard WoW accounts The World of Warcraft (Europe) login sequence in a nutshell: 1) connection to status.wow-europe.com:80 2) connection to eu.logon.worldofwarcraft.com:3724 3) connection to your.realm.ip:3724 For completness sake, I will also cover forwarding of the first step, status.wow-europe.com:80, even though access to this IP and port should be working on most networks by default. Now, to tunnel something WoW has to actually initiate these connections to our own machine that runs the SSH client. To do that we will have to modify our hosts file a bit, like this: notepad %SystemRoot%\system32\drivers\etc\hosts In there, let's add 2 new lines at the bottom: 127.0.0.6 eu.logon.worldofwarcraft.com 127.0.0.7 status.wow-europe.com What we achieve with this is that for every connection to eu.logon.worldofwarcraft.com, the loopback IP 127.0.0.6 is used as the target. You may of course don't want that on all the time so prepare to comment those 2 entries out by adding # infront of them when you don't feel like using tunneling or are connected to your *good* network. After this is done, let's add some settings in your SSH client (PuTTY for me). Open the session properties of the connection you plan to tunnel your WoW traffic over. Under the Tunnels category, start by entering 127.0.0.6:3724 for a Source port, and eu.logon.worldofwarcraft.com:3724 for Destination, check that the box "Local" is checked and then click Add. Then do the same for 127.0.0.7:80 for source, and status.wow-europe.com:80 for destination. And also add your.realm.ip:3724 for both Source and Destination. Don't worry about the "Source port" entry box being of a small width, everything's just fine. Also don't forget to save the changes you have made to the session. The final step is to add a your.realm.ip to your local addresses. The simplest way to do that in Windows is to create a new local loopback adapter. To create the loopback adapter, just follow the Add New Hardware Wizard: Next -> Add -> Add new -> Select from List -> Network adapters -> Microsoft -> Microsoft Loopback Adapter -> Next -> OK Now you should have a new "Local Area Network Connection". Open it's TCP/IP properties, check "Use the following IP address". Specify your realm's IP, subnet of 255.255.255.252 and leave the default gateway empty. Open your SSH session, check that you can see in it's logs that the portforwardings are configured. Now start WoW. If you can log in as normal, everything's OK and you've accomplished the goal of this guide. You can check in your SSH client log that the forwarded ports are actually opened. To use WoW without the tunnel, comment out the entries in the hosts file and disable the new network adapter and you're back to normal. 3.2 Merged battle.net accounts The login sequence is somewhat different with the new merged battle.net accounts and a second loopback address must be configured for the eu.logon.battle.net server, otherwise the infamous "Invalid Game Server" error will appear. 1) There is a DNS query to eu.logon.battle.net, for which you should add the returned IP address to your hosts file. 213.248.127.130 eu.logon.battle.net This is done to avoid possible issues with multiple IPs returned from the DNS query and also allows control via loopback tunnel 2) Add new loopback interface as described in chapter 3.1, for the IP address use the logon server IP 213.248.127.130 with mask 255.255.255.252 3) Configure SSH forwarding from local 213.248.127.130:1119 to remote 213.248.127.130:1119 on this IP This should be all there is to it, WoW is working over the SSH tunneling once again! 4. About performance The latency and general performance will depend on the connection between your PC and your SSH server and your SSH server and the WoW realm. In my case, I have a good connection to my SSH server, but my ISP's overseas connection is not that good. Since the SSH box is on a fat pipe and a much better international link I actually get a big performance gain out of this. (Latency to Outland realm is 26ms in Ironforge using an SSH tunnel). 5. Credits Idea and implementation - odt (IRC odt @QuakeNet/EFNet/FreeNode, ingame EU-Al'Akir odt). Thanks to Simon Tatham for PuTTY and Blizzard for WoW. 6. Change history 2006-10-11 First version 2006-11-30 Some added steps to make stuff more clear 2009-06-15 Discovered issue with new merged battle.net accounts, created a solution