Thursday, November 27, 2008

Cosas de la virtualización: upgrade de windows server 2000 a 2003

Hace poco me tocó upgradar un Windows 2000 server a 2003. Para prepararlo, me instalé sobre virtualbox un 2000, le instalé las tools del cliente, le puse los parche del windows update, y a continuación después de los reboots necesarios, introduje el cd del windows 2003 Enterprise y me dispuse a actualizar.

Los primeros pasos fueron bien, al meter el cd salta el autorun y te muestra una ventana en que nos da la opción de Upgrade (recommended), la elegimos, nos pregunta si queremos que se baje los cambios al instalador de 2003 de MS, tanto da que digamos sí como no (para el caso que nos ocupa), y empieza a modificar algunos ficheros, copia otros y se reinicia. Y ENTONCES ... al reiniciar, pues no llega a arrancar y no hay forma ni de volver atrás, ni de seguir adelante sin perder la instalación. Sin embargo, sin las tools del cliente; o sin el update del windows. Funcionó sin ningún problema.

Las pruebas sobre máquinas físicas no fallaron jamás.

En fin, parece que la virtualización no es un paradigma universal.

En próximas entregas intentaré depurar los errores.

Monday, November 24, 2008

Clonar una Red Hat Enterprise Linux (RHEL 5.0)

El viernes me pidieron hacer un clon de una máquina en explotación y que bajo ningún concepto podía reiniciarse ni verse afectada en su rendimiento.

La petición concreta fue la de obtener una copia exacta de la RHEL en explotación sobre un hardware muy parecido.

Se valoraron dos opciones, ambas empiezan por arrancar el clon con una LiveCd:
  1. copiar todos los ficheros de la máquina por scp, gracias al uso del phreakietar que algún día postearé.
  2. instalar un cliente de nuestro programa de backup sobre la LiveCd y realizar una recuperación del otro servidor sobre el clon, y luego cambiar la ip y el nombre de máquina, así como otras configuraciones menores.

Optamos por la segunda pero entonces una actualización del firmware de la placa base y de la scsi hizo que ninguna LiveCd arrancase sobre la máquina. Así que sobre la partición correspondiente al /home original instalamos un ubuntu 8.10 server como minimal, sobre el que se instaló el cliente del programa de backup (legato networker).

Una vez recuperado, configuré el grub propio de la ubuntu para arrancar la RHEL, pero... daba un error ... bueno dos:

* se quejaba de no encontrar la etiqueta de la partición de swap
* daba un error muy breve de algo del /dev/console y se reiniciaba

Para solucionar el primer problema:
# desmontamos la partición de swap
$>swapoff

# ejecutamos mkswap
$>mkswap -L <etiqueta> /dev/sda5

Para solucionar el segundo problema:
En las distribuciones basadas en debian, los devices (/etc/dev) se crean cada vez que el equipo arranca. Sin embargo, las RHEL y los solaris no. En RHEL deben crearse:
$>/sbin/start_udev

y tira millas!! con start_udev recreamos los devices del /dev

Y con esto el equipo vuelve a arrancar.

Antes de despedirme ... la máquina en cuestión tiene 16 procesadores, 24 GB de ram, un mirror SCSI donde está el sistema, y los datos en dos luns de la SAN de más de un tera cada uno ... es que se me pone dura sólo de pensarlo.

Buenas noches.

Tuesday, November 18, 2008

Fijar la zona horaria (time zone) en LINUX

La zona horaria marca el desfase en horas con respecto al GMT (meridiano de Greenwitch). Gracias a que el sistema conoce su zona horaria nos basta con un único servidor ntp para que varios sistemas sepan que tienen la misma hora a pesar de que su reloj marque números diferentes... Vaya, que forma más difícil de decirlo. Gracias a que un equipo sabe en qué zona horaria está, sabe que la hora de Madrid es la del GMT + 1, y por eso puede sincronizarse con otros equipos del mundo.

