ddclient, cliente de DNS dinámico para todos

Tienes tarifa plana en casa pero tu IP es dinámica. A pesar de eso te gustaría tener un servidor web y tus "cosillas" accesibles desde cualquier sitio. La solución a tus problemas es un servicio de DNS dinámico.

Ingredientes

  • Una conexión a internet
  • Debian GNU/Linux o derivados
  • ddclient

Servidor de DNS dinámico

Lo primero es crearte una cuenta en uno de los muchos sitios que tienen un servicio de DNS dinámico, muchos son gratuitos. Por ejemplo, DynDNS.org.

Hay otros:

Al crear tu cuenta tendrás que indicar cómo se va a llamar tu máquina, por ejemplo, miservidor.dyndns.org.

Instalar ddclient

Simplemente:

# apt-get install ddclient

Configuración

El propio sistema de instalación de paquetes de Debian te preguntará los parámetros de configuración. A continuación se ponen unos valores de ejemplo figurados.

  • servidor? www.dyndns.org
  • host? miservidor.dyndns.org
  • usuario? dnsuser
  • clave? miclave
  • interface? eth0
  • ppp? no
  • daemon?
  • intervalo? 300

Cuando lo quieras reconfigurar puedes usar:

# dpkg-reconfigure ddclient

o editar directamente el fichero /etc/ddclient.conf:

pid=/var/run/ddclient.pid
protocol=dyndns2
use=if, if=eth0
server=members.dyndns.org
login=pepito_grillo
password=clave_de_pepito
pepito.dyndns.org

Recuerda reiniciar el demonio para activar los cambios:

# /etc/init.d/ddclient restart

Y eso es todo, cada cierto tiempo, tu demonio ddclient se conectará al servidor y le indicará tu nueva IP, así que no importa que cambie.

Referencias

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

n_n

Pues, fabuloso y conciso! Gracias !

Lk2's picture

Está muy bien...

pero echadle un ojo a vuestros módem-router-switch-punto de acceso etcéteraque suelen regalar porque suelen tener la opción de configurar un servidor dinámico.... aunque claro, te restringe bastante más... por ejemplo mi Comterend solo me deja usar DynDNS o No-ip.com

nacho's picture

Behind The Router

Mmmm... Hay un pequeño problema que no has comentado. Si estás detrás de un router, como es mi caso, la IP que publica ddclient es 192.168.x.x, con lo cual es como si no hubieras hecho nada.

¿Cómo se puede hacer que publique la IP externa? Estoy intentando encontrar la manera de averiguarla, pero si alguien lo sabe, pues mejor que mejor Laughing out loud

-------------
Nacho

Nacho

david.villa's picture

Behind the NAT

Pues obviamente detrás del NAT no le puedes preguntar la IP a la interfaz. Pero ddclient tiene otras formas de averiguar la IP pública.

