Comience por instalar las herramientas de net-snmp en su servidor individual. Conéctese mediante ssh a hostX.campusY:
$ sudo apt-get install snmp
$ sudo apt-get install snmp-mibs-downloader
El segundo paquete (snmp-mibs-downloader) baja los MIBs estandares de IANA y de IETF que no estan incluidos por defecto.
Nota: Para que esto funciona tiene que habilitar el fuente "multiverse" en su configuracion de APT - hemos hecho esto para Ud para este taller.
Ahora tiene que editar el archivo `/etc/snmp/snmp.conf
$ sudo editor /etc/snmp/snmp.conf
y cambiar esta linea:
mibs :
... para que se vea así:
# mibs :
Ahora, guarde el archivo y salga del editor.
Esta accion deshabilito la linea de mibs vacia que estaba indicando a las herramientas de SNMP de no cargar automaticamente los mibs en el directorio /usr/share/mibs/.
Ahora, en su directorio de inicio, haga un directorio .snmp
con el archivo snmp.conf
dentro de él, hágalo legible solo por usted y añádale las credenciales:
$ cd
$ mkdir .snmp
$ chmod 700 .snmp/
$ editor .snmp/snmp.conf
Adiciones las siguientes lineas al final:
defVersion 3
defSecurityLevel authNoPriv
defSecurityName admin
defAuthPassphrase NetManage
defAuthType SHA
defPrivType AES
# Default community when using SNMP v2c
defCommunity NetManage
Al crear este archivo de configuración, no tendrá que ingresar sus credenciales cada vez que use una de las utilidades de SNMP. De lo contrario, tendría que agregar todos estos valores en la línea de comando de esta manera:
(solo ejemplo, este comando no funciona todavia)
snmpstatus -v3 -l authNoPriv -a SHA -u admin -A NetManage hostX.campusY
Para este ejercicio, debe trabajar en conjunto como un grupo. Estará habilitando y configurando SNMP para que se ejecute en cada uno de los 4 dispositivos de red de su campus. Esto incluye:
* bdr1.campusY
* core1.campusY
* dist1-b1.campusY
* dist1-b2.campusY
Los comandos para habilitar ssh son los mismos en cada cuadro, así que divida el trabajo entre su miembro de grupo.
Ahora conéctese a los dispositivos de red de su campus y en cada uno haga lo siguiente:
$ ssh nmmlab@DEVICE.campusY.ws.nsrc.org
username: nmmlab
password: <CLASS PASSWORD>
DEVICE.campusY> enable
Password: <CLASS PASSWORD>
DEVICE.campusY# configure terminal (conf t)
Ahora es necesario agregar una lista de control de acceso (ACL) para acceso a SNMP. Luego iniciaremos el agente SNMP, asignaremos una "comunidad" de sólo lectura, así como un usuario y grupo SNMPv3 y le indicaremos al enrutador que nunca cambie los índices de interfaces al reiniciarse.
Para ello, haremos lo siguiente:
DEVICE.campusY(config)# snmp-server community NetManage ro 99
DEVICE.campusY(config)# snmp-server group ReadGroup v3 auth access 99
DEVICE.campusY(config)# access-list 99 permit 100.68.Y.128 0.0.0.15
DEVICE.campusY(config)# access-list 99 permit 100.68.100.0 0.0.0.255
DEVICE.campusY(config)# snmp-server user admin ReadGroup v3 auth sha NetManage
DEVICE.campusY(config)# snmp-server ifindex persist
Ahora salgamos del modo configuración y grabemos:
DEVICE.campusY(config)# exit
DEVICE.campusY# write memory (wr mem)
DEVICE.campusY# exit (until you return to your pc)
Si tiene preguntas sobre qué restringe la declaración de la lista de acceso pregunte a sus instructores
Para verificar que su instalación de SNMP funciona, ejecute el comando 'snmpstatus' en cada uno de los siguientes nodos desde su maquina virtual:
$ snmpstatus <IP_ADDRESS>
Donde
* Campus border router: 100.68.Y.1
* Campus core switch: 100.68.Y.2
* Building 1 distribution switch: 172.2Y.10.2
* Building 2 distribution switch: 172.2Y.20.2
Note que se ha utilizado SNMPv3. No todos los dispositivos que implementan SNMP soportan la version 3. Intentelo de nuevo, adicionando "-v2c" como parametro El comando automaticamente utiliza la comunidad definida en el fichero snmp.conf y no las credenciales de la version 3. Pruebe "-v1".
$ snmpstatus -v2c <IP_ADDRESS>
y
$ snmpstatus -v1 <IP_ADDRESS>
Qué pasa si intenta usando la comunidad incorrecta (ej. cambie "NetManage" por algo diferente) usando las opciones" -v2c -c NetWrong "?
$ snmpstatus -v2c -c NetWrong <IP_ADDRESS>
Ahora, utilizará el comando 'snmpwalk', parte de la suite SNMP, para listar las tablas asociadas con los OIDs más abajo, para cada dispositivo que probó más arriba:
.1.3.6.1.2.1.2.2.1.2
.1.3.6.1.2.1.31.1.1.1.18
.1.3.6.1.4.1.9.9.13.1
.1.3.6.1.2.1.25.2.3.1
.1.3.6.1.2.1.25.4.2.1
Intentarás esto con dos formas del comando snmpwalk
:
$ snmpwalk <IP_ADDRESS> <OID>
y
$ snmpwalk -On <IP_ADDRESS> <OID>
... Donde
... Donde
Nota: la opcion -On
habilita salida numerica, no hara traduccion del OID <-> MIB.
Con estos OIDs:
Para este ejercicio su grupo necesita verificar que el servicio SNMP está activo y respondiendo a solicitudes desde todas las máquinas de su grupo. Primero active el demonio snmpd en su máquina, luego pruebe si su máquina está respondiendo, y luego compruebe cada máquina de sus compañeros de grupo.
$ sudo apt-get install snmpd
$ sudo apt-get install libsnmp-dev
Haremos una copia de respaldo del archivo que viene con el paquete, y luego crearemos uno propio, (asegúrese de que mv "snmpd.conf" y not "snmp.conf"):
$ cd /etc/snmp
$ sudo mv snmpd.conf snmpd.conf.dist
$ sudo editor snmpd.conf
Luego, copiar/pegar lo siguiente, (cambie hostX.campusY a su propio servidor y número de campus)
# Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161
# For SNMPv2: Configure Read-Only community and restrict who can connect
rocommunity NetManage 100.68.100.0/24
rocommunity NetManage 100.68.Y.128/28
rocommunity NetManage 127.0.0.1
rocommunity6 NetManage 2001:db8:Y:1::/64
rocommunity6 NetManage ::1
# Information about this host
sysLocation NSRC Taller de Gestion de Redes
sysContact sysadm@hostX.campusY.ws.nsrc.org
# Which OSI layers are active in this host
# (Application + End-to-End layers)
sysServices 72
# Include proprietary dskTable MIB (in addition to hrStorageTable)
includeAllDisks 10%
Ahora guarde el fichero y salga del editor.
Ahora, adicione el mismo usuario SNMPv3 en su computadora. Se necesita detener snmpd antes de adicionar el usuario y reinicarlo para aplicar los cambios y el nuevo usuario
$ sudo systemctl stop snmpd
$ sudo net-snmp-create-v3-user -a SHA -A NetManage admin
$ sudo systemctl start snmpd
$ snmpstatus localhost
Qué puede observar?
Compruebe que ahora puede ejecutar snmpstatus con cada uno de los servidores de su grupo (campus):
$ snmpstatus host[1..6].campusY.ws.nsrc.org
Por ejemplo, para el grupo 5, usted deberia verificar:
* host1.campus5.ws.nsrc.org
* host2.campus5.ws.nsrc.org
* host3.campus5.ws.nsrc.org
* host4.campus5.ws.nsrc.org
* host5.campus5.ws.nsrc.org
y así sucesivamente.
Es posible que desee instalar el daemon snmp en su servidor del campus en este momento. Si es así, selecciona a alguien de tu grupo para hacer esto. Si no, se configurará durante el ejercicio posterior.
Recuerde que cuando ejecutó:
$ snmpwalk 100.68.Y.1 .1.3.6.1.4.1.9.9.13.1
El cliente SNMP (snmpwalk) no pudo interpretar todos los OIDS que venían en la respuesta:
SNMPv2-SMI::enterprises.9.9.13.1.3.1.2.1 = STRING: "chassis"
SNMPv2-SMI::enterprises.9.9.13.1.3.1.6.1 = INTEGER: 1
Qué es 9.9.13.1.3.1
?
Para poder interpretar esta información, necesitamos instalar MIBs adicionales:
Utilizaremos las siguientes MIBs (no las descargue todavía!):
MIBS de Cisco
ftp://ftp.cisco.com/pub/mibs/v2/CISCO-SMI.my
ftp://ftp.cisco.com/pub/mibs/v2/CISCO-ENVMON-MIB.my
Para hacerlo más fácil, tenemos una copia local en http://www.ws.nsrc.org/mibs/
Descargalos así:
$ cd /usr/share/mibs
$ sudo mkdir cisco
$ cd cisco
$ sudo wget http://www.ws.nsrc.org/downloads/mibs/CISCO-SMI.my
$ sudo wget http://www.ws.nsrc.org/downloads/mibs/CISCO-ENVMON-MIB.my
Ahora tenemos que decirle a las herramientas de snmp que tenemos los MIBS que deberia cargar. Edite el archivo /etc/snmp/snmp.conf y agrega las dos siguiente lineas:
mibdirs +/usr/share/mibs/cisco
mibs +CISCO-ENVMON-MIB:CISCO-SMI
Grabe el archivo y salga.
Ahora, pruebe de nuevo (el ejemplo usa bdr1.campusY.ws.nsrc.org. pero usted puede igualmente utilizar el dispositivo que esta configurando)
$ snmpwalk 100.68.Y.1 .1.3.6.1.4.1.9.9.13.1
Qué puede notar?
Intente ejecutar snmpwalk en cualquiera de los nodos (enrutadores, switches, PCs) que no haya probado todavía, en la red 100.68.Y.X.
Note el tipo de información que obtiene.
(Para los switches de distribución de su edificio use 172.2Y.10.2 y 172.2Y.20.2)
$ snmpwalk 100.68.Y.1 ifDescr
$ snmpwalk 100.68.Y.1 ifAlias
$ snmpwalk 100.68.Y.1 ifTable | less
$ snmpwalk 100.68.Y.1 ifXTable | less
$ snmpwalk 100.68.Y.1 ifOperStatus
$ snmpwalk 100.68.Y.1 ifAdminStatus
$ snmpwalk 100.68.Y.1 if
(Recuerda que con "less" apreta la barra del espacio por la proxima pagina, 'b' para ir atras una pagina y 'q' para salir)
Puede ver la diferencia entre ifTable
y ifXTable
?
Cual puede ser la diferencia entre 'ifOperStatus' y 'ifAdminStatus' ? Puede imaginar en qué escenario esto sería útil?
Puede usar nombres cortos para "caminar" estas tablas?
$ snmptranslate .1.3.6.1.4.1.9.9.13.1