Basta de rollo:
Para saber la Time Zone de un equipo:
ls -l /etc/localtime
lrwxrwxrwx 1 root root 33 2006-11-27 11:43 /etc/localtime - > /usr/share/zoneinfo/Europe/London


Para cambiarla a Madrid:
ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime

Wednesday, November 12, 2008

fijar puertos RPC en windows 2003

Cuando los DC están tras un firewall hay que fijar los puertos que asigna el RPC, ya que por defecto asigna puertos entre el 1024 y el 5000.

Hay dos procedimientos, uno más pedestre y que exige reboot; otro que utiliza una herramienta del Ressource kit de microsoft y que no exige reboot: rpccfg.exe

Para el rpccfg:
  1. descargar e instalar el Resource Kit de MS Windows 2000 o 2003, y es una de las herramientas que se instalan. También se puede copiar el ejecutable en el equipo que nos interese.
  2. ejecutarlo con los parámatros: c:>rpccfg /pe 50000
  3. ejecutarlo con los parámatros: c:>rpccfg /d 0
donde en /pe le indicamos los puertos que asignará el RPC, en mi caso el 50000. Si quieres asignara varios los separas por espacios, y para intervalos con un guión: 50000-50100.
Con /d le indicamos si debe atender a la intranet o a internet. En mi caso como se trata de equipos de otros rangos, pongo 0. Si no, se pone un 1.

Editando el registro:
  1. Inicio -> Ejecutar -> regedt32
  2. Ir a HKLM/Software/Microsoft/Rpc y crear la clave InternetDentro de HKLM/Software/Microsoft/Rpc/Internet,
  3. crear las siguientes claves:
    • Ports de tipo REG_MULTI_SZ: en sus valores pondremos los puertos o rangos de puertos por los que queramos atender los rpc.

    • PortsInternetAvailable de tipo REG_SZ , si le damos el valor Y los puertos son accesibles desde internet, en caso contrario N

    • UseInternetPorts de tipo REG_SZ , si le damos el valor Y los procesos con valores por defecto usarán los puertos de internet, con N a los procesos con los valores por defecto se les asignarán puertos del pool de la intranet.

  4. Reiniciar el equipo


De esta forma podemos tener los DC en una DMZ, protegidos tras un firewall.


Buenas noches.

Wednesday, November 5, 2008

Apache: RewriteRule a una url con caracteres especiales como pe.e %

Se trata de algo muy específico, tanto que te lleva un rato ingeniartelas para que funcione.

Contexto:
Se trata de redirigir el tráfico que entra a una url a una página index.php que recibe como parámetros otra página php con unos parámetros propios. Esta técnica se usa por ejemplo cuando queremos indicarle a la página inicial qué otras páginas debe cargar en cada uno de los frames definidos, en función p.e. del idioma.

index.php?url1=./body/index.php%3Flang%3Des&n=2&m=no

donde %3F es igual a '?'
y %3D es igual a '='

pero no podemos escribirlos tal cual ya que si no php los interpretaría y se volvería un poco loco.

index.php recibe 3 argumentos:
  1. url1=./body/index.php%3Flang%3Des
  2. n=2
  3. m=no
Solución:
RewriteRule /$ http://server2.dom.com/index.php?url1=./body/index.php\%3Flang\%3Des&n=2&m=no [L,R,NE]

Lo que está en negrita es el meollo del asunto.

Falsas soluciones:
RewriteRule /$ http://server2.dom.com/index.php?url1=./body/index.php\%3Flang\%3Des&n=2&m=no [L,R]

redirige a :
http://server2.dom.com/index.php?url1=./body/index.php%253Flang%253Des&n=2&m=no

RewriteRule /$ http://server2.dom.com/index.php?url1=./body/index.php%3Flang%3Des&n=2&m=no [L,R]

redirige a:
http://server2.dom.com/index.php?url1=./body/index.phpFlangDes&n=2&m=no



Bueno, no digo que sea algo que uno deba saber, pero sí algo que recordar vagamente para saber orientarnos.


Buenas noches.