lunes, 26 de marzo de 2012

RMON: Alertas personalizadas para tus dispositivos de red

En ocasiones es posible que estés intentando monitorizar algo con SNMP, pero no encuentres una trap que detecte exactamente lo que quieres monitorizar como alerta, para esos casos, y con un poco de paciencia puedes habilitar RMON,

RMON lo que hace es enviar un trap personalizado, que tu creas a partir de una MIB, por ejemplo puedes crear un trap que compruebe la MIB de temperatura de un router, y en caso  de sobrepasar un umbral en grados centígrados lance un trap a tu servidor de SNMP que ponga ¡¡¡Traed extintores que aquí hace mas calor que en el infierno!!!. :D

Ejemplo:

Entrando en la web de cisco comprobamos que hay una MIB para la temperatura ambiente en grados centígrados , es la 1.3.6.1.4.1.9.9.13.1.3.1.3 , y la vamos a usar para lanzar un trap cuando superemos los 45 gradosy otro cuando bajemos de los 10 grados, 300 es el el tiempo en segundo cada cuanto el router comprobará la temperatura.

Router(config)#rmon alarm 33 .1.3.6.1.4.1.9.9.13.1.3.1.3 300 absolute rising-threshold 45 1 falling-threshold 10 2

El evento 1 es para cuando superamos los 45 grados, y el evento 2 cuando bajamos de los 10.

Router(config)#rmon event 1 trap <COMMUNITY_SNMP> description "¡¡¡Aqui hace un calor del demonio y yo sin mi bronceador!!!" log

Router(config)#rmon event 2 trap <COMMUNITY_SNMP> description "¡¡¡Que frio hace!!! Una bufanda y unos guantes no me vendrían mal" log

Hay que configurar igualmente el servidor de SNMP, pero eso ya vimos como se hacía en el artículo anterior.

Desde luego los operadores de monitorización no podrán decir que no creo mensajes de alarma fácilmente entendibles.

lunes, 19 de marzo de 2012

mGRE: Tuneles GRE Multipunto

En un artículo anterior estuvimos tratando como se configuran los túneles GRE punto a punto, que son una herramienta realmente fácil de utilizar, y con una excesiva tendencia a hacer chapucillas con ella. Pese a todo, los túneles GRE llevan muchísimo tiempo funcionando, y a todos nos han salvado muchas veces de alguna limitación en un proyecto que no estaba contemplada al comienzo.

Los túneles GRE multipunto son una tecnología poco conocida, con el mismo potencial que un túnel GRE, pero con el añadido de poder crear un segmento de red punto multipunto, emulando lo que por ejemplo podría ser una conexión de frame-relay punto multipunto. Honestamente debo decir que nunca en el mundo real me he encontrado ningún engendro de este tipo funcionando en una red real, pero en un entorno en el que tengas que montar muchos túneles GRE contra un site central, pero queriendo tener conectividad entre las oficinas remotas, si el número de sedes es muy elevado, puede llegar a ser una opción.

A la hora de configurar túneles GRE multipunto tenemos que tener en cuenta que estamos configurando un tunel GRE con sus propiedades y limitaciones, pero ademas hay que añadirle las propiedades y limitaciones de una red punto multipunto, como Frame relay, esto supone que tendrá que existir un punto que hará la función de hub, donde se concentraran todas la conexiones, y varios spokes, que serán sitios remotos que solo tendrán conexión con el hub, y si quieren llegar al resto de spokes deberán hacerlo a través de hub.

La  característica común entre un mGRE, y frame relay, es que ambos tienen un mecanismo para la resolución de direcciones, donde en frame relay se usa inverse ARP para resolver que numero de DLCI  se corresponde a la IP de el vecino, mGRE usa NHRP(Next Hop Resolution Protocol) que lo que hace es crear una tabla de equivalencias entre las IP dentro del tunel y la IP de destino a la que se tienen que enviar los paquetes para alcanzar los extremos del tunnel.

Configuración Basica:

HUB:

interface Tunnel0
  ip address x.x.x.x x.x.x.x
  ip nhrp map multicast dynamic <----si vas a usar un protocolo de routing deja que se hagan los mapeos de multicast dinámicos
  ip nhrp network-id 100 <----identifica a la red tiene que ser igual en todos
  tunnel source FastEthernet0/0<--- igual que los normales
  tunnel mode gre multipoint
  tunnel key 333<---si tienes varios y con VRF es mejor que lo uses

SPOKES:

interface Tunnel0
 ip address y.y.y.y y.y.y.y
 ip nhrp map <ip_dentro_tunel> <ip_fuera_tunel> <---el equivalente a un mapeo estático en FR, se pone en los spokes
 ip nhrp map multicast <ip_dentro_tunel_del_hub> <---indica a quien se envía el multicast
 ip nhrp network-id 100
 ip nhrp nhs <ip_dentro_tunel_del_hub> <---el servidor de nhrp osea el hub
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 333
En el próximo artículo veremos un ejemplo real, configurado y un poco de troubleshooting.

lunes, 12 de marzo de 2012

mGRE: Configuración de tuneles GRE multipunto

Anteriormente vimos como se configuraban los mGRE, pero no habíamos visto un ejemplo de configuración de mGRE.

El ejemplo es muy sencillo, tres routers conectados en la misma LAN, el R1 es el HUB, y los otros dos son los spokes, lo he hecho en la misma lan, pero podían ser routers distanciados completamente, a miles de kilómetros...etc.


Configuración del HUB:

hostname HUB

interface Tunnel0
 ip address 192.168.1.1 255.255.255.0
 no ip redirects
 ip nhrp map multicast dynamic
 ip nhrp network-id 100
 ip nhrp shortcut
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 333
!
interface FastEthernet0/0
 ip address 80.10.10.1 255.255.255.0
 duplex auto
 speed auto
!        
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
 Configuración de el SPOKE 1:

hostname SPOKE1
interface Tunnel0
 ip address 192.168.1.2 255.255.255.0
 no ip redirects
 ip nhrp map 192.168.1.1 80.10.10.1
 ip nhrp map multicast 80.10.10.1
 ip nhrp network-id 100
 ip nhrp nhs 192.168.1.1
 ip nhrp registration timeout 120
 ip nhrp shortcut
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 333
!
interface FastEthernet0/0
 ip address 80.10.10.2 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto

Configuración de SPOKE2:

hostname SPOKE2
interface Tunnel0
 ip address 192.168.1.3 255.255.255.0
 no ip redirects
 ip nhrp map 192.168.1.1 80.10.10.1
 ip nhrp network-id 100
 ip nhrp nhs 192.168.1.1
 ip nhrp registration timeout 120
 ip nhrp shortcut
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 333
!
interface FastEthernet0/0
 ip address 80.10.10.3 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
Tenemos conectividad desde todos los sitios:

HUB#ping 192.168.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/17/72 ms
HUB#ping 192.168.1.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/12 ms

SPOKE1#          ping 192.168.1.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/32/100 ms
SPOKE1#          ping 192.168.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
SPOKE1#

SPOKE2#ping 192.168.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/11/24 ms
SPOKE2#ping 192.168.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/12/28 ms
Después de haberlo configurado en el spoke 1 deberíamos ver lo siguiente:

SPOKE1#show ip nhrp brief
   Target             Via            NBMA           Mode   Intfc   Claimed
192.168.1.1/32     192.168.1.1     80.10.10.1      static   Tu0     <   >
192.168.1.2/32     192.168.1.2     80.10.10.2      dynamic  Tu0     <   >
192.168.1.3/32     192.168.1.3     80.10.10.3      dynamic  Tu0     <   >
 Como podemos ver, tenemos una entrada estática para alcanzar el hub, y dinámicamente aprendemos como llegar al resto spokes.

lunes, 5 de marzo de 2012

SNMP: Configurando monitorización y alertas en equipos cisco

Una de esas cosas básicas que debería tener cualquier red medio decente es monitorización, y para ello se utiliza SNMP.

SNMP es algo bastante sencillo, consiste en un servidor que cada x tiempo se conecta a una serie de direcciones ip que tiene almacenadas, y extrae información de varios parámetros, como por ejemplo la CPU usada en el router, el porcentaje de uso de una interfaz...etc.

Para hacer esto utiliza MIBs, que permiten extraer los parámetros requeridos de cada dispositivo de cada fabricante, por ejemplo para saber cual es el uso de CPU de un router se utiliza una MIB, en cambio para saber la ocupación de disco duro de un pc con windows 7 se utilizara otra.

Un servidor de SNMP solo se puede conectar a un dispositivo por SNMP si en el dispositivo hay un agente de SNMP corriendo, y aquí veremos como configurar el agente SNMP en un disitivo cisco con ios.



Lo primero que debe hacerse para habilitar snmp es activar una community string, la community va a ser una especie de password que va a tener el dispositivo para poder conectarse a el por SNMP, se pueden configurar varias, y se puede regular lo que se puede hacer con cada community, si queremos que la community solo permita leer el estado del router pero no modificarlo deberemos crear una commmunity de lectura, si ademas queremos permitir que desde el servidor de SNMP se modifique la configuración del equipo deberemos crear una community de escritura.

