Pages

Friday, July 30, 2010

Bind Multiple IP Addresses to a Single Network Interface Card (NIC)

Requirements
RedHat Linux

This tutorial demonstrates how to bind multiple IP addresses to a single NIC. By using multiple IP's you can run a service under a specific IP while having another service under a different one (for example, have HTTP on one and SMTP on another), or create a private LAN using a local IP and have the alias hold your Internet IP (such as NAT). One of the major benefits is that you don't need a physical adapter for each IP but instead can create many virtual ones tied to a single physical card. The instructions provided apply to RedHat, Fedora, and CentOS. I'll be using LAN IP's in this example, so replace them with the ones you'll be using.
The network scripts are located in /etc/sysconfig/network-scripts/. Go into that directory.

cd /etc/sysconfig/network-scripts/


The file we're interested in is ifcfg-eth0, the interface for the Ethernet device. If you have a second Ethernet device then there would be an ifcfg-eth1 file and so on for each adapter you have installed. Let's assume we want to bind three additional IP's (192.168.1.111, 192.168.1.112, and 192.168.1.113) to the NIC. We need to create three alias files while ifcfg-eth0 maintains the primary IP address. This is how we'll set up the aliases to bind the IP addresses.

Adapter IP Address Type
-----------------------------------
eth0 192.168.1.110 Primary
eth0:0 192.168.1.111 Alias 1
eth0:1 192.168.1.112 Alias 2
eth0:2 192.168.1.113 Alias 3

The :X (where X is the interface number) is appended to the interface file name to create the alias. For each alias you create you assign a number sequentially. For this example we will create aliases for eth0. Make a copy of ifcfg-eth0 for the three aliases.

cp ifcfg-eth0 ifcfg-eth0:0
cp ifcfg-eth0 ifcfg-eth0:1
cp ifcfg-eth0 ifcfg-eth0:2


Take a look inside ifcfg-eth0 and review the contents.
more ifcfg-eth0


We're interested in only two lines (DEVICE and IPADDR). We'll rename the device in each file to its corresponding interface alias and change the IP's. We'll start with ifcfg-eth0:0. Open ifcfg-eth0:0 in vi and change the two lines so they have the new interface and IP address.

vi ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=192.168.1.111
 

Save ifcfg-eth0:0 and edit the other two alias files (ifcfg-eth0:1 and ifcfg-eth0:2) so they have the new interfaces and IP addresses set (follow the table from above). Once you save all your changes you can restart the network for the changes to take effect.
service network restart


To verify all the aliases are up and running you can run ifconfig (depending on how many new IP's you set up, you can use ifconfig | more to pause the output).
ifconfig


You can also test the IP's by pinging them from a different machine. If everything is working then there should be a response back.
ping 192.168.1.111
ping 192.168.1.112
ping 192.168.1.113


Looks like everything is working like a charm. With the new IP's you can set up sites in Apache bound to a dedicated IP, anonymous FTP, and many other things.

No comments: