lunes, 29 de febrero de 2016

Alias vs VLANs - Exprimiendo las interfaces de red.

En linux tenemos la posibilidad de operar con más de una dirección IP sobre una única interfaz red red. Mediante los alias de la interfaz o mediante la creación de VLANs.

Creación de alias Tradicionalmente se han utilizado los alias mediante el comando ifconfig que proporciona el paquete net-tools.
# ifconfig eth0:1 192.168.0.5 netmask 255.255.255.0
Desde la entrega de los núcleos 2.2 tenemos la posibilidad de crear alias con el comando ip, pertenciente al paquete iproute2.
#ip addr add 192.168.0.5/24 dev eth0:1
Creación de VLANs A partir de la versión 2.4.14 el kernel de Linux, se incluye la posibilidad de crear VLANs. Esto podemos hacerlo mediante el comado vconfig o bien mediante el comando ip. En Red Hat y derivados se encuentra incluido en el paquete vconfig, en Debian y sus derivados lo podemos encontrar en el paquete vlan. Para ello utiliza el siguiente patrón : vconfig add "ethx" "id_vlan"
# vconfig add eth0 01

Added VLAN with VID == 01 to IF -:eth0:-
Comprobamos la creación del dispositivo mediante ifconfig:
eth0.1   Link encap:Ethernet  HWaddr bc:ae:c5:60:4e:48  
          inet6 addr: fe80::beae:c5ff:fe60:4e38/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:2012 (2.0 KB)

ifstated - OpenBSD



Ifstated es un daemon, para entornos BSD, que puede ejecutar comandos en respuesta a cambios en el estado de las interficies.
El estado de las mismas puede determinarse monitoreando el estado del link o ejecutando comandos externos.
Ifstated tiene definidos 3 estados posibles para un link :

up: la interficie física tiene conexión activa. Para un interficie carp representa el estado master.
down: la interficie física no tiene conexión activa. Para una interficie carp representa el estado backup.
unknown: no se puede determinar el estado de la conexión física. Para una interficie carp representa el estado init.

Esta información por si sola es insuficiente ya que podemos tener link hacia el router, pero este a su vez no tener conexión hacia internet. Necesitamos una herramienta externa para poder verificar esta conexión. Ifstated nos permite ejecutar comandos externos, con los resultados obtenidos podremos determinar el status actual y cargar las reglas de filtrado oportunas.
Para invocar estas herramientas externas, ifstated nos permiter definir en su archivo de configuración /etc/ifstated.conf macros como la siguiente :
adsl1='(“/sbin/ping -q -c 1 -w 66.102.9.147” every 10)'
Estados en ifstated

Ifstated opera con estados y transiciones. Cada estado tiene un bloque de inicio y un cuerpo. El bloque de inicio, se utiliza para inicializar el estado y se ejecuta cada vez que se ingresa en ese estado. El cuerpo del estado solo se ejecuta cuando el estado es el actual y ocurre un evento. Las acciones a tomar dentro de un bloque de estado se especifican con sentecias if . Estas a su vez pueden ejecutar acciones con el comando run o bien disparar una transcion con set-state. Si no se especifica un estado de inicio, ifstated considerará el primer estado del fichero de configuración como tal.

Ejemplo de bloque :
#Falla ADSL1

  state adsl1down {

  init {
   run “/root/auxiliary/adsl2up”
  }
  if (!$asl1 && $adsl2)
   set-state adsldown
  if ($adsl1 && !$adsl2)
   set-state adsl2down
  if (!$adsl1 && !$adsl2)
   set-state bothdown
  }