Even if you have a dynamic IP address with your home internet service, you can still set up multiple home servers accessible from the external internet using dynamic DNS and Apache with mod_proxy. The first step is to set up an account at http://www.dyndns.com/ and request a domain name that will be mapped back to your house. Let's say you pick "yourhouse.homeip.net" which will connect to your main home server, and you have two other home servers which you want to connect to using "server1.yourhouse.homeip.net" and "server2.yourhouse.homeip.net". The basic diagram for how everything will be connected follows:

Dynamic DNS will direct internet traffic to your home router. Port forwarding will forward incoming traffic on port 80 on the router to port 80 on your main server. The mod_proxy Apache settings will redirect HTTP traffic intended for server1 and server2 over to those servers through the main server.
You can manually update your IP address at dyndns.com, but once your home IP address changes, that information will be out of date. Linksys routers (and possibly other brands) come with dynamic DNS clients that will update your IP address for you when it changes. Alternatively, you can install a dynamic DNS client on one of your home machines that will connect to the internet on a regular interval to keep your home IP up to date.
Usually, your router will block all incoming traffic from the internet to your home network. You can set up port forwarding to redirect traffic on specific ports to ports on your internal servers. Check out your router's documentation for how to configure port forwarding.
Dynamic DNS and port forwarding will let you hook up one server. To add server1 and server2, we need a way to direct requests for those servers through the main server. This is where mod_proxy for Apache comes in (if you're not using Apache, you're on your own at this point). We will set up virtual host entries for the other internal servers and use the ProxyPass directive to forward traffic intended for the subdomains. You will modify your httpd.conf file as follows:
1. Uncomment following lines:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2. Add following lines:
ProxyRequests On
NameVirtualHost *
<VirtualHost *>
ServerName server1.yourhouse.homeip.net
ProxyPass / http://192.168.1.110/
</VirtualHost>
<VirtualHost *>
ServerName server2.yourhouse.homeip.net
ProxyPass / http://192.168.1.111/
</VirtualHost>
where 192.168.1.110 and 192.168.1.111 are internal ip addresses or machine names for your internal servers.
Then, restart your Apache server and you should be able to connect to your machines.
No comments.