viernes, 12 de junio de 2009

Policy Based Routing, HSRP y redundancia. Cisco

Necesidad
Contar con dos routers y una dirección IP en Standby (HSRP), donde ciertas redes origen enrutarlas por el Carrier A y otras redes por el Carrier B, sin embargo en caso de fallar algún proveedor funcione la redundancia.
En el caso descrito anteriormente no se puede utilizar un protocolo de enrutamiento dinámico porque se desea enrutar por dirección fuente. Por otro lado, si pueden existir otros modos de realizar esta tarea.

Escenario

2 Router Cisco 1841
2 Enlaces WAN
HSRP
Redes a enviar por el Carrier 1:
10.1.0.0 0.0.255.255
192.168.30.0 0.0.0.255
Redes a enviar por el Carrier 2:
10.144.192.0 0.0.15.255

Diagrama





Procedimiento

Lo primero que haremos es configurar la parte de HSRP. Para ello utilizaremos la siguiente configuración:

En RTR-1
interface FastEthernet0/0
description TO-LAN
ip address 10.1.1.207 255.255.0.0
standby 1 ip 10.1.1.206
standby 1 timers 1 5
standby 1 priority 110
standby 1 preempt
standby 1 authentication CISCO
standby 1 track 1 decrement 20

En RTR-2
interface FastEthernet0/0
description TO-LAN
ip address 10.1.1.204 255.255.0.0
standby 1 ip 10.1.1.206
standby 1 timers 1 5
standby 1 preempt
standby 1 authentication CISCO

Con la configuración anterior tendremos en RTR-1 el IP 10.1.1.207 y en RTR-2 el IP 10.1.1.204. El IP virtual es el 10.1.1.206

2) Indicarle a cada router como alcanzar la WAN del router contrario e indicarles las listas de acceso:

En RTR-1
ip route 10.0.0.1 255.255.255.255 10.1.1.204
access-list 120 REMARK Por el carrier 1
access-list 120 permit ip 10.1.0.0 0.0.255.255 any
access-list 120 permit ip 192.168.30.0 0.0.0.255 any

access-list 121 REMARK Por el carrier 2
access-list 121 permit ip 10.144.192.0 0.0.15.255 any

En RTR-2
ip route 172.16.100.225 255.255.255.255 10.1.1.207
access-list 120 REMARK Por el carrier 1
access-list 120 permit ip 10.1.0.0 0.0.255.255 any
access-list 120 permit ip 192.168.30.0 0.0.0.255 any

access-list 121 REMARK Por el carrier 2
access-list 121 permit ip 10.144.192.0 0.0.15.255 any

3) Es necesario habilitar SLA (Service Level Agreement) y tracks en los routers para mantener el monitoreo vía ping de los enlaces WAN en cada router. Esto es necesario para que a través de PBR los route-maps puedan tomar la decisión de por donde enrutar los paquetes.

En RTR-1

ip sla monitor 2
type echo protocol ipIcmpEcho 172.16.100.225
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 2 life forever start-time now

ip sla monitor 3
type echo protocol ipIcmpEcho 10.0.0.1
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 3 life forever start-time now

track 2 rtr 2 reachability
track 3 rtr 3 reachability

En RTR-2

ip sla monitor 2
type echo protocol ipIcmpEcho 10.0.0.1
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 2 life forever start-time now

ip sla monitor 3
type echo protocol ipIcmpEcho 172.16.100.225
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 3 life forever start-time now

track 2 rtr 2 reachability
track 3 rtr 3 reachability

En el ejemplo anterior, en ambos routers se estan monitoreando los IPs WAN vía ping con un timeout de 1000 ms, un umbral de 50 ms cada 3 segundos.

4) Configurar los route-maps en cada router

RTR-1

route-map CARRIER permit 5
match ip address 120
set ip next-hop verify-availability 172.16.100.225 10 track 2
set ip next-hop verify-availability 10.0.0.1 20 track 3

route-map CARRIER permit 10
match ip address 121
set ip next-hop verify-availability 10.1.1.207 10 track 3
set ip next-hop verify-availability 172.16.100.225 20 track 2

RTR-2

route-map CARRIER permit 5
match ip address 121
set ip next-hop verify-availability 10.0.0.1 10 track 2
set ip next-hop verify-availability 10.1.1.207 20 track 3

route-map CARRIER permit 10
match ip address 120
set ip next-hop verify-availability 10.1.1.207 10 track 3
set ip next-hop verify-availability 10.0.0.1 20 track 2


5) Finalmente es necesario aplicar el comando ip policy route-map en la interfaz f0/0 en cada router

#conf termin
(config)#inter f0/0
(config-if)#ip policy route-map CARRIER

Explicación
Ahora bien, vamos a intentar correr esto en frio:
1) El host 10.1.0.100 envia un paquete a la red 192.168.1.0
2) El paquete lo recibe RTR-2 por la interfaz F0/0
3) La politica es aplicada según el route-map CARRIER
4) En RTR-1, el route-map CARRIER identifica la red origen 10.1.0.100 y coloca como next-hop el IP 10.1.0.207
5) Lo recibe la interfaz f0/0 de RTR-1 quien nuevamente aplica la politica CARRIER y sabe que debe enviar el paquete por la interfaz F0/1 con next-hop 172.16.100.225

Ahora bien, vamos a intentar correr esto en frio con el enlace f0/1 caido en RTR-1:

1) El host 10.1.0.100 envia un paquete a la red 192.168.1.0
2) El paquete lo recibe RTR-2 por la interfaz F0/0
3) La politica es aplicada según el route-map CARRIER. El route-map sabe que no puede ser alcanzado el IP 172.16.100.225 gracias a los comandos SLA previamente configurados (el router cada 3 segundos verifica si puede hacerle ping a este IP).
4) El route-map CARRIER identifica la red origen 10.1.0.100 y coloca como next-hop el IP 10.0.0.1

