Es posible utilizar Cloudflare de forma gratuita para proyectos o hobbies de carácter personal.
Registro
Registrarse en Cloudflare es un proceso muy sencillo:
- Acceder a
https://dash.cloudflare.com/sign-up
- Rellenar el formulario:
- Dirección de correo electrónico:
usuario@midominio.com
- Contraseña:
*********
- No marcar la opción para recibir correos ocasionales
- Dirección de correo electrónico:
- Pulsar el botón
Sign Up
Una vez hecho ésto, se recibirán dos correos electrónicos:
- Welcome to Cloudflare Access
- [Cloudflare]: Please verify your email address
Hay que seguir el enlace del segundo mensaje para verificar el correo electrónico y poder acceder al Dashboard de Cloudflare en https://dash.cloudflare.com/
.
Cloudflare DNS
Para tener DNS dinámico, lo primero es añadir una website o dominio a Cloudflare:
- Acceder a
Websites
en el menú de la izquierda - Pulsar el botón
(+) Add Site
- Indicar el nombre del sitio/dominio:
midominio.com
- Pulsar el botón
Add site
En el paso 1 del asistente hay que seleccionar el plan gratuito Free $0/month
que tiene las siguientes características:
- DNS rápido y fácil de usar
- Protección DDoS no medida
- CDN global
- Certificado SSL Universal
- Conjunto de reglas administradas gratuitas
- Mitigación sencilla de bots
- 3 Reglas de página
- 5 Reglas WAF
En el paso 2, se obtienen los registros DNS actuales del dominio que se ha indicado y se muestran en pantalla para poder revisarlos:
Nota: Aquí se podría editar o borrar los registros existentes así como añadir nuevos registros (por ejemplo
vault.midominio.com
para acceder a una instalación de Vaultwarden local).
- Una vez revisados, se pulsa el botón
Continue
En el paso 3, y último, se dan las instrucciones para cambiar los nameservers desde el registrador actual a Cloudflare:
- Determinar el registrador actual
- Acceder al registrador con una cuenta de administración
- Borrar los servidores de nombre actuales
- Introducir los servidores de nombres de Cloudflare que se indican en el asistente, por ejemplo:
romina.ns.cloudflare.com
vick.ns.cloudflare.com
- Pulsar el botón
Done, check nameservers
Finalmente, se podrían configurar los parámetros del dominio para aumentar la seguridad, optimizar el rendimiento, etc. pero no es necesario hacerlo en este momento por lo que se pulsará la opción Finish later
:
- Improve security
- Automatic HTTPS Rewrites
- Always use HTTPS
- Optimize performance
- Auto Minify
- Brotli (compresión)
Nota: Los registradores pueden tardar hasta 24h en procesar los cambios. Hay que ser paciente y esperar antes de continuar con cualquier proceso que requiera del DNS en Cloudflare (por ejemplo, crear un certificado SSL de Let’s Encrypt desde Nginx Proxy Manager).
DNS dinámico
Se puede usar Cloudflare para tener DNS dinámico al estilo de Duck DNS o No-IP.
El uso habitual de este servicio sería tener un dominio, por ejemplo casa.midominio.com
, que apunte a la IP pública que proporciona el proveedor de Internet.
La idea es crear un registro de tipo A y después usar alguna opción para que se actualice automáticamente, por ejemplo:
- Integración de Cloudflare en Home Assistant
- Cloudflare DDNS by Timothy Miller
- Docker CloudFlare DDNS by Oznu
- Cloudflare Dynamic DNS IP Updater by K0p1-Git
- Etc.
API Token
Para poder actualizar los registros DNS de forma automatizada, es necesario crear un token que asigne los permisos necesarios para hacerlo:
- Acceder a
My Profile
→API Tokens
- Pulsar el botón
Create Token
- Seleccionar la plantilla
Edit Zone DNS
pulsando el botónUse template
Nota: Esta plantilla agrega únicamente el permiso
Zone > DNS > Edit
por lo que será necesario añadir uno más.
- Agregar un nuevo permiso
Zone > Zone > Read
- Seleccionar la zona que se incluirá:
Zone > Specific zone > midominio.com
- Pulsar el botón
Continue to summary
- Finalmente, pulsar el botón
Create Token
Este proceso creará un token similar al mostrado a continuación que se deberá copiar en algún lugar seguro ya que únicamente se muestra una vez:
8-3x-wz_B7cZXjMNE3Bz1bLMa4YsYQ-XESthjXe3
Docker de Timothy Miller
La implementación docker de Timothy Miller no funciona correctamente en mi entorno.
Tal como se indica en la issue 111 del proyecto, ésto es debido al uso de 1.1.1.1
en lugar de cloudflare.com
para obtener la IP pública.
Una posible “solución”, sería descargar el fichero cloudflare-ddns.py
, revertir el cambio y ejecutarlo cada 5 minutos usando crontab.
El fichero de configuración config.json
que se debería usar sería el siguiente:
{
"cloudflare": [
{
"authentication": {
"api_token": "8-3x-wz_B7cZXjMNE3Bz1bLMa4YsYQ-XESthjXe3"
},
"zone_id": "a4eb0ce4b412b3d2ae53a0e0ab22502a",
"subdomains": [
{
"name": "casa",
"proxied": false
}
]
}
],
"a": true,
"aaaa": false,
"purgeUnknownRecords": false,
"ttl": 300
}
Docker de Oznu
La implementación docker de Oznu es bastante sencilla y funciona correctamente usando un fichero docker-compose.yml
similar al siguiente:
version: "2"
services:
cloudflare-ddns:
image: oznu/cloudflare-ddns:latest
container_name: cloudflare-ddns
environment:
- API_KEY=8-3x-wz_B7cZXjMNE3Bz1bLMa4YsYQ-XESthjXe3
- ZONE=midominio.com
- SUBDOMAIN=casa
- PROXIED=false
- RRTYPE=A
- DELETE_ON_STOP=false
- DNS_SERVER=9.9.9.9
restart: unless-stopped
Script de K0p1-Git
El script de K0p1-Git es bastante sencillo y funciona correctamente usando una configuración similar a la siguiente:
auth_email=""
auth_method="token"
auth_key="8-3x-wz_B7cZXjMNE3Bz1bLMa4YsYQ-XESthjXe3"
zone_identifier="a4eb0ce4b412b3d2ae53a0e0ab22502a"
record_name="casa.midominio.com"
ttl="300"
proxy="false"
Túneles
Los túneles se gestionan desde un Dashboard diferente: https://one.dash.cloudflare.com/
y se suelen usar cuando no se puede, o no se quiere, abrir puertos en el router por estar detrás de un CGNAT.
Nota: Si se utiliza un túnel hay que extremar la seguridad para no dejar nada abierto y que los ciberdelincuentes entren hasta la cocina.
Si se quiere acceder a Home Assistant, es mucho más recomendable pagar una subscripción a Nabu Casa y evitar los problemas de seguridad que pueden tener los túneles.
De todos modos, lo mejor es conectarse a la red local usando WireGuard como VPN. De esta manera, se puede acceder a los servicios usando la dirección IP privada de cada servicio.
Referencias
- Dominio Propio y CloudFlare: La mejor alternativa a DuckDNS @ YouTube “Un loco y su tecnología”
- DDNS on a Raspberry Pi using the Cloudflare API (Dynamic DNS) @ YouTube “NetworkChuck”
- Get started with Cloudflare
- Cloudflare DNS > Zone setups > Full setup