Google EL TIPO DE INFORMATICA

viernes, 12 de noviembre de 2010

Fin de Semana en el Centro de Servidores (Parte 2: Acceso SSH y Backup de VMWare ESX 3i)

Bueno, siguiendo con la historia que empecé en el pasado post, les voy a hablar ahora de como hacer Backups o copias de seguridad de las maquinas virtuales en VMWare ESX 3i. Como les había dicho en el post anterior, una vez había encontrado que lo que estaba provocando el problema de performance en el servidor era el hecho de que estaba utilizando discos SATA en lugar de SAS, debía reemplazar los discos del equipo, por lo cual necesitaba sacar primero los archivos de las maquinas virtuales para luego copiarlas nuevamente al servidor una vez haya reemplazado los discos. A continuación los pasos:
  • Habilitando SSH en VMWare ESX 3i
Para poder hacer backup de las maquinas virtuales en ESX 3i, debemos primero habilitar el acceso SSH, para esto:
  1. En la consola del equipo con VMWare ESX (en mi caso el servidor al que le debía reemplazar los discos), presionamos ALT+F1 y luego escribimos "unsupported".
  2. Nos presentara una advertencia y un promp donde introduciremos el password de "root" (este es el password que utilizamos con el cliente de VMWare para crear las maquinas virtuales y demas funciones).
  3. Una vez hayamos introducido el password de root, editamos el archivo inetd.conf. Para esto ejecutamos "vi /etc/inetd.conf".
  4. Dentro de este archivo buscaremos la linea que empieza con #ssh y presionamos la tecla "Insert", luego nos ponemos enfrente del signo de numero ("#") y presionamos backspace para borrarlo.
  5. Cuando lo hayamos borrado, presionamos la tecla "ESC" y luego escribimos ":wq" y presionamos "ENTER" para salvar los cambios y salir del editor. En caso de que hayan cometido algún error en la edición y quieran salir sin guardar cambios, en lugar de escribir ":wq" pueden escribir ":q!" para salir del editor sin guardar los cambios.
  6. Ejecutamos entonces "/sbin/services.sh restart" y ya con esto hemos habilitado SSH en nuestro VMWare ESX 3i
Para hacer la copia de las maquinas virtuales que residían en el equipo utilice un programa llamado Veeam FastSCP que permite hacer copias atraves de SSH, es rápido, fácil de usar y lo mas interesante es que es gratis!! Pueden descargarlo haciendo clic aqui, (necesitaran registrarse). El proceso de instalación es bastante sencillo, lo que deben tener pendiente es que en la instalación le solicitara las credenciales de un usuario con el privilegio "Log on as a Service", el cual podrían o agregarselo a su propio usuario o crear un nuevo usuario y asignarle ese permiso, de esta forma esta aplicacion correra bajo las credenciales del nuevo usuario. Una vez hayan instalado y ejecutado Veeam FastSCP les abrirá la siguiente ventana:


Para agregar nuestro equipo VMWare y empezar el proceso de copia, hacemos clic en el icono "Add Server" (encerrado en el circulo rojo en el gráfico). En la siguiente ventana escribimos el nombre o dirección IP del equipo donde se encuentran las maquinas virtuales. Como podrán ver nos presenta varias opciones de Servidor: VirtualCenter, ESX o ESXi y también Linux Server, ya que podríamos usar este programa como un "scp" grafico y copiar datos desde cualquier equipo Linux a traves de SSH. En mi caso, y seguro también el de ustedes, elegiremos "ESX or ESXi host" y hacemos clic en Next.


Luego tenemos que escribir el username y password para conectarnos al equipo VMWare, el cual es el mismo que utilizamos para conectarnos al equipo via la consola y que utilizamos para logearnos y habilitar SSH.

