Nos valdremos de un servicio gratuito para DNS dinámico, como el que nos facilita NO IP.
Con NO-IP y sus servicios de DNS dinámico y dominio gratuito, podremos montar un servidor Web en casa.
NO IP nos ayuda en el caso de no tener una IP estática (algo bastante común a no ser que lo tengamos contratado); no-ip.com nos proporciona servicios de DNS dinámico.
La IP fija es algo necesario para asociar una IP a un nombre de dominio… por tanto, si tenemos una IP pública dinámica (va cambiando), y no usamos NOIP, cada vez que nuestro proveedor de servicios de Internet renueve la IP pública a través de la cual navegamos por Internet, el servidor web creado sobre el nombre de dominio que hayamos elegido, no funcionará (puesto que nuestra IP de casa, y por tanto la IP del servidor Web casero, habrá cambiado).
2. El servidor Web lo podremos montar con Xampp en el caso de utilizar Windows. Xampp nos proporciona servicios como Apache y Bases de Datos MySQL, aunque actualmente soporta MariaDB (MariaDB es una continuación de MySQL, ofrece más rendimiento y más funcionalidades).
–> Si usamos Linux, podremos crear un servidor web Apache en Linux.
3. Después habremos de revisar un par de configuraciones en el router para poder recibir y enviar tráfico al puerto por el que esté funcionando el servidor web (Redireccionar puertos y crear una DMZ si fuera necesario).
4. Y crear reglas en el firewall del equipo para que permita el tráfico en los puertos que utilizará el Servidor Web.
En este artículo:
Cuando ya tengamos una cuenta gratuita en NO IP, entramos y comenzamos con los siguientes pasos:
por ejemplo: midominio.sytes.net (podemos elegir entre varios sufijos diferentes)
(se trata de un dominio de ejemplo. También disponemos de varias terminaciones de dominio diferentes. Cada uno que elija la que más le guste)
Podemos descargar el programa DUC-NOIP en este enlace: http://www.noip.com/download?page=win
DUC NOIP es un cliente de actualización de DNS dinámico, que comprueba continuamente los cambios de dirección IP y actualiza automáticamente el DNS de un nombre de dominio en No-IP cada vez que cambia.
Abrimos el programa, hacemos login con nuestra cuenta de NOIP, y vamos a la sección Edit Groups/Hosts, y después Manage Existing Hosts.
Entonces veremos que aparece el nombre de dominio que hemos creado en NO-IP:
Vemos la sección Tools de DUC NOIP:
Podemos ver que hay opciones interesantes como la posibilidad de refrescar el DNS (Flush Local DNS) y algunas otras opciones interesantes como Open Port Check Tool, o los Logs.
En este punto ya tenemos un nombre de dominio asociado a nuestra IP, que gracias al programa DUC NOIP, se mantendrá estable aunque cambie nuestra IP pública.
Ahora vamos a instalar un servidor web en nuestro equipo gracias a Xampp. Sigamos:
Usaremos Xampp, un conocido, sencillo y útil programa que nos permitirá habilitar rápidamente un servidor Web en nuestro equipo.
Modificamos el puerto por el que actúa el servidor Web Apache en Xampp, que por defecto es el 80, porque NOIP no nos deja redireccionar a puerto 80, así que para comprobar que funciona el host trabajaremos con otro puerto, por ejemplo el 81.
Entramos en Xampp, en la Configuration of Control Panel, y después en Service and Port Settings.
Modificaremos entonces también el archivo xampp/apache/conf/httpd.conf, perteneciente a la configuración de Apache dentro de Xampp; y en lugar de escuchar en el puerto 80, cambiar a 81:
Listen 81
(El archivo httpd.conf ha sido sustituido en posteriores versiones de Apache en Linux por otros archivos, como el archivo /etc/apache2/apache2.conf, el archivo /etc/apache2/sites-enabled/default.conf o el archivo /etc/apache2/ports.conf )
En este punto vamos a modificar también el Document Root, para que el Web Server funcione sirviendo los archivos de un subdirectorio en lugar de los archivos de /htdocs (en cuyo caso cargaría la página de inicio de Xampp).
El DocumentRoot es el directorio desde el cual el servidor Web casero servirá los documentos y archivos.
Una forma más elegante de conseguir que Xampp utilice un DocumentRoot concreto sería con Virtualhosts.
ServerName localhost:81
Require all granted
AllowOverride none
Require all denied
Podemos ver que en este caso estamos utilizando el puerto 81
En el archivo apache/conf/extra/httpd-xampp.conf, comentamos:
Require local
Pues sino no atenderá peticiones externas (peticiones originadas desde fuera de la red local) y arrojará el mensaje de
403 Acceso prohibido!
Después de realizar los cambios mencionados, detenemos el servicio Apache y lo reiniciamos.
Si quieres revisar algunos aspectos sobre seguridad en Xampp, revisa este enlace.
Para que nuestro Server pueda salir al exterior y a la vez recibir peticiones desde el exterior, hemos de crear ciertas reglas en nuestro router que permitan ese tráfico entrante y saliente.
Lo más fácil (aunque no excesivamente seguro) es configurar una DMZ en nuestro router, hacia la IP del equipo que hará de Servidor Web en nuestra red local.
En el caso de estar en una máquina virtual, la IP ha de ser la del server en la máquina virtual, no la de la máquina anfitrión.
Ya que nuestro servidor Web va a actuar sobre el puerto 81 en lugar del 80, hemos de redireccionar al puerto 81 todas las peticiones que se realicen al puerto 80.
Dependiendo del router, tendremos más o menos opciones. Aquí vemos otro router con opciones más limitadas para hacer redirección de puertos:
Suponiendo que todo lo anterior funciona correctamente, ahora solo nos queda configurar las excepciones y reglas del Firewall en el equipo donde se encuentra instalado el Servidor Web:
Prueba desde red externa de que el servidor publico local está funcionando
(podemos probar a navegar desde el móvil por ejemplo, pero sin utilizar la red wifi, sino la red de datos móviles, que será otra red diferente a la red wifi claro.. ):
Y de esta forma, podemos ver que nuestro servidor web en casa funciona ! Ahora nuestro servidor web publico creado con Xampp, es accesible a través de un nombre de dominio, incluso aunque cambiemos de IP pública para navegar (cuando reiniciemos el router o nuestro ISP la cambie), gracias a NOIP 🙂