Router(config)#snmp-server community SuPeRsEcRetO ?
  <1-99>       Std IP accesslist allowing access with this community string
  <1300-1999>  Expanded IP accesslist allowing access with this community
               string
  WORD         Access-list name
  ipv6         Specify IPv6 Named Access-List
  ro           Read-only access with this community string
  rw           Read-write access with this community string
  view         Restrict this community to a named MIB view

Como se puede ver el comando es muy sencillo, con ro para solo lectura, rw para lectura y escritura, y además podemos o mas bien debemos crear una ACL en la que restringiremos los equipos que pueden consultar por SNMP el estado del disposivivo.

Una vez metido este comando ya tenemos la funcionalidad básica de SNMP, tenemos una community y nuestro equipo ya debería ser accesible por SNMP.

Ahora vamos a habilitar otras cosillas útiles, como por ejemplo habilitar eventos que automáticamente hagan que nuestro dispositivo lance información SNMP a un servidor de monitorización

snmp-server enable traps snmp linkdown linkup <---- Si se cae o levanta una interfaz avísame
snmp-server enable traps cpu threshold <---- Avísame si la cpu sobrepasa un umbra
process cpu threshold type total rising 80 interval 60 <---- El umbral es el 80% de CPU, se comprueba cada 60 segundos y si se sobrepasa se envía un trap.

snmp-server host 155.1.146.100 SuPeRsEcRetO <---- el host al que envío los traps de  SNMP y la comuunity con la que lo hago


¿Sobre que cosas se pueden enviar traps de SNMP?

Router(config)#snmp-server enable traps ?  
  atm            Enable SNMP atm traps
  bgp            Enable BGP traps
  bstun          Enable SNMP BSTUN traps
  casa           Enable SNMP casa traps
  cnpd           Enable NBAR Protocol Discovery traps
  config         Enable SNMP config traps
  config-copy    Enable SNMP config-copy traps
  cpu            Allow cpu related traps
  dial           Enable SNMP dial control traps
  dlsw           Enable SNMP dlsw traps
  dnis           Enable SNMP DNIS traps
  ds0-busyout    Enable ds0-busyout traps
  ds1            Enable SNMP DS1 traps
  ds1-loopback   Enable ds1-loopback traps
  ds3            Enable SNMP DS3 traps
  dsp            Enable SNMP dsp traps
  eigrp          Enable SNMP EIGRP traps
  entity         Enable SNMP entity traps
  envmon         Enable SNMP environmental monitor traps
  event-manager  Enable SNMP Embedded Event Manager traps
  flash          Enable SNMP FLASH notifications
  frame-relay    Enable SNMP frame-relay traps
  hsrp           Enable SNMP HSRP traps
  icsudsu        Enable SNMP ICSUDSU traps
  ipmobile       Enable SNMP ipmobile traps
  ipmulticast    Enable SNMP ipmulticast traps
  ipsec          Enable IPsec traps
  isakmp         Enable ISAKMP traps traps
  isdn           Enable SNMP isdn traps
  l2tun          Enable SNMP L2 tunnel protocol traps
  msdp           Enable SNMP MSDP traps
  mvpn           Enable Multicast Virtual Private Networks traps
  ospf           Enable OSPF traps
  pim            Enable SNMP PIM traps
  pppoe          Enable SNMP pppoe traps
  rsvp           Enable RSVP flow change traps
  rtr            Enable SNMP Response Time Reporter traps
  snmp           Enable SNMP traps
  stun           Enable SNMP STUN traps
  syslog         Enable SNMP syslog traps
  tty            Enable TCP connection traps
  voice          Enable SNMP voice traps
  vrrp           Enable SNMP vrrp traps
  vtp            Enable SNMP VTP traps
  xgcp           Enable XGCP protocol traps

Como se puede ver se puede configurar traps sobre muchas cosas, pero mi recomendación es no pasarse configurando traps, porque si tienes demasiada información en el el servidor de SNMP al final nadie le hace ni caso, mejor solo monitorizar cosas importantes.






Por último os dejo un link en la web de cisco, por si un día os toca monitorizar algo para lo que no teneis la mib, es el mib locator, donde con paciencia podeis encontrar la mib para monitorizar todo lo que se pueda monitorizar en un dispositivo de cisco.

http://tools.cisco.com/ITDIT/MIBS/servlet/index