¿Qúe significa tener ip dinámica?
Cuando nuestro router se conecta a internet, lo normal hoy en día es que nuestro proveedor nos asigne una ip dinámica, por ejemplo la 80.40.55.22. Si apagamos el router y lo volvemos a encender es posible que se nos asigne otra dirección ip diferente.
Esta variación de “nuestra” dirección ip es lo que se conoce como dirección ip dinámica
Por contra, puede darse el caso, de que nuestra dirección nunca cambiase en el tiempo, esto sería una ip estática.
¿Porqúe los proveedores asignan ips dinámicas?
Actualmente se usan direcciones ips ipV4. Estas direcciones en total utilizan 32 bits para formar la dirección. Esta dirección esta agrupada en 4 octetos de 8 bits.
De ahí viene, que las direcciones son cuatro grupos, y cada uno de ellos puede ir desde 0 hasta 255.
Con todo esto quiero decir, que el número de direcciones ips existentes es finito, concretamente 4.294.967.296. Además, hay que quitar ciertos grupos de direcciones que estan reservadas, con lo que este número aun se reduce más.
Como respuesta a la pregunta de esta sección, uno de los motivos por los que los proveedores de servicios de internet asignan ips dinámicas, es por el hecho de que mientras tú no estás conectado a internet, pueden asignar esa dirección ip a otro usuario.
No te preocupes, ya existe el protocolo ipV6, cuyas direcciones estan formadas por 128 bits, y pueden generar un número de direcciones muy grande: 340.282.366.900.000.000.000.000.000.000.000.000.000 direcciones, aunque hay que quitar algunas que también están reservadas.
¿Para qué sirve un servicio de dns dinámico?
Imagina que el número de telefono de tu casa cambiase cada cierto tiempo. Sería imposible poder llamar cuando lo necesitases.
Imagina también, que alguien, tuviese un número de teléfono fijo y que este no cambiase.
Teniendo estas dos cosas en cuenta, se podría hacer lo siguiente:
Si tú, usuario de telefonía con un numero cambiante, te das cuenta de que efectivamente tu número ha cambiado, podrías llamar a esa persona que tiene el número fijo, y comunicarle que tu número ha cambiado. Esta persona tiene un registro donde va apuntando el número de teléfono y el nombre de cada uno de los usuarios.
De esta manera, si alguien necesita llamarte, primero, llamará a la persona con número fijo, para consultar tu número de teléfono “cambiante”, y posteriormente llamarte a ese numero actualizado.
Como hemos visto en la analogía anterior, es precisamente como se comporta un servicio de dns dinámico. Un servidor con ip estatica (no cambiante) le llamaremos servidorX, lleva un registro de nombreDeDominio - direcciónIp. Los clientes, deben comunicarse con servidorX cada cierto tiempo para decirle cual es su dirección ip.
Servicio dondns.es/ddns
dondns.es tiene exactamente esto. Creamos una cuenta, y podremos crear un nombre de host, y asignarle una dirección ip. Posteriormente configuraremos un cliente que se encargará de comunicar al servidor de dondns.es (también lo podremos hacer realizando llamadas a la api).
A partir de aquí, ya no necesitaremos conocer la dirección ip del equipo al que queremos conectarnos, sólo el nombre del host que le dimos.
Como se puede ver en la imagen anterior, hemos puesto el hombre del host y nuestra dirección ip. Adicionalmente podremos configurar un hook que explicaremos más adelante
Una vez hecho esto, podremos acceder a esa dirección ip a través del nombre del host
athos@athos-Z97P-D3:~$ ping micasa.dondns.es
PING micasa.dondns.es (79.151.22.96) 56(84) bytes of data.
64 bytes from 96.red-79-151-22.dynamicip.rima-tde.net (79.151.22.96): icmp_seq=1 ttl=64 time=0.666 ms
64 bytes from 96.red-79-151-22.dynamicip.rima-tde.net (79.151.22.96): icmp_seq=2 ttl=64 time=0.773 ms
64 bytes from 96.red-79-151-22.dynamicip.rima-tde.net (79.151.22.96): icmp_seq=3 ttl=64 time=0.751 ms
64 bytes from 96.red-79-151-22.dynamicip.rima-tde.net (79.151.22.96): icmp_seq=4 ttl=64 time=0.701 ms
Para actualizar la ip que el servidor tiene registrada, lo podremos hacer con los clientes que se pueden descargar de la web, o haciendo una petición http:
athos@athos-Z97P-D3:~$ curl https://user%40example.org:password@dondns.es/ddns/nic/update?hostname=micasa.dondns.es
{"ok":true,"id":"dondns.es.","rev":"16523-7e66c056a3fb71ffc1c95f5b6b6bc4e1"}
¿Para qué sirve el webhook?
Es posible, que cuando nuestro equipo haga la llamada al servidor (como el curl que acabamos de hacer), necesitemos que se llame a una url, donde habrá algun script que realice ciertas tareas.
Por ejemplo, queremos que cuando nuestra ip se actualice, se llame a un script que nos mande una notificación por correo electrónico.
Para eso nos sirven los webhooks.
Vamos a montar un servidor web en nuestra máquina, que simulara la ejecución de dicho envío de correo.
athos@athos-Z97P-D3:~/$ http-serve .
Starting up http-serve for .
Available on:
http://127.0.0.1:8080
http://192.168.1.22:8080
http://10.163.200.1:8080
Hit CTRL-C to stop the server
Ahora, vamos a eliminar el registro que creamos en dondns.es y vamos a crearlo de nuevo pero rellenando el webhook
Tiramos el curl simulando la actualización de la ip
athos@athos-Z97P-D3:~/$ curl https://user%40example.org:password@dondns.es/ddns/nic/update?hostname=micasa.dondns.es
{"ok":true,"id":"dondns.es.","rev":"16530-8d07a1cf296c4f0980d910bb921fe0b6"}
Y podemos comprobar como el servidor web recibe una petición a la ruta “enviaremail”
athos@athos-Z97P-D3:~/pruebaotra$ http-serve .
Starting up http-serve for .
Available on:
http://127.0.0.1:8080
http://192.168.1.99:8080
http://10.163.200.1:8080
Hit CTRL-C to stop the server
[Sun Mar 15 2020 19:28:58 GMT+0100 (Central European Standard Time)] "GET /enviaremail" "Go-http-client/1.1"
Nota:
De momento, dondns.es no comprueba si la dirección ip ha cambiado para ejecutar el webhook. Ejecuta el webhook siempre que se llame al servidor para actualizar la ip, ya sea una ip nueva, o sea la misma ip que ya tenía registrada.
Lo que quiere decir que esa comprobación tienes que hacerla tú en tu script.
Conclusión
Un servicio de dns dinámico puede sernos muy útil en muchas ocasiones. Además, el poder añadir un webhook en cada una de las entradas que creemos en dondns.es/ddns puede darnos capacidades extras muy interesantes.