Tips: Múltiples IPs utilizando iproute en Debian
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 [0].
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)
1 2 3 4 5 6 7 | 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 |
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.14Utilizando iproute cambiamos el valor inet a “manual” quedando como el ejemplo que sigue.
1 2 3 4 5 6 | 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 |
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 eth0Para confirmar que las IPs esta correctamente configuradas, iproute nos provee con el comando “ip” para verificarlo
12
3
4
5
6
7
| root@cerberus:~# ip addr show eth02: 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 |
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 foreverEso 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)
[0] http://lartc.org
