Hosting a Web site from home with Cox, Comcast or Verizon

Since its creation QAInsight.net has been hosted from an underpowered pizza box lying on the floor, under my desk, in my office at home. The recent move to Arizona has caused some moving around and downtime. It’s been down this last week while I putzed around with getting it to work from the new office closet with my new Internet provider Cox Cable. Cox blocks incoming ports (and so does Verizon Fios) which makes hosting a Web site a little challenging, but not impossible. The providers say that it’s for security reasons, and there is some truth to that, but for those of us who understand those security reasons…well, port blocking is just a huge pain in the ass. If you don’t understand the security issues stop reading and go pay a professional to host your site. Perhaps somebody like GoDaddy.com.

If you’re still reading… My research on the Internet regarding this subject led to many forums and articles with people having the problem of not being able to host a site at home but no specific directions on how to make it happen. Today, I hope to help you make it happen. Beat the system..You know… stick it the man. Keep in mind your Internet provider, modem, router, Web server may not be the same as mine but I’ll try to keep things as generic as possible so that you can try to apply it so your situation. Forgive me for the things that are wrong that I am about to divulge, for I suck at networking. Proceed at your own risk.

WARNING: You could screw things up! WARNING: The traffic to your site could cause your ISP to cancel your service.

And awaaaay we go:

Things needed

1. An Internet provider. Cable, DSL, or FIber. Dial-up isn’t going to work.
2. A router. You’ll need one that is capable of IP forwarding and Web Forwards. I use the NetGear RangeMax Next -WNR854T (mostly because my internal wired network is Gigabit).
3. A domain name. GoDaddy.com is the best place to get one of these. I recommend you get something cool like MyPimpNutz.com or MyPrettyPony.tv to establish your presence on the dub dub dub.

For simplicity let’s start with the 10,000 foot view:

  1. You Domain Name talks to a Dynamic DNS service.
  2. The Dynamic DNS service points to the IP on your modem, and if your ISP blocks ports it will also forward the request to the modem using a different port #.
  3. Your modem forwards to your router and your router forwards to your internal web server.
  4. Your web server receives the request at the port with the specified header and processes it.

Simple enough from that point of view eh? Okay, here’s the detail (not so simple):

  1. Go find out what ports your Internet provider blocks. You’ll probably get lost in their maze of a website so just Google it, e.g. “List of blocked ports for Verizon Fios”. Write them down. In my experience Cox Cable and Verizon Fios block port 80 (the one we care about for the purpose of this post) Comcast does not. If your ISP doesn’t block ports then you won’t need to worry about the “Web Forward” instructions in this post.
  2. On your Router
    1. Logon to your router
    2. Make sure your router has DHCP turned on, if not, turn it on.
    3. Make sure the option to get the Internet IP Address is set to “Get Dynamically from ISP”
    4. If you can, setup the LAN TCP/IP IP address and IP Subnet Mask. Make these 192.168.1.1 and 255.255.255.0
    5. Find the feature for “Port forwarding”. Add a new port forwarding rule, if your ISP does not block port 80 then make the start and end port 80 and the server IP address 192.168.1.10 (you will specify this in the Web Server portion of this article). If you provider does block port 80 then do the same thing but use 8080 (or any port that they do not block).
    6. Find a page with the router status. Write down the IP address of the router (LAN port, 192.168.1.1), the IP Subnet Mask (LAN port, 255.255.255.0), the IP address of the modem (Internet port) , and the Domain Name Server (Internet port)
      Things should look kind of like this when you’re done:
      image
  3. On your Web Server: Logon to your web server.
    Setup the TCP/IP properties on the local area connection:
    1. Logon to your Web server
    2. Setup the TCP/IP properties on the local area connection:
      1. Enable “Use the following IP Address”
      2. Give it a static IP Address 192.16.1.10 (or something other than your router IP address)
      3. Give it a subnet mask of 255.255.255.0 (the same subnet mask you gave your router)
      4. Give it a default gateway of 192.168.1.1 (this is the IP Address you gave your router)
      5. Enable “Use the following DNS server address” and for the “Preferred DNS Server” input the IP address of the “Domain Name Server” that you wrote down from the router
        All said and done it should look something like this:
        image
  4. Dynamic DNS
    1. Go sign up for dynamic DNS (free) at ZoneEdit.com
    2. Log in to your account and click “Add zones” 
    3. Enter the domain name that you want DNS services for and click “add”
    4. A pair of name servers will be assigned to you
    5. Contact your registrar (people that sold you the domain name, GoDaddy.com in my case) and tell them to change the name servers for your domain or logon to your account at your registrar and change them yourself.
    6. Wait approximately 1 day for this change to take place. But in the meantime…
    7. If you determined that your ISP IS NOT blocking port 80 then proceed (otherwise skip to sub-step 6):
      1. Click on the link  “IP Addresses (A)”
      2. For the “name” textbox type in *.yourDomain.com (type in your domain name). Using *. will cover the case where people come in with and without the www.
      3. Input the IP Address that was specified in the router as your “Internet Port” (in other words the IP address assigned to your modem from you ISP)
      4. Click the “Change” button.
      5. Click the “View” link at the top of the page and make sure the IP Addresses section contains the entry you just input
        It should look something like this:
        image

        If you determined that your ISP IS blocking port 80 (and you skipped sub-step 1-5) then:

      6. Click the link “WebForward”
      7. In the “New Domain” textbox type in your domain name, without the www. (e.g. qainsight.net)
      8. In the “Destination” textbox type the following: http://www1.yourDomainName.com:8080
      9. Do not enable “Cloaked”
      10. Click the “Add New” button
      11. Click on the link  “IP Addresses (A)”
      12. For the “name” textbox type in *.yourDomain.com (type in your domain name)
      13. Input the IP Address that was specified in the router as your “Internet Port” (in other words the IP address assigned to your modem from you ISP)
      14. Click the “Change” button.
      15. Click the “View” link at the top of the page and make sure the WebForward and  IP Addresses section contains the entries you just input
        It should look something like this:
        image
  5. Okay! We’re close to being done. Now go logon to your Web server
    1. Open up Internet Information Server (IIS Manager)
    2. Expand the server name node
    3. Expand the “Web Sites” node
    4. Right mouse click your web site (assuming you’ve set this up already)
    5. Under the “Web Site” tab click Advanced
    6. Click the “Add” button
    7. Select the IP Address for server (192.168.1.10 is mine)
    8. Enter the “TCP Port” of 8080
    9. Enter the “Host Header Value” of: www1.yourDomainName.com (yourDomainName is your domain name!)
    10. That’s it. Other things need to properly get a site to display I’ll leave to you (default pages, application pools, etc)

There you have it. Don’t forget it will take a minimum of 24 hours before the name servers are set and propagated, so you’re not going to see instant results if you did this all in one day. If it doesn’t work, double and triple check all your settings to make sure they stuck. Watch for the redirect from www to www1 in the browser. If you get an error and no redirect  to www1, look at your name server and Dynamic DNS settings. If you get the redirect to www1 but the page doesn’t display then look at the web page, application, or IIS settings.

What to do if your IP changes…Change the IP entries at ZoneEdit.com. There are tools that detect the changes and update this automatically for you but I’ve never had to do that since my IP typically updates about once a year which hasn’t warranted me investigating the tool.

Last but not least…Enjoy the convenience and availability of your Web site hosted from home!

Leave a Reply

Your email address will not be published. Required fields are marked *