Verificacion
1) Traceroute desde las redes pertinentes
2) #show track 2
3) #show track 3

21 comentarios:

  1. hola como estas? me gustaria sabes como se puede hacer con 2 isp y un solo router cisco 2621XM. Muchas gracias

    ResponderEliminar
  2. Estimado, puedes revisar este link:
    http://acostanetwork.blogspot.com/2009/06/nat-en-cisco-2-isps-diferentes.html

    Espero sea lo que necesitas

    ResponderEliminar
  3. Podrias ayudarme, tengo dos salidas a internet (DSL y Ethernet) y quiero hacer redundante mi VPN con mis oficinas remotas, todo es cisco el principal un 2811 vi algo acerca de ip sla monitor pero no le entendi mucho

    ResponderEliminar
  4. Buen día Wal,
    Puedo indicarte que pareciera que vas a necesitar dos VPN simultaneas (si tuvieras tus propios IPs y BGP hacia el exterior sería otra cosa).
    Pudieses correr algún tipo de IGP dentro de las VPNs y/o con ip sla monitor.

    Saludos, suerte con ese proyecto.

    Alejandro,

    ResponderEliminar
  5. Tengo 2 2821 cada uno con una conexion a Internet, como hago para obtener redundancia, y poder enrrutar ciertas redes por un enlace y otras por otro??

    Gracias amigo..

    ResponderEliminar
  6. Cristhian,
    Un truco que he aplicado (voy a hacer un post al respecto) es el siguiente:

    ip route 0.0.0.0 128.0.0.0 10.0.0.1
    ip route 128.0.0.0 128.0.0.0 10.0.0.57

    De la manera interior enrutas la mitad de internet por un ISP (10.0.0.1) y la otra mitad por otro ISP (10.0.0.57). Es decir, por la primra ruta saldrá cualquier IP destino entre 0.0.0.0 y 127.255.255.255 y por la segunda ruta todo lo que lleve como IP destino entre: 128.0.0.0 y 255.255.255.255

    Saludos, suerte,

    ResponderEliminar
    Respuestas
    1. Hola Alejandro pudiste hacer el post de esta config=?? Saludos!!!

      Eliminar
  7. hola muy interesante la verdad, quisiera saber que hace exactamente el threshold 50 , gracias muy buena pagina.

    ResponderEliminar
  8. Me parece que otra alternativa seria utilizar GLBP...

    ResponderEliminar
  9. Hola Alejandro, se que esta nota es de varios años pero se me presenta la necesitad de un escenario similar donde por un lado tengo un enlace por mpls que seria el principal y por otro un enlace de internet que lo uso para establecer una VPN en caso de falla del principal, este doc aplicaria o tendria que tener algo mas en consideracion? Gracias

    ResponderEliminar
  10. Hola, pero en una parte usas access list para identificar el trafico que rutearias por cada Carrier y esas acl las aplicas en unos route map. En mi caso todo el trafico de la lan iria por el servicio principal salvo en caso de caida. Para este caso tmb tendria que aplicar acl y route map?
    Gracias

    ResponderEliminar
  11. Muchas Gracias, tu post me dio muchas luces, claro que por la version de las IOS el sla se configura diferente, pero lo importante es que pude extraer ese conocimiento a mis necesidades, gracias nuevamente.

    ResponderEliminar
  12. me da este error % Track object does not exist cuando lanzo el comando : RTR1(config-if)#standby 1 track 1 decrement 20

    % Track object does not exist

    aque se debe uso el IOS: c3640-jK9o3s-mz.124-16a

    ResponderEliminar
  13. chequea otros IOS muy probable que ese IOS no soporte objetos track, saludos

    ResponderEliminar
  14. Philli y Luis, no creo que el problema del error que te da se deba al IOS, sino a que en ningún momento se configuró el track 1.
    Supongo que faltaría algo asi como esto

    track 1 list boolean or
    object 2
    object 3

    Me confirman? aún no probé la configuracion.

    Saludos

    ResponderEliminar
  15. Hola, tengo un router c2811 a la que llegaran 2 conexiones del mismo ISP, que configuracion me sugieras para dicho escenario, tengo antes de router un FW watchguard que realiza mi NAT,

    Saludos

    ResponderEliminar
  16. Buenos días, Tengo un Router Catalyst 4500 L3 Switch Software (cat4500-ENTSERVICESK9-M), Version 12.2(53)SG1, necesito realizar PBR hacia un equipo Firewall que tengo conectado con dos conexiones uno que envia el tráfico hacia e Firewall y el otro que recibe el tráfico del Firewall, como puedo aplicar el PBR para que tenga la condición si se cae alguna de las dos conexiones deje de enviar el tráfico hacia el Firewall y continue el tráfico por el router.

    ResponderEliminar
  17. Buenas, si quiero utilizar activamente mis dos enlaces sin tener que segmentar las rutas aplicaria este escenario]?

    ResponderEliminar
  18. Buenas, si quiero utilizar activamente mis dos enlaces sin tener que segmentar las rutas aplicaria este escenario]?

    ResponderEliminar
  19. hola amigo, exelente tu informacion, podrias dar una idea de lo mismo pero con wan dhcp ip dinamica...

    ResponderEliminar

¿Algo adicional que quieras mencionar? ¿Algun consejo?, ¿truco? Gracias!

Una mejora práctica en el Transporte DNS sobre UDP en IPv6

Por Hugo Salgado y Alejandro Acosta Introducción y planteamiento del problema En el presente documento queremos discutir sobre un draft (bor...