En el ámbito de administración de servidores GNU/Linux, cuando se necesita especificar más de una IP en una interface se recurre generalmente los alias de interface, los conocidos ethx:x\
Aunque funciona perfectamente bien y la administración de las reglas iptables asociadas es relativamente fácil estamos dejando de lado una suma de funciones poderosas a utilizar en un servidor GNU/Linux.

Nunca me gustó utilizar alias, pocas veces lo he necesitado; Ahora justamente tengo en mi empresa un server con Debian “Squeeze” cumpliendo las funciones de gateway, tenemos un enlace dedicado con un pool de 14 IPs públicas y necesito dejar todo listo para un próximo enlace dedicado a la par del actual, utilizar alias realmente me limita en comparación con los beneficios a futuro si utilizo iproute.

Tengo hasta el momento 4 interfaces físicas en mi server

  • eth0=ISP1
  • eth1=ISP2
  • eth2=lan
  • eth3=dmz

Como por el momento tengo solamente 1 ISP, y estoy utilizando al menos 3 IPs públicas del pool disponible y en el futuro inmediato necesito:

  • balanceo de carga
  • Wan failover
  • traffic shapping
  • múltilples rutas entre la (dmz, openvpn, lan, internet, etc)

La solución es integrar iproute con la estructura de networking en Debian.

Debian utiliza el archivo /etc/network/interfaces para definir el estado de las interfaces y sus IPs, en este caso en particular definimos las IPs utilizando iproute, debemos cambiar entonces el comportamiento modificando algunos valores.

He aqui un ejemplo típico (las IPs son ficticias)

auto eth0
iface eth0 inet static
    address 190.139.257.1
    netmask 255.255.255.240
    network 190.139.257.0
    broadcast 190.139.257.15
    gateway 190.139.257.14

Utilizando iproute cambiamos el valor inet a “manual” quedando como el ejemplo que sigue.

auto eth0
iface eth0 inet manual
    pre-up ip link set eth0 up
    post-up ip addr add 190.139.257.1/28 dev eth0
    post-up ip addr add 190.139.257.2/28 dev eth0
    post-up ip route add default via 190.139.257.14 dev eth0

Para confirmar que las IPs esta correctamente configuradas, iproute nos provee con el comando “ip” para verificarlo

root@cerberus:~# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:e0:7d:ea:f6:00 brd ff:ff:ff:ff:ff:ff
    inet 190.139.257.1/28 scope global eth0
    inet 190.139.257.2/28 scope global secondary eth0
    inet6 fe80::2e0:7dff:feea:f600/64 scope link
       valid_lft forever preferred_lft forever

Eso es todo, posteriormente se puede agregar a las lineas de /etc/network/interfaces todo lo que necesitemos aplicar con iproute (rutas extras, traffic shapping, etc)