El sistema de alta disponibilidad implantado por PIX permite utilizar una
unidad secundaria que tomará el control de las conexiones en caso de que
la primaria falle; ambas unidades estarán conectadas por un cable serie (un
RS-232 modificado) que transmite a 9600 baudios, y contínuamente se
intercambian mensajes `hello' para que ambas puedan conocer el estado de
la otra unidad. Si dos de estos mensajes consecutivos - se envían a
intervalos de 15 segundos - no son recibidos en un determinado tiempo, entra
en juego el failover para comprobar cual de las dos unidades ha fallado y
transferir el control a la otra. Entonces cada unidad cambia de estado: la nueva
unidad activa asume las direcciones IP y MAC de la anterior y comienza a
aceptar tráfico, y la que antes era la activa ahora asume los parámetros de
la que no lo era; el resto de elementos de la red no ve ningún cambio en los
dispositivos, por lo que no existen cambios o timeouts en las tablas
ARP.
Si queremos saber el estado del failover (por ejemplo para ver cuál
es la unidad activa en un determinado momento) hemos de ejecutar la orden
sh failover:
pixie(config)# sh failover
Failover On
Cable status: Normal
Reconnect timeout 0:00:00
This host: Primary - Active
Active time: 386520 (sec)
Interface failover (192.168.87.209): Normal
Interface dmz1 (192.168.63.156): Normal
Interface outside (172.17.1.1): Normal
Interface inside (172.17.2.1): Normal
Other host: Secondary - Standby
Active time: 405 (sec)
Interface failover (192.168.87.210): Normal
Interface dmz1 (192.168.63.157): Normal
Interface outside (172.17.1.2): Normal
Interface inside (172.17.2.2): Normal
Stateful Failover Logical Update Statistics
Link : failover
Stateful Obj xmit xerr rcv rerr
General 53081 0 50149 0
sys cmd 52067 0 50146 0
up time 0 0 0 0
xlate 9 0 0 0
tcp conn 1005 0 3 0
udp conn 0 0 0 0
ARP tbl 0 0 0 0
RIP Tbl 0 0 0 0
Logical Update Queue Information
Cur Max Total
Recv Q: 0 1 50149
Xmit Q: 0 3 53081
pixie(config)#
En el resultado de la orden anterior vemos que la unidad principal está
funcionando normalmente, mientras que la secundaria está en standby;
esto será lo habitual si no entra en juego el failover o incluso si
entra y la unidad principal se recupera, ya que en ese caso se hace un
rebalanceo. Si en lugar de que todas las interfaces estén en estado normal
aparecieran errores temporales de escasa duración, no hay ningún problema,
ya que esto suele significar que el cortafuegos está testeando la alta
disponibilidad y la conectividad de las interfaces.
El failover es casi transparente a la administración de la máquina,
en el sentido de que la configuración sólo se realiza en la unidad activa
en cada momento, y automáticamente se transfiere a la que está en standby; además, como hemos dicho, cuando entra la alta disponibilidad las
unidades intercambian sus direcciones IP, por lo que el acceso vía telnet a la máquina se realiza contra la misma dirección que durante el
funcionamiento normal de los equipos. Incluso si trabajamos con stateful
failover, las unidades mantienen la información de estado de cada
conexión, por lo que en caso de switchover ninguna de ellas se pierde;
en caso contrario, las conexiones activas son eliminadas y el cliente debe
reestablecerlas.
Con la orden failover podemos habilitar el failover, y con no failover deshabilitarlo:
pixie(config)# no failover
pixie(config)# sh failover
Failover Off
Cable status: Normal
Reconnect timeout 0:00:00
pixie(config)#
Las órdenes anteriores también admiten argumentos; si indicamos `link' podemos definir la interfaz de stateful failover, por la que
ambas unidades intercambiarán información. Con `ip address' podemos
configurar una dirección de failover para cada interfaz de la unidad
secundaria, y con el parámetro `active' forzamos a una unidad
determinada ponerse como activa (o en standby, si ejecutamos no
failover active). Como siempre, podemos teclear el signo `?' para
obtener ayuda desde línea de comandos:
pixie(config)# failover ?
usage: [no] failover [active]
failover ip address <if_name> <ip_address>
failover timeout <hh:mm:ss>
failover reset
failover link <if_name>
pixie(config)# failover
© 2002 Antonio Villalón Huerta