Servicio de Windows para actualizar la IP del host dyndns

Busco una aplicación gratuita que se ejecuta como un servicio de Windows y actualiza la dirección IP de una cuenta DNS dinámica.

Debería coincidir con esto:

  • es gratis
  • es capaz de ejecutarse en la versión de Windows desde XP a 10, x86 y x64
  • solo se actualiza cuando la IP realmente cambió / no se actualiza con demasiada frecuencia (para evitar que la cuenta se bloquee debido a una inundación)
  • se mantiene activamente y no está desactualizado
  • es liviano (no necesita Java, Python o tiempos de ejecución similares)
  • admite URL de actualización personalizadas
  • se ejecuta como un servicio de Windows

Respuestas (1)

En primer lugar, lo mejor que puede hacer es configurar su enrutador para que actualice automáticamente dyndns (el mío tiene esta opción). Esto es bueno porque no necesita que su PC esté encendida para que la IP se actualice y no tiene que instalar nada y ralentizar la computadora.

Segundo: lo mejor que se me ocurre es No-IP

Hace todo lo que necesita (no estoy seguro sobre el servicio, pero puede iniciarse automáticamente y ejecutarse en segundo plano).

El problema es que recibe un correo electrónico cada 30 días con un enlace que debe presionar para mantener su DNS en funcionamiento, sin embargo, nunca he recibido este correo electrónico ni he hecho clic en un solo enlace en ese correo electrónico en aproximadamente un año. y el DNS sigue funcionando :-)


EDITAR: Lo único que se me ocurre para su necesidad es www.duckdns.org

Hace todo lo que está en la lista además de las actualizaciones frecuentes, pero hablaremos de eso más adelante. (los dominios son YOURDOMANEHERE.duckdns.org, que es un poco tonto si me preguntas)

Lo bueno de esto es que hay un script VBS en su sitio web y su IP se puede actualizar desde ese script.

Esto significa que puede crear una secuencia de comandos simple con Python o C siguiendo su secuencia de comandos (tiene como 10 líneas de largo) o puede usar su secuencia de comandos que actualizaría la IP cuando la necesite o periódicamente.

El único problema ahora es que si necesita tener acceso a dispositivos locales en la red remota, necesita abrir un puerto y necesita conocer la IP local.

Si quieres que escriba un script de Python para que hagas lo que quieras, estaré más que feliz de hacerlo (puedes compilar Python en un EXE).


EDICIÓN 2: olvidé mencionar que debe registrarse para usar DuckDNS (puede hacerlo con Google, Facebook, Reddit, Twitter o Persona) y si desea más de 5 IP por cuenta, debe pagar.


EDIT 3: Maldita sea... Tengo demasiado tiempo libre...

Escribí un script de Python (compatible con Python 2 y 3) para actualizar 2 servicios DynDNS: DuckDNS y nsupdate.info (nsupdate.info tiene nombres de host ilimitados de forma gratuita)

Aquí está el guión:

from ssl import SSLContext, CERT_REQUIRED, PROTOCOL_TLSv1
try:
    from urllib.request import urlopen, HTTPSHandler, HTTPBasicAuthHandler, HTTPPasswordMgrWithDefaultRealm, install_opener, build_opener
except:
    from urllib2 import urlopen, HTTPSHandler, HTTPBasicAuthHandler, HTTPPasswordMgrWithDefaultRealm, install_opener, build_opener

def duckUpdate(domain, token, ip=""):
    """
    Function to update IP for the dyndns service duckdns.org
    
    domain - specify which host to update (Ex. 'test' or 'foobar' (don't include 'duckdns.org' in domain name))
    token  - your account's token
    ip     - custom IP if you don't want to use your current/own IP
    """
    
    url = "https://www.duckdns.org/update?domains=%s&token=%s&ip=%s" % (domain, token, ip)
    
    data = urlopen(url)
    text = data.read().decode("utf-8")
    
    return text

def nsUpdate(domain, token):
    """
    Function to update IP for the dyndns service nsupdate.info
    
    domain - specify which host to update (Ex. 'test.nerdpol.ovh' or 'test.nsupdate.info')
    token  - your host's 'secret'
    """
    
    url = "http://ipv4.nsupdate.info/nic/update"
    authdata = "%s:%s" % (domain, token)

    context = SSLContext(PROTOCOL_TLSv1)
    context.verify_mode = CERT_REQUIRED
    httpsHandler = HTTPSHandler(context = context)
    manager = HTTPPasswordMgrWithDefaultRealm()
    manager.add_password(None, url, domain, token)
    authHandler = HTTPBasicAuthHandler(manager)
    opener = build_opener(httpsHandler, authHandler)
    install_opener(opener)
    response = urlopen(url)
    
    return response.read().decode("utf-8")