Si escribimos bien las credenciales de "root", al hacer clic en Next el programa intentara conectarse al equipo y veremos una ventana como la siguiente, la cual nos muestra un resumen de la información del equipo al cual estamos conectado (donde se encuentran las VM's), diciendo el nombre o IP del equipo, el tipo de servidor y versión, el usuario con el cual estamos conectados y el puerto. Seleccionaremos entonces en esa ventana el cuadro "Connect when I click Finish" y luego hacemos clic en Finish.


Ya que hemos agregado nuestro equipo VMWare a Veeam FasSCP, lo único que tenemos que hacer es movernos hacia los archivos de la maquina virtual que queremos copiar y moverlos hacia nuestra computadora, como cuando transferimos archivos vía FTP o SCP. Cuando la ventana de Veeam FastSCP abre nos mostrará a mano izquierda el servidor VMWare que hemos agregado y los discos que posee nuestra computadora, hacia los cuales podemos arrastrar los archivos de las VM's.


Como se puede ver en el grafico, el programa nos presenta debajo del nombre del servidor las maquinas virtuales presentes. En el caso del server del ejemplo, tiene 2 maquinas virtuales. A mano derecha nos presenta un archivo representando el "Data Storage" (vmDisk1) que fue creado en VMWare. Solamente tenemos que arrastrar las carpetas con el nombre de la maquina virtual que queremos hacia uno de nuestros discos y listo, al finalizar ya tenemos nuestro backup.

Y bueno, volviendo a mi historia, el proceso descrito anteriormente me tomo varias horas porque una de las maquinas virtuales que estaba copiando tenia mas de 1TB y la otra algunos 80GB. Luego de concluir esta fase y tener mis maquinas virtuales seguras en una unidad externa, procedí entonces a apagar el servidor, reemplazar los discos SATA por los nuevos SAS y crear la nueva unidad RAID10 donde copiaría devuelta las maquinas virtuales. En el próximo post les diré entonces como crear estas unidades en los servidores Dell PowerEdge 2950 y el proceso de restauración de las maquinas virtuales. Espero como siempre que esto les haya sido de utilidad.

miércoles, 3 de noviembre de 2010

Fin de Semana en el Centro de Servidores (Parte 1: Desempeño de discos en Linux)

Hola nuevamente!
Lo que les voy a narrar a continuación lo hago con la intensión no solo de desahogarme y de  tener escrito las cosas que hice ese fin de semana en caso que tenga que repetirlo, sino también para evitarles a ustedes algunos de mis errores. Si les contara todo en un solo post seria un cuento demasiado largo, por eso la dividire en base a las tareas principales que realice y que creo podrían ser de utilidad para ustedes, por ejemplo, en este les hablare acerca del monitoreo del desempeño de equipos Linux,  en el proximo como hacer un Backup de las maquinas virtuales de VMWare ESX 3i, y quizás algunas otras cosas que espero les sea de importancia. Es posible que en algún momento necesiten hacer lo que yo estuve haciendo, aunque seguramente ustedes tienen mejor planeacion que yo y mas experiencia. Pero quizás haya algún otro "Tipo de Informática" que necesite esta información, así que aquí les va.

Recientemente, tuve uno de esos "fines de semana con todo pago" en el cuarto de servidores haciendo un upgrade a uno de los servidores, bueno, quizás se podría decir a 3 servidores, porque era un servidor de Virtualizacion en el cual residen 2 maquinas virtuales. El upgrade consistía en reemplazar los 6 discos duros SATA a 7.2K rpm de este servidor por discos SAS 15K rpm debido a un problema de Performance que se venia presentando hacía unos meses atras. Este upgrade también incluía cambiar el nivel RAID que estábamos utilizando (RAID 5) por RAID 10 para obtener todavía mejor desempeño de los nuevos discos. El sistema operativo que utilizamos para la virtualizacion es VMWare ESX 3i, el cual esta instalado en un stick USB interno del servidor, por lo que la unidad RAID se utiliza para almacenamiento, o sea, crear en ella las maquinas virtuales. Para hacer este upgrade debía primero hacer un backup de las maquinas virtuales, luego reemplazar los discos, crear la nueva unidad RAID10 en el servidor, restaurar los backups de las maquinas virtuales a la nueva unidad RAID, arrancarlas y listo! así de simple. y habia que hacerlo en ese fin de semana, de viernes a domingo a mas tardar. Pero como siempre aparece Murphy y sus leyes y con ellas las complicaciones, además claro de los errores de un "Tipo de Informática" inexperto.

Creo que seria bueno empezar desde el principio y contarles como conseguí mi ticket para este fin de semana. Hace poco mas de un año, se decidió comprar un servidor en la compañía donde trabajo. Este servidor se utilizaría básicamente para alojar un Mail Server, pero se decidió también que este mail server corra virtualizado sobre el equipo que se iba a adquirir, asi que debia cotizar y presentar una propuesta de servidor para estos fines. Bueno, me decido por un Dell PowerEdge 2950 III, con 2 procesadores Intel Xeon Quad Core, 16 GB de RAM y 6 discos SATA a 7.2 K rpm, y esto ultimo fue lo que pago el fin de semana que da origen a este post. Para disminuir el costo del servidor y hacer el presupuesto un poco mas atractivo para la Gerencia, me decidí por los discos SATA en lugar de los discos SAS, claro, en ese tiempo no le daba mucha importancia a los discos y a su velocidad, en ese momento me preocupe mas por el espacio de almacenamiento y el presupuesto. El software que se iba a utilizar como servidor de Email es un programa llamado Kerio MailServer, es un software de colaboración, parecido a Microsoft Exchange, que permite a los usuarios tener sus buzones sincronizados con el servidor a través de un programa cliente que trabaja junto a Microsoft Outlook. Este tipo de softwares (Mail servers) requieren de mucha velocidad de acceso a los discos en el servidor, porque realiza muuuchas operaciones I/O (o lectura/escritura) en los discos, y aquí es donde radica la diferencia entre los discos SATA y SAS: los discos SAS ofrecen mucho mas operaciones I/O y a mayor velocidad (15,000 revoluciones por segundo) que los discos SATA (7,000 revoluciones), y también tienen un tiempo de vida mas largo. Los discos SATA pueden utilizarse en servidores, digamos de Backups, o servidores que demanden de mas capacidad de almacenaje que velocidad. Así que ahí esta la primera lección de este post, elegir bien el hardware que se utilizara tomando en cuenta la función que el servidor desempeñara.
  • Determinando el Problema
Comando top

Ahora se que mi problema eran los discos que estaba utilizando, pero en esos días no tenia una idea clara del problema, solo sabia que el trabajar con emails se había puesto bastante lento. Cada vez que un usuario intentaba moverse de folder en el Outlook, o simplemente abrir un mensaje, moverlo, borrarlo, etc, tenían que esperar varios minutos para poder realizar la tarea. Así que empecé a revisar que estaba pasando en el servidor, con la herramienta que empecé fue el muy conocido comando "top",este comando nos muestra en tiempo real todos los procesos que que esta ejecutando el servidor y nos muestra, entre muchas otras cosas, el porciento de CPU y memoria que estos están utilizando. A continuación les muestro lo que me devolvió "top" cuando lo ejecute en el servidor:


Comando top

Este screenshot fue tomado en un momento en que el servidor estaba bastante ocupado (y bastante lento). Como pueden ver el comando top muestra todos los procesos corriendo así también como los recursos que están consumiendo (en cuanto a memoria y procesador), también muestra el PID de los procesos. Como se imaginaran el proceso "mailserver" es el correspondiente al servidor de email que esta corriendo en el servidor y como se ve en el gráfico esta consumiendo el 191% del CPU. Al principio pensé que el problema estaba aquí, en el quizás la capacidad de procesamiento del servidor no era suficiente para el software, pero vi que en otras ocasiones el uso del CPU estaba bajo y de todas formas había lentitud en el servidor. Así que seguí buscando e incluso envié el screenshot al foro de usuarios del Mailserver y alguien me señalo algo en lo que no me había fijado en la salida de este comando; el "Load Average" (parte superior derecha del gráfico). Si se fijan este indicador muestra un "porcentaje de carga" de 68. Comencé a investigar en Internet para ver que significaba este medidor y mas o menos lo que pude entender es que esto muestra el porcentaje de procesos en cola esperando por recursos del sistema, por ejemplo, esperando tiempo del CPU, esperando acceso al sistema de discos, etc. y que lo recomendable es que se encuentre por debajo del 10%. Si se fijan este medidor esta separado en 3, lo cual expresa el valor del momento actual, la carga en los próximos 5 minutos y luego en los próximo 15 minutos. En el gráfico se ven los números 68.37, 61.71 y 55.27. Una lectura alta en ese medidor generalmente indica un cuello de botella, o sea, que algún recurso del sistema esta, digamos, quedando pequeño o que no esta respondiendo a tiempo las solicitudes, por esta razón empecé entonces a monitorear la actividad en el sistema de discos para ver si el "cuello de botella" se encontraba en los discos.

Comando iostat

Fue entonces cuando empecé a utilizar la herramienta "iostat". El comando iostat brinda "las métricas de desempeño de las interfaces de almacenamiento". Este comando, entre otras informaciones, nos muestra el porcentaje de utilizacion del disco o partición (%b), el tiempo que tarda en responder a una solicitud (service time o svc_t),  y la longitud promedio de la cola de solicitudes para el dispositivo monitoreado (queue). Ejecute iostat con las siguientes opciones:

# iostat sda7 -x 3

Esto le indica a iostat que nos muestre información extendida (-x) de la partición sda7 y que muestre la información en intervalos de 3 segundos hasta que cancelemos el comando con CTRL-C. A continuación lo que me mostró iostat al ejecutarlo en el servidor:

Comando iostat

Como se puede ver en el gráfico, iostat me mostró que el cuello de botella se encontraba realmente en el sistema de discos: el porciento de utilizacion (%b) no bajaba de un 100%, la cola de procesos siempre se encontraba por encima de los 100 (actualmente difícilmente llega a 10). Claro, esta lectura también podría indicar que uno de los discos del arreglo (RAID5 en ese momento) estaba defectuoso o algún problema en la partición, por lo que primero me asegure de que este no sea el problema (usando fsck). Al comprobar que tanto los discos como la partición estaban funcionando correctamente, solo quedaba la opción de hacer un upgrade al sistema de discos reemplazando los discos actuales, SATA 7.2K RPM, por discos SAS a 15K RPM y gracias a la información provista por iostat ya tenia las pruebas para solicitar el cambio.

Creo que la moraleja es que a la hora de hacer una recomendación, debemos siempre recomendar lo óptimo para el trabajo y no basarnos solamente en lo económico, debemos presentar, claro esta, la justificacion de porque se recomienda tal o cual dispositivo (o servidor en este caso) y las consecuencias de inclinar la balanza solamente por el lado económico, que fue el error que yo cometí. En caso de que la gerencia o las personas que deben tomar la decisión se inclinen por la solución mas barata pero no la mas óptima para el trabajo, bueno, eso ya debe quedar a responsabilidad de ellos, pero por lo menos nosotros cumplimos con recomendar el equipo adecuado, y hay que tratar de hacer la recomendación por escrito como evidencia para cuando explote el problema :D. Claro, a fin de cuentas de todas formas nos tocara a nosotros, los "Tipos de Informática", cargar con las consecuencias de su elección, pero por lo menos podremos decir (aunque sea solo en nuestra mente) "Se lo dije!!"

Bueno, todo esto fue lo que motivo que me pasara el fin de semana aquí en el cuarto de los Servidores haciendo el trabajo de Upgrade de los discos. En los próximos post les contare entonces el proceso de cambio y algunos problemas que se presentaron. Espero como siempre que esto les haya sido de provecho y que no hayan perdido su tiempo leyendome. Hasta el próximo!!

(Fin de Semana en el Centro de Servidores Parte 2)

sábado, 26 de junio de 2010

Un Poco de IPTables (Parte 1)

Hace un par de años, cuando empezaba a dar mis primeros pasos en Linux (en los cuales todavia estoy), escuchaba a algunas personas que hablaban de IPTables como algo dificil y complicado, no muy facil de entender por los simples mortales. Hasta que me toco (al mas simple de los mortales) empezar a estudiar sobre IPTables y note que no existia tal complejidad, claro, afortunadamente antes de empezar a "meter mano" con IPTables ya habia aprendido algo de redes y sobre todo de TCP/IP, entonces me di cuenta de que talves la razon por la que algunas personas encuentran complicado IPTables es porque no saben como trabaja TCP/IP o saben muy poco sobre el protocolo. Asi que creo que antes de empezar a hablar de IPTables debemos entender lo basico TCP/IP y entender como viajan los datos a traves de la red, asi entenderemos el trabajo de IPTables y veremos que el configurar sus reglas no es nada del otro mundo. 

Empecemos entonces con lo basico, una breve y resumida explicacion de TCP/IP. TCP/IP es un conjunto de protocolos que permite la transmision de datos en una red. Este es el protocolo en el cual esta basado Internet. En las redes TCP/IP la informacion es transmitida en "paquetes", o sea, los datos que se van a transmitir por la red son separados en "pedacitos" y transmitidos a traves del cable. TCP/IP esta divido en 4 capas, en cada una de estas capas de agrupan diferentes protocolos (de ahi el hecho de que es un "Conjunto" de protocolos). La primera capa (de arriba hacia abajo) es la capa de aplicacion, esta es la capa donde se generan los datos. Se encuentran los protocolos HTTP, POP3, FTP, DNS, etc. como pueden ver, son los protocolos que a diario utilizamos para navegar, descargar emails, descargar o transmitir archivos, etc. Luego se encuentra la capa de "Transporte". Esta capa se encargar de gestionar el transporte de los datos y asegurarse de que no hayan errores en la transmision, se encarga de crear una especie de "circuito virtual" con el equipo que recibira o transmitira la informacion. En esta capa se encuentran los protocolos TCP y UDP. Luego sigue la capa de "Red". Esta capa se encarga del enrutamiento o encaminamiento de los paquetes y de su direccionamiento. En esta capa  trabaja el procolo IP (me imagino que muchos de ustedes han configurado "direcciones IP"). Por ultimo, se encuentra la capa de "Acceso al medio" o capa "Fisica". Esta es la capa que se encarga de, digamos, "escribir" los datos en el cable. En esta capa se encuentra, por ejemplo, el protocolo Ethernet.

Modelo TCP/IP

A medida que los paquetes pasan de una capa a la otra, los protocolos que trabajan en las capas le agregan informacion al paquete, la cual sera leida por los protocolos de la misma capa del equipo que recibira el paquete que se esta enviando. A esta informacion se le llama "header" o "cabecera". Cada capa "encapsula" o "reempaqueta" la data que proviene de la capa de aplicacion dentro de otro paquete que contiene la cabecera del protocolo de la capa.

Capas de TCP/IP

Por ejemplo, TCP, en la capa de transporte, utiliza el concepto de "numero de puerto" para diferenciar las aplicaciones de la capa superior, de esta forma es que podemos recibir informacion desde diferentes sitios de internet hacia diferentes aplicaciones en nuestros equipos, de esta forma TCP sabe a cual aplicacion enviar los datos que recibe desde la red, ya sea al browser de Internet, al cliente de email o a nuestro programa de Chat. Y como TCP necesita esta informacion (entre otras mas), agrega un "numero de puerto de origen", que es el puerto que le asigna a la aplicacion que solicita o transmite la informacion desde nuestra computadora, y un "numero de puerto de destino", que es el puerto de la aplicacion al que va dirigido el paquete en el equipo remoto. De esta forma de establece una especie de circuito entre los 2 puertos (origen y destino). Pero ademas de esto, TCP tambien numera los paquetes para establecer una secuencia y mantener control sobre la transmision, asi que tambien agrega dentro de la cabecera un "numero de secuencia". A continuacion un grafico que muestra la cabecera que agrega TCP al paquete original con todos sus campos.

Campor de la cabecera de un paquete segmento TCP

 Como pueden ver, luego de todos los campos de la cabecera TCP se encuentra la Data del paquete. Luego que el paquete sale de la capa de transporte, se dirige a la capa de red, donde el protocolo IP se encarga tambien de agregar otra cabecera al paquete, pero esta vez con informacion concerniente a IP. Como mencionamos anteriormente una de las funciones de IP es direccionar los paquetes, por esto la informacion que agrega al paquete es informacion que se utilizara para hacer llegar el paquete hacia el equipo destino y tambien informara cual equipo envio el paquete, de modo que el equipo receptor pueda contestar o confirmar su recepcion. Parte de la informacion que se encuentra en la cabecera IP es, por ejemplo, la direccion IP del equipo al que va dirigido el paquete (IP Destino) y la direccion IP del equipo que emite el paquete (IP origen), entre otros. A continuacion la cabecera IP con todos sus campos:

Campos de la cabecera de un paquete IP

Cuando el paquete sale de esta capa, pasa a la capa fisica. En esta capa tambien se agrega otra cabecera al paquete, pero esta vez lo hace el protocolo Ethernet (para el caso de las redes Ethernet, que son las mas comunes hoy dia). Entre la informacion que le agrega este protocolo al paquete se encuentra el MAC Address de origen y el MAC Address de destino. Como saben el MAC Address es la direccion fisica y unica de cada tarjeta de red. No abundaremos mucho en esta capa, ya que mayormente trabajaremos con IPTables con las capas de Tranporte (TCP y UDP) y la capa de Red (IP).

Ahora que ya sabemos como viajan los datos a traves de la red, podemos empezar a hablar sobre IPTables. IPTables es capaz de leer toda la informacion en la cabecera de los paquetes segun van entrando al equipo, incluso antes de que la misma pila TCP/IP pueda tener acceso a ellos. Entonces, al ser capaz de leer y analizar toda la informacion de cabecera del paquete, como IP de origen y destino, puerto de origen y destino, tipo de protocolo (TCP o UDP), y practicamente todos los otros campos de cabecera, pueden establecerse "reglas" o "filtros" en base a esa informacion. De esa forma, podemos hacer que IPTables bloquee o no permita el acceso de paquetes que en su cabecera TCP indiquen que  se dirigen hacia un "puerto 80" de algun equipo remoto, o que en la cabecera IP indique que se dirige a un IP destino en especifico.

Bueno, creo que por ahora esta bien como introduccion a IPTables, basicamente porque ya me esta ganando el sueño (son las 1 y tanto de la mañana) y porque se haria muy extenso este post.  En el proximo post hablaremos en mas detalle de que es IPTables, su funcionamiento y como configurarlo.

Un Poco de IPTables (Parte 2)

viernes, 28 de mayo de 2010

Resetar Password Router Cisco 800

No se si les ha pasado esto, configuran su Router con un muy buen password (mas de 8 caracteres, mayuscalas, minusculas y algun numero o caracter especial), pero mientras estan pensando "oye, que buen password me acabo de inventar" se les olvida escribirlo en algun documento (seguro y encriptado , claro esta). Bueno no se a ustedes pero a mi me paso ayer. Tuve que hacer unos cambios en un router ADSL Cisco 800 y cuando voy muy confiado a buscar mi password en el documento me "acuerdo que se me olvido" anotar el password. Por suerte, hay un procedimiento para resetar los password de los routers cisco, y de esto se tratara el post de hoy. Si, lo se, hay un monton de sitios y blogs que describen este procedimiento pero,ey?! porque no puedo subirlo yo tambien en mi blog??

Como seguramente saben, cuando un router Cisco bootea, busca lee un registro en el router que apunta hacia la configuracion del router, el archivo "startup-config". Este archivo contiene toda las configuraciones que hemos hecho en el router, incluyendo el password o "secret" que hayamos configurado en este. Lo que haremos sera interrumpir esta secuencia de modo que el Router no lea el registro que lo enviara hacia el "startup-config", con esto tambien interrumpiremos la carga del IOS (el sistema operativo de nuestro Router Cisco) pero podremos entrar al router en "modo de recuperacion de emergencia" el cual no contiene todas las opciones del sistema operativo normal, pero contiene algunas herramientas que nos seran de gran utilidad para esta tarea de recuperacion de password.

Lo primero que tenemos que hacer para entrar en este modo es conectarnos al Router por consola (usando por ejemplo, Hyperterminal en Windows XP). Una vez estamos conectados al router, reiniciamos el equipo, cuando este en el proceso de booteo presionamos las teclas "CTRL + Pause/Break" hasta que nos aparezca un promp como el siguiente:

ROMMON >

Esto nos indica que estamos en el modo de recuperacion. Aqui escribiremos el comando "confreg 0x2142" y presionamos "Enter". Lo que le estamos diciendo al router con esto es que al momento de hacer el booteo y la carga del IOS busque la configuracion en el registro 0x2142 en lugar del registro 0x2102 que es el registro del cual router el Cisco 800 obtiene la configuracion, por lo cual la proxima ver que el router inicie subira sin ninguna configuracion, como de fabrica. Una vez hayamos insertado este comando, ejecutamos "reset" para que el router se reinicie, esta vez dejamos que cargue completamente. El router nos preguntara si queremos usar la "Auto-confguracion" a lo que responderemos "NO". Esta vez, el router subira con este promp:

ROUTER >

Aqui ya estamos en nuestro router y el sistema operativo esta cargado, lo primero que haremos sera entrar al "modo privilegiado" y como no esta cargada la configuracion no necesitaremos especificar ningun password. Una vez hemos entrado al modo privilegiado procederemos a cargar el "startup-config" al "running-config" para modificar el password. A continuacion los pasos:

ROUTER > ena
ROUTER# copy startup-config running-config
ROUTER# config t
ROUTER(Config)# line console 0
ROUTER(config-line)# enable password nuevopassword
ROUTER(config-line)# login
ROUTER(config-line)# exit
ROUTER(config)# enable secret nuevopassword

Creo que esta de mas decir que en lugar de "nuevopassword" deben escribir el nuevo password que queieren en el Router. En este caso le cambiamos el password primero para el acceso por consola (line console 0) y luego establecemos el password tambien para acceso al modo privilegiado (enable). Luego de haber completado estas tareas procedemos a reestablecer registro de configuracion original de modo que la proxima vez que el router suba cargue la configuracion (startup-config) que acabamos de modificar, luego salimos del modo de configuracion y pasamos al modo privilegiado donde guaremos los cambios que hemos hecho utilizando el comando "wr". Por ultimo ejecutamos "reload" para reiniciar el router, como se muestra a continuacion:

ROUTER(config)# config-register 0x2102
ROUTER(config)# exit
ROUTER# wr
ROUTER# reload

Cuando nuestro router reinicie, tendra configurado el password que acabamos de configurarle. Bueno hasata aqui el post, espero que esto les haya servido, o que por lo menos lo hayan entendido mejor que en otro de los blogs donde aparece, o bueno, si les aparecio de primero en Google (ojala!) hayan encontrado lo que necesitaban. Hasta el proximo!

lunes, 26 de abril de 2010

Correr Aplicaciones como Servicios en Windows Server 2003

Recientemente en el trabajo se me presento el siguiente caso: Debia instalar en uno de los servidores un programa que usarian un grupo de usuarios, este programa revisaria periodicamente un sitio FTP y si habia algun archivo nuevo lo descargaria a un determinado folder, con el que los usuarios luego trabajarian. El problema es que el sistema con el que trabajarian los usuarios se a traves Terminal Services, y el programa que alimentaria a este sistema a traves de la descarga de archivos FTP no estaba diseñado para trabajar como servicio, lo que significa que cada usuario debia iniciar la aplicacion FTP una vez logeado al servidor.

Bueno, no es tan problematico el hecho de que los usuarios tengan que iniciar ellos mismos esa aplicacion, el problema es que si 15 usuarios se logeaban al servidor e iniciaban la aplicacion, tendria 15 instancias de la misma aplicacion corriendo en el servidor de Terminal Services, y todos haciendo la misma tarea. La solucion: hacerlo correr como un servicio, asi los usuarios no tendrian que lidiar con abrir la aplicacion [mientas menos hagan los usuarios en el servidor mejor] y tendria una sola instancia de la aplicacion corriendo. Para hacer esto, utilizamos los comandos INSTSRV.EXE y SRVANY.EXE, ambos incluidos en el Windows Server 2003 Resource Kit Tools. Instsrv.exe crea o remueve servicios en el sistema y Srvany.exe nos permite correr las aplicaciones como servicio. Para crear entonces nuestro nuevo servicio ejecutamos:

ruta-al-comando-INSTSRV.EXE Mi Servicio ruta-al-comando-SRVANY.EXE

Donde "ruta-al-comando-instsrv.exe" es, como ya se habran imaginado, la ruta donde se encuentra dicho comando. Claro, esto tenemos que especificarlo en caso de que no hayamos incluido ese comando comando en la variable del sistema "PATH". Luego escribimos el nombre que queremos dar a nuestro nuevo servicio ("Mi Servicio"). Y por ultimo la ruta hacia el comando "srvany.exe". Por ejemplo, supongamos que llamaremos a nuestro nuevo servicio "Sftp", el comando seria de esta forma:

C:\Program Files\Windows\windows Resource Kits\Tools\instsrv.exe Sftp C:\Program Files\Windows\windows Resource Kits\Tools\srvany.exe

Con esto hemos creado nuestro servicio, ahora debemos indicar en el registro la ruta hacia la aplicacion. Para esto abrimos en editor del registro (regedit.exe). Y nos movemos hacia la siguiente clave del registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\

Aqui buscamos la clave correspondiente al servicio que acabamos de crear, de acuerdo a este ejemplo debe llamarse "Sftp". Una vez estemos sobre esta clave, crearemos una nueva sub-clave haciendo clic derecho encima de "Sftp", moviendonos hacia "New" y luego seleccionando "Key", a la que renombraremos "Parameters". Hacemos clic derecho nuevamente encima de "Parameters", nos movemos encima de "New" y seleccionamos "String Value", a esta estrada la llamaremos "Application". Esta clave del registro sera la que indicara la ruta hacia el ejecutable de la aplicacion que queremos correr como servicio, asi que haremos doble clic enicima de "Application" y escribiremos la ruta hacia nuestro ejecutable, por ejemplo, C:\Program Files\Sftp\Sftp.exe".

Windows Regedit

El grafico anterior muestra los cambios dentro de la clave del registro correspondiente a nuestro nuevo servicio. Una vez hemos hecho estos cambios, solo nos resta iniciar nuestro servicio, para esto nos vamos a la consola de administracion de servicios (podemos acceder ejecutando services.msc) e iniciandolo como cualquier otro servicio (clic derecho encima del servicio y seleccionando "start").

Consola de Servicios Windows Server

Ya con esto tenemos nuestra aplicacion corriendo como servicio. Espero que esta informacion les haya sido de utilidad. Hasta el Proximo!