I live on a boat and I love living on a boat. There’s nothing better than coming home after a hard day’s work to a view of the gentle swaying of sailboat masts in the wind, the sound of sea birds and the crisp smell of salt in the air. The weekends are even better. Nothing beats lounging around in the cockpit of your own sailboat reading the latest rpg book or novel on a cool afternoon day.
But some aspects of living on a boat sucks. For one, the internet access is… interesting. I get free internet from the marina and it’s high speed, but it’s wifi. That means to get it on my boat I need a high power wifi antenna. These antennas are around 20-30 times more powerful than what you have in your laptop and I can mount it externally. Nothing helps your signal reception more than having a high powered, cancer causing antenna on top of a 45ft mast. But the device has its own firewall. Also, since I like to use my latop without a cord and I have a wireless tablet, I have a Linksys wireless router on my boat that gives me my own local wireless LAN.
So I have 3 firewalls before I hit the internet. My own linksys router(which I can control), the high power ranged ship antenna(which I can’t tune) and then the marina’s firewall that sits right on the internet itself. Needless to say this makes hosting my own games a little awkward.
But I also have my own public internet server. It’s a cheap little $5 a month virtual private server. You can’t do much with it, but it’s great for hosting things like Teamspeak, sharing files and putting up blogs that no one will ever read. The other thing owning a small little server like this on the internet lets you do is bypass firewalls for hosting games.
There’s lots of complicated and neat ways to do this. For Linux I use OpenVPN and create my own private little network across all my systems. Unfortunately while I’m a Linux guru my Windows kung fu is lacking, so this setup didn’t work as well for me when I’m logged into Windows at home. Fortunately there’s a very simple way to handle this in Windows using a simple tool called Putty.
Putty is a SSH client. SSH is a way to log into remote servers. It’s been around for over a decade and is a more secure replacement of an older tool called Telnet. One of the neat things SSH can do is called tunneling. For example, I can log into a remote computer over SSH and start up Firefox and have the window show up on my local computer. In that case, SSH is tunneling the graphics protocol(called X in Linux).
But in our case what we want to do is use SSH to tunnel remote connections to port 1802 from the server to our local computer.
How this works is we’ll use Putty on our home Windows computer and SSH into the remote server. Then SSH on the remote computer will take incoming requests to port 1802 and funnel them though port 22 on SSH to us at home. Then at home Putty will forward those request to port 1802 on our local computer, which is where Fantasy Grounds runs. In this way people can point their Fantasy Grounds client at tarsis.org and it’ll connect to our home PC as long as we keep that SSH connection up and running.
First we need to make a change on the destination server. There’s a file called /etc/ssh/sshd_config that exists on Linux servers running SSH. You need to edit this file and add the below line to it:
GatewayPorts yes
This will allow Putty to open up a remote port on the server and listen for connections. Once that’s done and you restart your SSH service, we can then go back to our client home PC and configure Putty.
If you haven’t already, download and install Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Next we’ll start up Putty and configure the host information we’ll be connecting to.
In my case, my server is tarsis.org. Once that’s done, on the left hand side find Connection -> SSH -> Tunnels
In this tab, you’ll want to enable “Remote ports do the same”, put 1802 in the Source port field, put “localhost:1802” in the Destination field and select Remote.
This is telling Putty we want to open up a port on the remote end, allow any connection to it and then forward it back to the home PC on port 1802.
Click Add
We now have the reverse tunnel configured. You can click Open and a Putty window will open asking you to log into the remote server. Note that if you don’t want to set this up every time you start Putty, you’ll need to go back to Sessions on the left hand tab and save this session so you can reload it the next time you open Putty.
Once you open the Putty session and log in, you’ll now be redirecting port 1802 back into your home PC from the server.
For my example, I’ll first start up a copy of Fantasy Grounds and load a campaign in DM mode. Then I’ll open up another copy of the game and choose to join in on a game. For the connection window I’ll use my public server as my Host address(tarsis.org).
And as you can see, I can connect in and join the game over the public server IP.
The nice thing about this setup is that it can be done with any public Linux server that you can configure SSH on. This allows you to publicly host your Fantasy Grounds games through firewalls from your home PC without forcing your players to setup and use a VPN client. The only downside is if your Putty session closes you’ll lose your tunnel and all your client connections.