Esto es bastante autoexplicativo. Llamas a duckUpdate() o nsUpdate() con argumentos suficientes y actualiza la IP en sus servidores.

El script de trabajo independiente:

Actualiza los servidores DynDNS de nsupdate.info con la IP correcta.

from os import environ
from ssl import SSLContext, CERT_REQUIRED, PROTOCOL_TLSv1
from urllib2 import urlopen, HTTPSHandler, HTTPBasicAuthHandler, HTTPPasswordMgrWithDefaultRealm, install_opener, build_opener

def nsUpdate(domain, token):
    """
    Function to update IP for the dyndns service nsupdate.info
    
    domain - specify which host to update (Ex. 'test.nerdpol.ovh' or 'test.nsupdate.info')
    token  - your host's 'secret'
    """
    
    url = "http://ipv4.nsupdate.info/nic/update"
    authdata = "%s:%s" % (domain, token)

    context = SSLContext(PROTOCOL_TLSv1)
    context.verify_mode = CERT_REQUIRED
    httpsHandler = HTTPSHandler(context = context)
    manager = HTTPPasswordMgrWithDefaultRealm()
    manager.add_password(None, url, domain, token)
    authHandler = HTTPBasicAuthHandler(manager)
    opener = build_opener(httpsHandler, authHandler)
    install_opener(opener)
    response = urlopen(url)
    
    return response.read().decode("utf-8")
    
if __name__ == "__main__":
    userpath = environ["USERPROFILE"].replace("\\", "/")

    f = open(userpath + "/dyndnsconf", "r")
    data = f.read()
    f.close()
    
    prop = data.split("\n")

    nsUpdate(prop[0], prop[1])

El script anterior, inmediatamente después de abrirlo, lee los datos de un archivo que se encuentra en C:\Users\CurrentUser\dyndnsconf( dyndnsconfes un ARCHIVO sin extensión).

La ruta C:\Users\CurrentUser\está representada en Windows como una variable de entorno local (oculta) - %USERPROFILE%.

Entonces, el archivo está, en general , ubicado en %USERPROFILE%\dyndnsconf.

Ahora que tiene un archivo en C:\Users\Jan\dyndnsconf se ve así:

mydomain.nsupdate.info
ZBtalzgMeI

La primera línea es el nombre de dominio que desea actualizar y la segunda línea el secreto

el secreto = token/contraseña/clave/lo que sea, tenga en cuenta que cualquiera puede usar esta clave para actualizar la IP en un solo dominio sin confirmación, pero no pueden moderar la cuenta asociada con el secreto

Uso del (segundo) script:

  • Debe tener un nombre de dominio válido y una clave secreta en el archivo mencionado anteriormente
  • Necesitas tener Python 2 o Python 3 instalado

Guarde el segundo script en un archivo llamado yourNameHere.pyy ábralo. Sí. Eso es. Ahora la IP está actualizada.

Puedes hacer que el script se abra cada X minutos o ponerlo en el Programador de Windows, verificar si la IP cambió... lo que quieras.

Si no sabes cómo puedes buscarlo. El más obvio y simple fue usar lotes o VBS.

Las cosas buenas:

Como tengo mucho tiempo libre, compilé un archivo EXE de 4 MB que hace lo mismo que el segundo script, excepto que puede omitirlo:

  • Instalación de Python
  • Creando un .pyarchivo
  • Asegurarse de que todas las personas a las que le dé el archivo tengan Python instalado

Puedes descargarlo aquí: https://mega.nz/#!Rtth1C4S!2teBXkOcyh-G4IFTI3qxexrOH1qtCiunaCIFRG2vPHk

El gran problema: VirusTotal muestra una detección de 16/56. Gorrón.

Si no confía en mí, puede compilar el segundo script tal como está usando el siguiente comando (asegúrese de tener instalado pyInstaller, así como la última versión de Python 2 de 32 bits).

pyInstaller scriptPathHere.py --onefile --noconsole

Si necesitas algo más puedes publicar un comentario, pero no estaré en casa esta semana así que tienes más suerte buscando la respuesta en internet.

(Estoy demasiado cansado para revisar la gramática y las faltas de ortografía en esta cosa. Mods o quien tenga tiempo, corrija los errores. ¡Gracias!)

Desafortunadamente, muchos proveedores en Alemania deshabilitan dyndns en el enrutador, por eso busco este software. La prolongación que podría ser necesaria es un problema porque necesito esta configuración para las personas que no están en TI y no podrán manejar este tipo de correo electrónico (creo que lo eliminarán de inmediato)
@Marged Respuesta editada.