How To: Assign Multiple Addresses to a Network Interface

Started by ravindar, Jun 23, 2008, 05:44 PM

Previous topic - Next topic

ravindar

Assign Multiple Addresses to a Network Interface

The ip command is part of the iproute2 suite of TCP/IP networking utilities. It keeps trying to replace the old familiar ifconfig and route commands, which do what they do splendidly but are a bit limited for today's network environments.

One thing ip can do that ifconfig cannot is assign multiple addresses to a single network interface. ifconfig can assign multiple aliases, such as eth0:0, eth0:1, and so forth, but then you must give each alias a separate configuration as though they are separate physical interfaces. ip adds addresses to a single interface like this:

brd + means "automatically set the broadcast address." View the results with this command:

$ ip addr show eth0
2: eth0:  mtu 1500 qdisc noop qlen 1000
link/ether 00:03:6d:00:83:cf brd ff:ff:ff:ff:ff:ff
inet 192.168.2.10/24 brd 192.168.2.255 scope global eth0
inet 192.168.3.10/24 brd 192.168.3.255 scope global eth0

If you run ifconfig to check your addresses, it will see only the first one.

This is a great way to get access to multiple subnets without having to create a herd of new configurations, or install multiple network interface cards.

Another practical use for this is accessing a new server or router for the first time. Typically, these come with a default IP address. If it's on a different subnet, but on the same switch, you can quickly add a compatible address to your workstation and log in to the new device. When you're finished, remove the unwanted addresses like so:

# ip addr del 192.168.3.10/24 dev eth0

man ip is the best and most complete reference.