viernes, marzo 02, 2012

Proxy inverso para el wol casero

Un problema que se me presentaba en el proyecto WOL casero era el de como acceder desde el exterior a los servicios http/ssh que corren en el equipo de sobremesa, conjuntamente con los servicios http/ssh que estarán activos en  el equipo pequeño que realizará el wakeonlan del de sobremesa y utilizando los mismos puertos.

El equipo pequeño (alixwrap) dispondrá de una ip fija dentro del rango 192.168.1.0/24 (por ejemplo la 192.168.1.98) y tendrá una redirección por nat del puerto 80 de la ip publica del router hacia su puerto 80, en donde estará levantado un apache (httpd). En este apache habrá una aplicación en PHP que hará el wakeonlan del equipo de sobremesa.

El equipo de sobremesa (sobremesa) tendrá otra ip fija del rango 192.168.1.0/24 (la 192.168.1.99) y dispone de dos servicios levantados, uno en el puerto 80 (httpd) y otro en el puerto 22 (sshd). Al primero, que no tendrá un nat, no se podrá acceder (en principio). Al segundo, sí que tendra un nat, desde el puerto 443 del router hacia el puerto 22.

Para acceder al servidor web del equipo de sobremesa se monta un proxy inverso en el servidor web que corre en el equipo alixwrap, de tal forma, que todas las peticiones que le lleguen al path "/sobremesa/*" serán redirigidas hacia la ip del equipo de sobremesa, conservando el path completo.

Sólo queda activar el proxy en el apache, habilitando los modulos mod_proxy y mod_proxy_http
$ a2enmod proxy
$ a2enmod proxy_http
y en /etc/apache2/conf.d/ creamos un fichero llamado proxy_sobremesa.conf con el siguiente contenido
ProxyPass /sobremesa/ http://192.168.1.99/sobremesa/
ProxyPassReverse /sobremesa/ http://192.168.1.99/sobremesa/

Y todos los servicios que sean accesibles desde el exterior, deben estar dentro del path "/sobremesa/" en el apache, como el subversión o la aplicación que muestra la webcam.

Alguien me dirá que podía abrir otros puertos en el router y agregar otros nat de puertos para acceder a los servicios de cada uno de los pcs, evitando la necesidad de disponer de un proxy, pero necesito que los servicios estén corriendo en el puerto 80/443 al estar considerados estos puertos de navegación libre en muchas redes corporativas, saltándome sus reglas de seguridad cómodamente.

A falta de hacer el script en php para invocar el wakeonlan y añadirle seguridad (https para los servidores web), los detalles de implementación del wol casero remoto están superados. Creo que sólo me falta pintar la caja de negro para que no se vea en el salón.

No hay comentarios:

Publicar un comentario