The following write-up covers the steps for creating your own server to lower your ping. This is a great post on the wow forums: http://forums.worldofwarcraft.com/thread.html?topicId=3271071466&sid=1 which gave me the inspiriation to do this. If you think of some of the services like lowerping, this is exactly what they are doing.
Now I know this is a little more techy than what I normally post but it may be useful to some of you
In a nut shell the issue with high latency is due to a couple of things; 1 being our location in relation to the servers, 2 is the way in which packets are transmitted to the wow servers. When we send a packet (data) to the wow servers we wait for a response. Now this is not really needed but wow itself has been designed to work this way.
Paid services basically take your packets, send you a response quickly and then translate the packets into a better form and send it to the wow servers. Now this costs cash and also does change the source IP of the packet from a wow-server point of view, so the outlined technique is less risk.
What we are going to do is setup our own server that will run in VMWare to do this transformation and have it either running on your own PC or a PC on your network. I have VMWare Player installed on my laptop at home so I’ll be running it there.
Step 1 – VMWare Player & How the Infrastructure Looks
It was apparent that not everybody knew what the hell I was talking in regards to VMWare so this is a quick installation guide.
Firstly what is VMWare? Basically VMware allows you to build a virtual system that run inside your current OS. So in simple terms; You have Windows Box with VMWare installed, we can then create a Virtual Machine that runs in VMWare that has another operating system.
You have two options really;
- Install VMWare on your gaming box (if you’re low on resources this is not recommended as it can be a resource drain)
- Install VMWare on a second PC
Effectively with VMWare from a network point of view it will appear that you have another computer on the network although it will be utilising your Host OS for network connectivity. Is that simple enough?
- Go to http://www.vmware.com/download/player/
- Download the VMWare Player for your environment (you need to register but I rarely get any emails from them)
- Once downloaded install (next, next, next etc) and restart your PC
Now VMware is a pretty cool and I use it for my development/support projects quite a bit.
This is how my infrastructure looks at home now and how the routing will work;
What this shows is I now have 3 unique network addresses, 1 for my wow pc, 1 for my vmware host, and 1 for the os hosted in vmware.
Packets from my wow pc that are on the specific port will be mapped through to my Socat server who will then transmit the (adjusted) packets to the wow server.
Alternatively you could have the VMWare Player installed on the same PC that’s running wow;
Step 2 – The OS
Now I have been a big fan of Debian for a few years and will be using this, for this purpose I am just taking a pre-built VMWare appliance and building onto it the things I need.
Big Security Warning: I am not building this for external/public use, no REAL firewall is being configured or anything!
Go here and download the Debian 5.0 Server from http://linhost.info/vmware/
The usernames and passwords are available there too.
Once that is downloaded we will set up our service;
- Turn on the VM and set the Network type to Bridged.
- Restart VM and login as root to the command line
- Type: apt-get install socat
this will go through the installation process and jump back to the Command Line - Type: ifconfig to get your new server IP address
Step 3 – Running & Testing Socat
- First thing we need to do is work out our server IP address, I found the one on wowwiki to be incorrect so start wow up and log into your server (select a toon and login), then ALT-TAB to Windows and run a command prompt and type netstat, you should see an IP address connecting to 3724
- then in the command line type this:socat -d -d -d TCP4-LISTEN:3724,nodelay,fork,reuseaddr,su=nobody TCP4:{WOWSERVERIP}:3724,nodelay
- Now you should get “listening on AF=2 xxxx:3724”
- hit CTRL + ALT to leave the VM and then open a command prompt on your wow PC
- Type: telnet {SOCATSERVERIP} 3724
- You should see the connection being made, this means it is ‘working’
- You can close both your Socat (CTRL + C should do it) and your telnet now.
Step 4 – Setting up Socat as a Debian Service (on startup)
Now we want this socat to run automatically when debian boots so we do the following;
- Enter the VM again
- Type: cd /etc/init.d
- Type: vi socat
- Hit “i” and add the following:
#! /sbin/sh
# UPYURSH SOCAT SERVICE SCRIPT
# http://www.upyursh.com# make sure our iptables is in there
/sbin/iptables -t nat -A PREROUTING -p tcp -d {WOWSERVERIP} –dport 3724 -j REDIRECT –to-ports 3724
# start our service as a daemon
nohup socat -d -d -d TCP4-LISTEN:3724,nodelay,fork,reuseaddr,su=nobody TCP4: {WOWSERVERIP}:3724,nodelay > /dev/null &# lets make sure we know our IP
ifconfig
- Hit ESC and “:wq”
- Make the script an exe that can be run by typing:chmod a+x socat
- Now to add it as a service type:update-rc.d –f socat defaults
- type shutdown –r now to start and check if the service started!
- When it restarts login and type: ps –ef | more
- You should see socat –d –d –d ….. in the list
- That’s it! You don’t actually need to login for the service to be running but I do encourage you to login and shutdown properly every time so keep your OS healthy usingshutdown -h now
Step 5 – Routing Traffic to your new Box
Create two bat files on the box where you run Wow. If you’re using Vista or 7 you may need to run them as Administrator
- Route to Debian Box
- Create a file called “CreateWowRoute.bat”
- Add this: route -p ADD {WOWSERVERIP} MASK 255.255.255.255 {SOCATSERVERIP}
- Remove the rout to Debian Box (for using wow without socat)
- Create a file called “DeleteWowRoute.bat”
- Add this: route -p DELETE {WOWSERVERIP}
If you want to run wow without your linux box remove the route first




I'm wary of using or recommending services like Lower Ping because they are a service that people who hack accounts will use to disguise where they are coming from, so sometimes it has (in the past) accidentally had false-positives with looking like you came from the same IP address as the hackers (though it's a lot more rare to have that problem now than when it first became popular). Doing it yourself would seem a lot safer than trusting third parties.
.-= Lissanna´s last blog ..Additional posts can not be launched (because it’s Tuesday!) =-.
lol wut? Your techiness crits Tunza for 1 gazillion.
Give me a yell next time you are in Brisneyland and I'll let you come over and set this all up for me. Sounds way to hard for my puny human brain.
Updated to include more information about VMWare as well as pushing log file out to /dev/null as to keep the vhd side down
Just for everyones interest I used this last night in Col and Uld and sat on a stable 300ms which is about half what I normally sit on
Hmm..this is cool and nerdy and i totally have to try it out. As someone who used to play on a US server while being in Europe, i KNOW lag like it's my sister ;_;
Now i just have to wait for Windows 7 to be released for me to try this out.
Thanks a lot
this will work on any windows platform
Quick question - would the traffic shaper in PfSense be able to do what this does?
just done this, it shaved about 150ms of my regular latency, went from 550ish to 400ish. i live in brazil and play on ravenholdt, a seattle based server. lowerping gives me around 250 latency, so i'm not gonna pay for that hehehehe.
did this using Sun's VirtualBox instead of VMWare, arch linux instead of debian.
the line that reads: /sbin/iptables -t nat -A PREROUTING -p tcp -d {WOWSERVERIP} –dport 3724 -j REDIRECT –to-ports 3724
got messed up. you probably typed:
/sbin/iptables -t nat -A PREROUTING -p tcp -d {WOWSERVERIP} –-dport 3724 -j REDIRECT –-to-ports 3724
and your blog turned "--" into a long "-". a less nerdy person trying this out will probably get stuck with iptables errors
thanks for the tip, this will come in quite handy for future arena endeavours
dammit! it did it again on my comment!
your blog turns double "-"s into a single, longer "-", it messes up that iptables rule