Recycling Ip Addresses with Apache

Abstract:

This article demonstrates how to serve multiple virtual webservers using the same ip address with Apache on Unix/Linux. The article assumes that the reader has some knowledge of Apache and DNS and unix.
The target audience of this article is ISPs, System Administrator and anyone who cares to read and learn.

Why should we recycle IP addresses?

Ip address recycling is useful for number of reasons.

one can easily run out of ip addresses

one might have only one ip address (as in my case)

More system administrators time to add interfaces to host to use multiple ip addresses.

How to recycle ip adresses?

Using Apache it is simple to serve multiple domains with a single ip address.
For this article we will assume the ip address to be 192.168.1.1, and hostname hometranet.home.
Simply add a line like this to your httpd.conf file
NameVirtualHost 192.168.1.1:80
Next we will add three virtual servers using the same ip address

So using one ip address we have easily managed 3 different virtualhosts.

Next add CNAMES or A Records for these names in your nameserver's
zone file and dont forget to increment the serial number :)
for eg: in my /var/named/hometranet.home.fwd, I would add
perl.hometranet.home. IN A 192.168.1.1
apache.hometranet.home. IN A 192.168.1.1
unix.hometranet.home. IN A 192.168.1.1
Please note:
If you call this host by any other name than the ones given in the virtual config then the first virtual host will respond.
Before Apache 1.3.x the last one would have had responded.
For eg: If this host is named madmag then calling http://madmag.hometranet.home will give you the same result as calling unix.hometranet.home.

Using wildcards, dynamic hostnames

This is the cool part. Apache allows wildcards to be used in hostanames.
Meaning you can set a domain *.home.hometranet.home and all queries to
user1.home.hometranet.home, user2.home.hometranet.home, user3.home.hometranet.home,etc
will be responded.
Example:

Note: This trick will not work if you are using Microsoft DNS Server. Apparently it refuses to accept wildcards in hostnames.
(But you arent using one, are you??)
I once wrote a small system that allows users on the network to add their
CV in the database, and using the above trick, their CVs
were availabe by http://theirUserName.cv.developer.ch.