# ddclient -help
[...]
-use which            : how the should IP address be obtained. (default: ip).
    -use=2wire                  : obtain IP from 2Wire 1701HG Gateway at the -fw {address}.
    -use=3com-3c886a            : obtain IP from 3com 3c886a 56k Lan Modem at the -fw {address}.
    -use=3com-oc-remote812      : obtain IP from 3com OfficeConnect Remote 812 at the -fw {address}.
    -use=alcatel-510            : obtain IP from Alcatel Speed Touch 510 at the -fw {address}.
    -use=alcatel-stp            : obtain IP from Alcatel Speed Touch Pro at the -fw {address}.
    -use=allnet-1298            : obtain IP from Allnet 1298 at the -fw {address}.
    -use=cayman-3220h           : obtain IP from Cayman 3220-H DSL at the -fw {address}.
    -use=cisco                  : obtain IP from Cisco FW at the -fw {address}.
    -use=cmd                    : obtain IP from the -cmd {external-command}.
    -use=dlink-524              : obtain IP from D-Link DI-524 at the -fw {address}.
    -use=dlink-604              : obtain IP from D-Link DI-604 at the -fw {address}.
    -use=dlink-614              : obtain IP from D-Link DI-614+ at the -fw {address}.
    -use=e-tech                 : obtain IP from E-tech Router at the -fw {address}.
    -use=elsa-lancom-dsl10      : obtain IP from ELSA LanCom DSL/10 DSL FW at the -fw {address}.
    -use=elsa-lancom-dsl10-ch01 : obtain IP from ELSA LanCom DSL/10 DSL FW (isdn ch01) at the -fw {address}.
    -use=elsa-lancom-dsl10-ch02 : obtain IP from ELSA LanCom DSL/10 DSL FW (isdn ch01) at the -fw {address}.
    -use=fw                     : obtain IP from the firewall specified by -fw {type|address}.
    -use=if                     : obtain IP from the -if {interface}.
    -use=ip                     : obtain IP from -ip {address}.
    -use=linksys                : obtain IP from Linksys FW at the -fw {address}.
    -use=linksys-rv042-wan1     : obtain IP from Linksys RV042 Dual Homed Router WAN Port 2 at the -fw {address}.
    -use=linksys-rv042-wan2     : obtain IP from Linksys RV042 Dual Homed Router WAN Port 2 at the -fw {address}.
    -use=linksys-ver2           : obtain IP from Linksys FW version 2 at the -fw {address}.
    -use=linksys-ver3           : obtain IP from Linksys FW version 3 at the -fw {address}.
    -use=linksys-wcg200         : obtain IP from Linksys WCG200 FW at the -fw {address}.
    -use=linksys-wrt854g        : obtain IP from Linksys WRT854G FW at the -fw {address}.
    -use=maxgate-ugate3x00      : obtain IP from MaxGate UGATE-3x00 FW at the -fw {address}.
    -use=netcomm-nb3            : obtain IP from NetComm NB3 at the -fw {address}.
    -use=netgear-dg834g         : obtain IP from netgear-dg834g at the -fw {address}.
    -use=netgear-rp614          : obtain IP from Netgear RP614 FW at the -fw {address}.
    -use=netgear-rt3xx          : obtain IP from Netgear FW at the -fw {address}.
    -use=netgear-wgt624         : obtain IP from Netgear WGT624 at the -fw {address}.
    -use=netgear-wpn824         : obtain IP from Netgear WPN824 FW at the -fw {address}.
    -use=netopia-r910           : obtain IP from Netopia R910 FW at the -fw {address}.
    -use=olitec-SX200           : obtain IP from olitec-SX200 at the -fw {address}.
    -use=rtp300                 : obtain IP from Linksys RTP300 at the -fw {address}.
    -use=sitecom-dc202          : obtain IP from Sitecom DC-202 FW at the -fw {address}.
    -use=smc-barricade          : obtain IP from SMC Barricade FW at the -fw {address}.
    -use=smc-barricade-7004vbr  : obtain IP from SMC Barricade FW (7004VBR model config) at the -fw {address}.
    -use=smc-barricade-7401bra  : obtain IP from SMC Barricade 7401BRA FW at the -fw {address}.
    -use=smc-barricade-alt      : obtain IP from SMC Barricade FW (alternate config) at the -fw {address}.
    -use=sohoware-nbg800        : obtain IP from SOHOWare BroadGuard NBG800 at the -fw {address}.
    -use=sveasoft               : obtain IP from Sveasoft WRT54G/WRT54GS at the -fw {address}.
    -use=vigor-2200usb          : obtain IP from Vigor 2200 USB at the -fw {address}.
    -use=watchguard-edge-x      : obtain IP from Watchguard Edge X FW at the -fw {address}.
    -use=watchguard-soho        : obtain IP from Watchguard SOHO FW at the -fw {address}.
    -use=web                    : obtain IP from an IP discovery page on the web.
    -use=westell-6100           : obtain IP from Westell C90-610015-06 DSL Router at the -fw {address}.
    -use=xsense-aero            : obtain IP from Xsense Aero at the -fw {address}.
[...]

Las más interesantes son: cmd que utiliza la IP que te devuelva un comando y web que consulta una página web, es decir, pon esto en tu /etc/ddclient.conf:

use=web

Y lo puedes probar con:

# ddclient -debug 
DEBUG:    proxy  = 
DEBUG:    url    = http://checkip.dyndns.org/
DEBUG:    server = checkip.dyndns.org
DEBUG:    opt(fw = 
DEBUG:    glo fw unset
DEBUG:    get_ip: using web, http://checkip.dyndns.org/ reports 161.67.27.1

Incluso puedes hacer que ddclient le pida tu IP a la receta de CRySoL Averigua tu IP externa , escribiendo en tu /etc/ddclient.conf:

use=web, web=http://crysol.org/node/83, web-skip='IP externa es:'

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

nacho's picture

Muy chulo

ya funciona fresquísimo
-------------
Nacho

Nacho