| Tutoriales | UFO | enemy | unknow |
Supongamos que tenemos un dominio .cjb.net, que es de tercer nivel y gratuito, apuntando a un servidor web que teneis en vuestro PC (xxx.xxx.xxx.xxx).
Debido a cortes de luz, necesidad de formatear o que os sale muy cara la conexión, no teneis el ordenador encendido las 24 horas del dia. Sin embargo disponeis de un mirror de la pagina en el server de un colega que tiene el PC encendido las 24 horas (yyy.yyy.yyy.yyy/mi_mirror). ¡Vaya, que suerte!
Seguro que os gustaria que vuestros visitantes siempre accediesen a través del dominio que teneis ''contratado'', p.ej: www.dominio.cjb.net, en lugar de tener que escribir en el navegador http://yyy.yyy.yyy.yyy/mi_mirror cada vez que no este online tu servidor.
¡Eso es muy facil! ¡Nos metemos en la pagina de www.cjb.net, en Modify Account y modificamos la dirección donde redirige! Claro, es muy facil, pero es un toston tener que hacer todo eso cada vez que te conectes a internet (para redirigirlo a tu PC) y otra vez cuando te desconectas (para redirigirlo al mirror).
Vaya, ¿no es tan facil verdad? Es demasiado esfuerzo para una tarea tan simple.
Tras investigar unas horas en los scripts que nos ofrece este dominio, el único de utilidad (bajo Linux) es un tal cjb.pl, que actualiza la redirección contratada hacia tu ip. Este se podria utilizar para restaurar la redirección a tu máquina. Pero hay un problemilla: cuando se restaura la redirección, SOLO se cambia el dominio, es decir que si la redireccion es http://yyy.yyy.yyy.yyy/mi_mirror y tu ip es xxx.xxx.xxx.xxx, este script te cambia la redireccion por http://xxx.xxx.xxx.xxx/mi_mirror. Esto no es problema si alojamos, tanto en el mirror como en nuestro servidor, nuestra página (la pagina entera) bajo la misma ruta.
Bien, eso nos soluciona el problema de la restauración al original, pero ¿como hacemos para redirigirlo al mirror? Pues aqui es donde yo me atasqué y pensé cosas faciles, como hacer ejecutar el script cjb.pl en la maquina mirror (con los datos de tu cuenta) para que lo actualizara, que podria ser una opción sencilla, y dejar un script escuchando un puerto determinado que cuando reciba un mensaje en concreto (enviado por nuestro servidor), ejecute el cjb.pl. Si disponeis de acceso al mirror podeis adoptar esa solución casi sin problemas.
Pero mi intención es NO TOCAR al mirror en absoluto ... Circonio, ¿a que no tienes ni idea de cuando tengo redirigido mi dominio a tu mirror? XD
La manera de hacer esto es simple: vamos a utilizar otro servidor web, al que tengamos acceso via ftp, de puente.
A mi entender todos los ISP ofrecen hoy en dia espacio a sus clientes para que alojen sus paginas web. Suelen ser de servicios muy reducidos, unos 10 Mb y solo con HTML. Ni bases de datos, ASP, PHP ni nada parecido. Pues bien, con una cuenta con esas caracteristicas nos sobra para hacer de puente.;)
Primero nos crearemos un fichero index.htm.orig, con el siguiente contenido:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<frameset border="0" rows="*,0">
<frame name="frame" src="http://tu.ip.va.aqui:80/">
</frameset>
<noframes>
<meta http-equiv="refresh" content="0; url=http://tu.ip.va.aqui:80/">
<body>
<p><a href="http://tu.ip.va.aqui:80/">Pincha aqui para continuar.</a></p>
</body>
</noframes>
</html>
Ese será el fichero que subiremos a nuestro puente para redireccionar a nuestro PC. También creamos el siguiente fichero index.html.mirror:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<frameset border="0" rows="*,0">
<frame name="frame" src="http://ip.del.servidor.mirror:80/path/del/mirror/">
</frameset>
<noframes>
<meta http-equiv="refresh" content="0;
url=http://ip.del.servidor.mirror:80/path/del/mirror/">
<body>
<p><a href="http://ip.del.servidor.mirror:80/path/del/mirror/">
Pincha aqui para continuar.</a></p>
</body>
</noframes>
</html>
Este será el que subiremos al puente cuando nos desconectemos y queramos redirigir las peticiones a nuestro mirror.
Bien, entonces hagamos una prueba, subamos el primer fichero (el que redirige a nuestro servidor) a nuestra cuenta en nuestro ISP:
#ftp ftp.de_nuestro.isp
Welcome to xxxxx
Enter username: _usuario_
Password needed for _usuario_
pass:
Password ok.
Login ok
ftp>put index.html.orig index.html
Si alguno no entiende esto que eche un vistazo a man ftp. Basicamente nos conectamos al ISP (ftp ftp.de_nuestro.isp), nos pide el nombre de usuario y contraseña y, una vez son correctos, subimos el fichero index.html.orig como index.html con put.
Ahora redirigimos nuestro dominio (www.dominio.cjb.net) para que apunte a la web que nos proporciona el ISP, normalmente www.isp.com/_usuario_, una vez hecho eso, abrimos nuestro navegador favorito y escribimos www.dominio.cjb.net, deberia redirigirnos a nuestro servidor, pasando antes por el servidor de nuestro ISP. ¿Algun problema?
Bien ahora hagamos la prueba inversa, subimos el fichero de redirección al mirror (el proceso es igual solo que cambiando put index.html.orig index.html por put index.html.mirror index.html) Y volvemos a acceder a www.dominio.cjb.net, veremos como se redirige al servidor del mirror. Una buena forma de comprobar esto es modificar temporalmente la copia en nuestro servidor para poder distinguir cuando carga la copia de nuestro servidor y cuando carga la del mirror.
Bien, ya tenemos algo 'sencillo' que redirige a nuestro servidor o a nuestro mirror sin que sepa nada nuestro mirror. El problema es que hay que escribir mucho cada vez que se quiera cambiar, el mismo problema de antes. Solo que aquí, como tenemos acceso de escritura directa en el redireccionador (sobreescribiendo el index.html), es mucho mas facil de solucionar.
Antes de continuar, echad un vistazo a la ayuda del ftp. Vereis que tiene una opcion (-n) que desactiva el proceso de auto-loging, de auto-intentar un login. Bien esa opcion nos servirá. También nos será de ayuda los redirectores de entrada estandar (los < para que nos entendamos). Estos se encargan de simular la introduccion de teclas mediante el contenido de un fichero, es decir si escribimos:
#ftp -n < fichero
Y en fichero tenemos:
open ftp.de_nuestro.isp
user _usuario_ nuestro_password
Es como si hubiesemos tecleado:
#ftp -n
ftp>open ftp.de_nuestro.isp
ftp>user _usuario_ nuestro_password
Login Ok.
Con lo que obtenemos una sesion abierta de ftp a nuestro ISP. ¡Je, esto es casi todo lo que necesitamos! Porque si ponemos en un fichero (mi_server):
open ftp.de_nuestro.isp
user _usuario_ nuestro_password
put /path/hasta/index.html.orig index.html
quit
Y en otro (my_mirror):
open ftp.de_nuestro.isp
user _usuario_ nuestro_password
put /path/hasta/index.html.mirror index.html
quit
¡Simplemente con ejecutar
#ftp -n <mi_serverhabremos redirigido desde nuestro ISP a nuestro servidor. Y ejecutando
#ftp -n <my_mirrorredirigiremos desde nuestro ISP a nuestro mirror!
Vaya, quien lo diria ¿eh? Solo nos queda un detalle, que sea todo completamente automático.
Para ello yo he creado un dos scripts (seguro que se puede hacer en uno solo, pero no se todavia como) donde llamo a ftp -n </path/hasta/mi_server en uno (webinit) y a ftp -n </path/hasta/my_mirror en el otro (webstop). Los he copiado en /etc/init.d y creando un par de enlaces simbolicos en /etc/rc5.d/S98webinit (en mi caso) y otro en /etc/rc6.d/K01webstop y en /etc/rc0.d/K01webstop. Consigo que la redirección se lleve a cabo cuando enciendo o apago mi maquina.
Y eso es todo, si algo no ha quedado claro, avisad que lo explique mejor