The beauty of having multiple IP addresses on a single server is that you can run several services with different addressing. This way you can announce your FTP service on a different address and your HTTP on another.

Below I’ll describe how to achieve this in Debian based and Red Hat based distros seperately.

Using Debian based distros (Ubuntu, Mint etc.), setting multiple IP addresses on a single network interface is simple.

What we will do is to edit the /etc/network/interfaces file.
If you are using DHCP, then your file should look similar to this,

auto eth0
iface eth0 inet dhcp

auto eth0:0
iface eth0:0 inet dhcp
iface eth0:0 inet6 dhcp

Here, the eth0:0 is how we get the secondary IP address on the eth0 device.

If you’re using a static IP address instead of DHCP, then your interfaces file should be like,

auto eth0
iface eth0 inet static
address 10.20.30.40
netmask 255.255.255.0
network 10.20.30.0
broadcast 10.20.30.255
gateway 10.20.30.1
dns-nameservers 8.8.8.8

iface eth0 inet6 static
address 2f00:7300:100::10
netmask 64

auto eth0:0
iface eth0:0 inet static
address 10.20.30.41
netmask 255.255.255.0

iface eth0:0 inet6 static
address 2f00:7300:100::11
netmask 64

You can add as many as you want, such as eth0:1, eth0:2

Sometimes when adding multiple IPv6 addresses on Debian systems, it is possible that you get an error. The current workaround for that is to enable and disable the device a couple of times. You can find the solution to that problem here.

In Red Hat based distros (CentOS, Fedora etc.), the interfaces are edited through the directory /etc/sysconfig/network-scritps. Here we have multiple files, each pointing for a device. For instance, to have 2 additional IP’s on a single ethernet device (totaling 3 addresses) we should have 3 files as follows,

/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0:1
/etc/sysconfig/network-scripts/ifcfg-eth0:2

The main device file would be just a standard one, we don’t have to change anything with it.
On the other hand, the ifcfg-eth0:1 file should be similar to this,

NAME=""
BOOTPROTO=static
MACADDR=""
IPV6INIT=no
DEVICE=eth0:1
NETMASK=255.255.255.0
MTU=""
BROADCAST=10.20.30.255
ONPARENT=yes
IPADDR=10.20.30.41
NETWORK=10.20.30.0
IPV6INIT=yes
IPV6ADDR=2f00:7300:100::11
IPV6_DEFAULTGW=2f00:7300:100::1
ONBOOT=yes

This would suffice. Don’t forget to restart your network services after adding the lines (or files) to with your appropriate settings.

For Debian : $ /etc/init.d/networking stop && /etc/init.d/networking start
For Red Hat : $ service network restart

For additional IPv6 addresses you should need to add IPV6ADDR_SECONDARIES=”” line to /etc/sysconfig/network-scripts/ifcfg-eth0 file

IPV6INIT=yes
IPV6ADDR=2f00:7300:1::2/64
IPV6ADDR_SECONDARIES="2f00:7300:1::3/64 2f00:7300:1::4/64 2f00:7300:1::fff4/64 2f00:7300:1::fff5/64"

About The Author