Vamos, no es que no se lleve ni bien ni mal, directamente no se lleva. NetworkManager, el gestor de conexiones de redes en Linux, no soporta interfaces virtuales de red como, por ejemplo, eth0:1.
Para centrarnos un poco pero sin profundizar, una interfaz virtual es una interfaz ficticia asociada a una interfaz real, esto es, simular dos tarjetas de red teniendo sólo una. También se llaman “alias”.
¿Y esto para que sirve? Pues para acceder, por ejemplo, a dos redes diferentes desde el mismo equipo. Por ejemplo, la IP real de nuestro equipo es 192.168.1.42 con máscara de subred 255.255.255.0 y queremos acceder a un equipo cuya IP es 192.168.2.100 con máscara de subred 255.255.255.0. Como están en distinta red no se puede acceder directamente, a no ser que creemos una interfaz virtual o alias de red.
Para ello basta con configurar en el archivo /etc/network/interfaces la nueva interfaz. Suponiendo que nuestra interfaz principal se llame eth0, el archivo de configuración quedaría así (además de lo que hubiese antes):
auto eth0:1
iface eth0:1 inet static
address 192.168.2.42
netmask 255.255.255.0
network 192.1638.2.0
broadcast 192.168.2.255
En caso de que nuestra interfaz tuviese un nombre diferente, por ejemplo ra0, el nombre de la interfaz virtual debería ser ra0:1 (o cualquier otro número entero detrás de los dos puntos).
Una vez hecha la configuración, la nueva interfaz virtual se activa mediante el comando:
diego@box:~:$ sudo ifup eth0:1
Pero, como reza el título de esta entrada y como ya iba siendo hora de contarlo, si usas Ubuntu con NetworkManager, en el próximo reinicio de la máquina la interfaz virtual no se activará porque NetworkManager no soporta interfaces virtuales.
Pero como (casi) siempre, en Linux hay solución. Para ello hay que hacer uso de la ejecución de los scripts que usa NetworkManager. Estos scripts se encuentran en el directorio /etc/NetworkManager/dispatcher.d. Ahí hay que crear un archivo —al que llamaré updownaliases— con el siguiente contenido (cambiando el nombre de la interfaz según corresponda):
#!/bin/bash
iface="$1"
shift
action="$1"
shift
if [ "$iface" == "eth0" ]; then
case "$action" in
up)
/sbin/ifup eth0:1
;;
down)
/sbin/ifdown eth0:1
;;
*)
echo "updownaliases: Invalid action for $iface: $action" 1>&2
exit 1
;;
esac
fi
Este archivo debe pertenecer a root (los que no pertenecen a root son ignorados) y luego hay que darle los permisos de ejecución mediante el comando:
diego@box:~:$ sudo chmod 755 updownaliases
Para probarlo basta con que desactivéis y activéis la red desde el NetworkManager (botón derecho sobre el icono y hacer clic en el menú «Activar red»). Para comprobar si todo es correcto hay que ejecutar el comando:
diego@box:~:$ ifconfig
Y ahí tienen que salir todas las interfaces, tanto la real (que generalmente es eth0) como la virtual o alias, que, en este caso, es eth0:1.