Using No-IP With a Cable/DSL Router

So your ISP sticks you with a dynamic IP. To add salt to the wound they only give you one address. Many people have opted to use a cable/DSL router to get around this issue. The router allows you to use multiple computers sharing one Internet connection and IP address using network address translation (NAT). A popular one is the LinkSys BEFSR41 4-port Cable/DSL Router. There are numerous vendors that make a similar product. This article describes how to use No-IP in NAT environment using the LinkSys Cable/DSL Router. If you have a different router, this article is still a good read.

The router prevents users on the Internet from accessing PC's connected to your local network. So you want to run a server, but how are people going to get to your server if your router is not allowing people to connect to your PC. Not to fear… the LinkSys router has a feature called port forwarding. Port forwarding is a mechanism used to take Internet traffic destined for a particular port and then sending it to a computer on your local network.

Lets use a web server as an example. I have setup a web server on my Linux box with address 192.168.100.2. I want to share the web site with some friends on the Internet using my No-IP hostname (trinkets.servehttp.com).

Setting up the update client

My external IP addresses is dynamic so I will need to use the No-IP dynamic update client to keep my hostname updated with the most current IP. Just install the client on any machine that resides on your local network. If you just use the default settings the client will try to send the local LAN IP address to the No-IP servers. No-IP doesn't allow the assignment of private network addresses. So what we want to send is the IP address of the router. How do I do that? The new Windows client will auto-detect your router. On the Mac version select use "Router/Gateway" under the address resolution tab of the update client. On the Linux version set the client to use NAT. So I have applied the changes and added my host trinkets.servehttp.com to the update client. The updater client now updates the host trinkets.servehttp.com with the most current IP address of my LinkSys router.

Port forwarding

My friend now enters http://trinkets.servehttp.com into their browser, but whoops… nothing there. The router doesn't have port forwarding configured so it just denies the connection. So I need to configure port forwarding. Open up a web browser and login to your router's web-based configuration. By default the IP address for configuration is set to http://192.168.1.1/. Enter the username and password, click on the Advanced Tab (congratulations your an advanced user! ). In the advanced section, click on the Forwarding tab. Remember I'm running a web server on 192.168.100.2 so I am going to enter 80 in both boxes on the Service Port Range fields and 192.168.100.2 for the IP address. Next click apply. Voila!! Port forwarding is setup for web services. Now all my friends can access my server using http://trinkets.servehttp.com/.

Gotchas:

  1. Keep in mind that you are not limited to just web servers. As long as you know the port number you can do this for almost any type of server,like ftp, vnc, irc, pcanwyhere… just about anything. Good Luck!!
  2. Each port can only be forwarded to one local IP. So we can’t have multiple web servers running on port 80.
  3. Need to disable Remote Management to run a web server on port 80.

When testing your webserver, the external IP address may not work from inside your local network. Consider having a friend on a different network connection bringing up your website.