Subdominios en nuestro servidor si tenemos IP dinámica

Cómo conseguir que nuestros dominios apunten a los sitios web alojados en nuestro ordenador usando un DDNS y registros DNS de tipo CNAME

Punto de partida

Tenemos lo siguiente:

  • Un dominio nuevo.new dónde podemos registrar subdominios:
    • web1.nuevo.new
    • web2.nuevo.new
    • etc.
  • Una conexión de Internet con IP pública dinámica del estilo 200.201.202.203
  • Un servidor propio que hospeda uno o varios sitios web

Objetivo

Queremos que nuestros subdominios apunten a los sitios web que tenemos alojados en nuestro servidor sin tener que preocuparnos de que la IP pública dinámica de nuestra conexión de Internet vaya cambiando

Pasos a seguir

1) Convertir la IP dinámica en un DDNS

Debemos darnos de alta en algún DNS dinámico gratuito como por ejemplo DuckDNS

Después de conectarnos a DuckDNS podemos obtener un dominio del tipo misitio.duckdns.org.

Lo interesante de este dominio es que podemos cambiar automáticamente la IP que tiene asociada.

Esto se puede conseguir desde la configuración DDNS de nuestro rúter o bien desde nuestro servidor web creando una tarea que se repita a intervalos regulares. En la documentación de instalación de DuckDNS explican cómo hacerlo.

2) Apuntar nuestros subdominios al DDNS

Debemos entrar en la gestión DNS de nuestro dominio nuevo.new y realizar lo siguiente:

    ipv4.nuevo.new  CNAME  misitio.duckdns.org
    web1.nuevo.new  CNAME  ipv4.nuevo.new
    web2.nuevo.new  CNAME  ipv4.nuevo.new
    web3.nuevo.new  CNAME  ipv4.nuevo.new
    …

¡Atención! Esto no funcionará para el dominio nuevo.new pero si para los subdominios de este. Esto es debido a que el registro CNAME sólo admite subdominios

Si cambiamos de DDNS sólo tendremos que hacer que el subdominio ipv4.nuevo.new apunte al nuevo DDNS. De esta forma no tenemos que cambiar todos los CNAME, sino sólo uno.

Y si conseguieramos una IP fija podríamos cambiar el CNAME de ipv4.nuevo.new por un registro A que apuntase a la IP fija.

Ayuda en Zonas DNS


Redireccionamiento permanente

Si queremos cambiar una web del dominio viejo.old al dominio nuevo.new lo ideal es crear un redireccionamiento permanente 301. Así todos los enlaces antiguos se redireccionarán al nuevo dominio. Al cabo de un tiempo podríamos dar de baja el dominio antiguo ya que dejaría de ser útil. Esto funcionará tanto para dominios como para subdominios

Sitio HTTP configurado en apache2.conf

<VirtualHost *:80>
  ServerName viejo.old
  RedirectMatch permanent ^/(.*)$ https://nuevo.new/$1
</VirtualHost>

Sitio HTTPS configurado en apache2.conf usando certificados Let's encrypt

Con SSL es obligatorio proporcionar los certificados del sitio aunque no lo tengamos hospedado

<VirtualHost *:443>
  ServerName viejo.old
  RedirectMatch permanent ^/(.*)$ https://nuevo.new/$1
# Let's Encrypt with certbot for HTTPS
  SSLEngine on
  SSLCertificateFile     /etc/letsencrypt/live/viejo.old/fullchain.pem
  SSLCertificateKeyFile  /etc/letsencrypt/live/viejo.old/privkey.pem
  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
  </Directory>
  BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
  BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

Comentarios

Proinf.net, ©2003-2019 ci 3.1.10 (CC) Esta obra está bajo una licencia de Creative Commons Este software está sujeto a la CC-GNU GPL