Interfaces virtuales
Las interfaces de red virtuales nos sirven para tener varias direcciones IP sobre una misma tarjeta de red, y así ofrecer servicios en cada una estas direcciones. Esto puede hacerse usando una técnica llamada "IP Aliasing".
En el siguiente ejemplo se asigna a la tarjeta eth0 tres IP, dos de una misma red lógica (eth0, eth0:1) y otra de una diferente (eth0:2):
auto eth0 eth0:1 eth0:2
iface eth0 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255
iface eth0:1 inet static
address 192.168.1.201
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
iface eth0:2 inet static
address 192.168.2.202
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
Cuando se trabaja con interfaces virtuales, hay que tener en cuenta que estas dependen siempre de la correcta configuración de la interfaz raíz, es decir, para el ejemplo anterior, eth0:1 y eth0:2 dependen de eth0. Esto nos lleva a seguir un orden adecuado en la activación/desactivación de estas interfaces, pues en caso contrario, tendremos problemas provocados por la falta de sincronización entre las interfaces que verdaderamente tiene el kernel activadas y las registradas como activas en el fichero /etc/network/run/ifstate.
Observemos este desfase cuando activamos únicamente la interfaz virtual eth0:1:
# ifdown -a
# ifup eth0:1
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:28:42:d2
inet6 addr: fe80::a00:27ff:fe28:42d2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:455 errors:0 dropped:0 overruns:0 frame:0
TX packets:1373 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:93364 (91.1 KiB) TX bytes:203177 (198.4 KiB)
eth0:1 Link encap:Ethernet HWaddr 08:00:27:28:42:d2
inet addr:192.168.1.201 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
# cat /etc/network/run/ifstate
eth0:1=eth0:1
Como vemos, realmente la interfaz raíz se activa (aunque sin IP) pero no se registra en el fichero /etc/network/run/ifstate.
También sucede lo mismo cuando desactivamos la interfaz raíz sin antes desactivar las interfaces virtuales que dependen de ella:
# ifdown -a
# ifup -a
# ifdown eth0
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:24 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1480 (1.4 KiB) TX bytes:1480 (1.4 KiB)
# cat /etc/network/run/ifstate
lo=lo
eth0:1=eth0:1
eth0:2=eth0:2
Para evitar estos problemas debemos trabajar de la siguiente forma:
- Activamos/Desactivamos todo:
# ifup -a
# ifdown -a
- Activamos sólo la interfaz raíz:
# ifup eth0
- Desactivamos la interfaz raíz sin existir virtuales:
# ifdown eth0
- Desactivamos la interfaz raíz existiendo virtuales:
# ifdown eth0:1 eth0:2 eth0
- Activamos una interfaz virtual sin la raíz activa:
# ifup eth0 eth0:1
- Activamos una interfaz virtual con la raíz activa:
# ifup eth0:1
- Desactivamos una interfaz virtual:
# ifdown eth0:1
Recordatorio: En un equipo solo puede haber una puerta de enlace, o lo que es lo mismo, solo puede haber una regla de enrutamiento por defecto.
Licencia: licencia de software libre GPL