Estos dos últimas días he estado configurando servicios Linux balanceados con Piranha (la "interpretación de lvs" de RedHat). La topología de Red y el personal de comunicaciones me han obligado a usar Direct-Routing, y como todos sabrán, para ello es importante usar ArpTables. Era la primera vez que lo usaba, porque siempre había usado el módulo no-arp, tal y como recomiendan en el proyecto ultramonkey, pero consideré que era un buen momento para evaluar este tipo de soluciones.
En RedHat todo está bastante documentado y encontraremos una muy buena explicación de las posibles configuraciones, en el capítulo 3 de Linux Virtual Server (LVS) for Red Hat Enterprise Linux 5.1. Todo lo haremos con arptables_jf
arptables -A IN -d virtual_ip -j DROP
arptables -A OUT -d virtual_ip -j mangle --mangle-ip-s real_ip
Cuando he tenido que llevar esto a Debian Etch, me he encontrado que no me funcionaba :(, desesperado, he intentado volver a compilar el módulo no-arp, que ya no he podido hacerlo funcionar para el kernel 2.6.18-6-686. Finalmente he dado con la tontería, de por qué no funcionan estas reglas en Debian, y es porque cambian los chain para las reglas, así que para Debian queda como:
apt-get install arptables
arptables -A INPUT -d virtual_ip -j DROP
arptables -A OUTPUT -d virtual_ip -j mangle --mangle-ip-s real_ip
Vaya, tontería que me ha hecho perder 4 horas casi.