Assigning multiple Virtual IPs to a NIC

Assigning a virtual IPs to a NIC is a very easy task either you use the system-config-network tool or just do some text file editing. The script ifconfig can also be used to create a virtual network interface, but this would not be permanent since the changes ifconfig makes do not survive a reboot. Here we will use text based method to assign multiple IPs.

My default network configuration file is located at /etc/sysconfig/network-scripts/ifcfg-eth0 and looks like as below:

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=00:00:00:00:00:00
IPADDR=192.168.0.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.0.254
Before editing network configuration file, take backup of it.

# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-eth0:1

eth0:1 is an alias of the eth0 interface. Now, let’s assign a different IP address to eth0:1. Other NIC aliases could be named eth0:2, eth0:3 etc.

# nano ifcfg-eth0:1
DEVICE=eth0:1
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=00:00:00:00:00:00
IPADDR=192.168.0.2
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.0.254

Save the file and copy it to /etc/sysconfig/networking/devices/:
# cp ifcfg-eth0:1 /etc/sysconfig/networking/devices/

Also, copy it to your default network profile or whichever profile you use:
# cp ifcfg-eth0:1 /etc/sysconfig/networking/profiles/default/

Now, bring up the new interface using the ifup script:
# ifup eth0:1

Running ifconfig, the new interface should be listed. You can also check it by pinging:
# ping 192.168.0.2

Note: You can now assign a host name on this virtual interface, by updating your local DNS server’s zone files or by adding it to the /etc/hosts files on all your locally connected systems.

8 comments:

  1. This doesn't seem to work. It keeps taking the address of eth0 interface! Not sure which is the right way! in Solaris, it is very easy!

    ReplyDelete
  2. You might have forgotten to edit either your DEVICE or the IPADDR flag

    ReplyDelete
    Replies
    1. same to me, but with dhcp on bootproto. if I look with ifconfig there is the eth0 active. but if i look in gui there is the eth0:1 active. (red hat 6.3)

      Delete
  3. No It need to edit, just add this
    NM_CONTROLLED=no

    to configuration file. It will work perfectly

    ReplyDelete
  4. hi thanx for advice...
    i used 2 NICs, all work 2gether.

    ReplyDelete
  5. Hi,
    Thank you for useful post

    Please provide further commands for
    You can now assign a host name on this virtual interface, by updating your local DNS server’s zone files or by adding it to the /etc/hosts files on all your locally connected systems.

    ReplyDelete
  6. In my configuration, I needed to add the file rule-eth0:1 into /etc/sysconfig/network-scripts/. The file rule-eth0:1 contained the following content:

    from 192.168.0.2/32 table admin
    to 192.168.0.2/32 table admin

    I had more interfaces though initially.

    ReplyDelete