Linux supports the concept of “network aliases”; a NIC with more than one IP-address.
Previously, with networking managed by /etc/init.d/network, you would create a configuration file (/etc/sysconfig/network-scripts/ifcfg-eth0:0) holding the IP-address information for alias “0” of network interface “eth0“.
With NetworkManager, things become more complicated for non-trivial network configurations. The primary interface settings are in /etc/sysconfig/network-scripts/ifcfg-eth0 as usual:
DEVICE="eth0" NM_CONTROLLED="yes" ONBOOT=yes HWADDR=00:04:23:C0:FF:EE TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" UUID=5fb06bd0-0bb0-7ffb-45f1-deadbeefc0ffee
Based on a comment by Cristiano, I added a script to NetworkManager that would take care of configuring any network aliases that might be defined:
$ cat /etc/NetworkManager/dispatcher.d/00-aliases #!/bin/bash # Based on comment by Cristiano, http://mihai.ibanescu.net/networkmanager-and-virtual-interfaces iface="$1" shift action="$1" shift if [ "$action" = "up" ]; then for ALIAS in /etc/sysconfig/network-scripts/ifcfg-$iface:*; do ALIAS=`echo $ALIAS | cut -d: -f 2` /sbin/ifup $iface:$ALIAS done fi # EOF
Note: This script needs to be executable.
The alias settings are configured in /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE="eth0:0" NM_CONTROLLED="no" BOOTPROTO=static IPADDR=172.16.0.1 NETMASK=255.255.0.0
The essential ingredient here is “NM_CONTROLLED=no” (thanks to IRC @so_solid_moo, #fedora). Without that setting, NetworkManager will treat your alias as a real device and mess up your network accordingly ;-)