viernes, marzo 23, 2007

Dominio gratis con FreeDNS

Algunas veces nos ha surgido la necesidad de poder acceder a nuestra máquina personasl remotamente (desde luego si contamos con una conexión dedicada), pero como sabemos que la dirección IP de nuestro PC cambia constantemente, es complicado saber de antemano que dirección IP tenemos asignada sin antes haber llamado a la casa y preguntarle a alguien cuál es la IP que tenemos. Este problema se me presentaba con frecuencia y encontré: freedns.afraid.org, un servicio que te permite tener un subdominio que apunte a tu máquina y poder acceder a ella mediante ese subdominio (entre otros servicios). Cómo hacerlo ?. Bien, basta con entrar a:


Y nos registramos. Una vez registrados, damos click en el menú Dinamic DNS de la parte izquierda y damos click en add. Después seleccionamos el tipo de dominio, el nombre del subdominio, el dominio y la IP (en este caso colocamos nuestra IP actual) y aceptamos. Nuestro nuevo dominio ha sido creado. Esperemos unos 5 minutos y si hacemos ping a ese dominio nuestra máquina debe responder:

jpromerobx@obiwan:~/Software/LastUpdater$ ping jpromerobx.mooo.com
PING jpromerobx.mooo.com (201.245.238.64) 56(84) bytes of data.
64 bytes from adsl201-245238064.dyn.etb.net.co (201.245.238.64): ....
64 bytes from adsl201-245238064.dyn.etb.net.co (201.245.238.64): .....

Sin embargo, cada vez que nuestra dirección IP cambie, debemos entrar a la página de FreeDNS y actualizar esa información, lo cual es muy engorroso, además de no proveer una solución completa. Para solucionar ese incoveniente en la tabla que lista los dominios registrados aparece un enlace llamado: Direct URL, el cual simplemente es una URL, pero que nos será de mucha utilidad, pues mediante esa URL nosotros podemos actualizar la dirección IP automáticamente sin necesidad de ingresar a la página. Bien, pues en la página de FreeDNS proporcionan una serie de clientes DNS para esa labor. Yo actualmente uso el lastupdater el cual se encuentra hecho en PHP, y simplemente en combinación con un cron es la solución a nuestro problema. Cada vez que nuestra máquina cambie de dirección IP, el script se ejecuta y actualiza la información. El script en PHP lo pueden descargar directamente de FreeDNS. Sin embargo para los que quieran probar, yo hice uno en Python (me base en lastupdater) y funciona muy bien, aqui va:


#!/usr/bin/python

# Antes de la ejecución creen un archivo llamado lastip.txt vacio.

import os
import urllib2
import time as tiempo
from datetime import *

update_url="DirectURL (cambienla)"
# ppp0 es mi interfaz de red, varia en cada máquina, por ejemplo eth0
getipcmd="/sbin/ifconfig ppp0 | grep 'inet ' | awk '{print $2}'";
f= open('lastip.txt')
last_ip=f.readline()
f.close()

while True:
ip=os.popen(getipcmd).read()
current_ip=ip[5:]
if last_ip != current_ip:
now=datetime.now()
date=now.strftime("%Y-%m-%d %H:%M:%S")
m = open('lastip.txt', 'w')
m.write(current_ip)
print date + " IP has changed from " + last_ip + " to " + ip
print "Grabbing url " + update_url + "....."
remote = urllib2.urlopen(update_url)
last_ip = current_ip
else:
print "IP " + current_ip + "has not changed"
tiempo.sleep(3600)



como ven es muy corto y sencillo. Ahora pueden agregar una tarea a cron mediante:

$ crontab -e
0 * * * * /path/del/script

y listo !. Ahora cada hora se ejecutará el script y verificará el cambio de IP. Ya es cuestión de ustedes que servicios tener habilitados para acceso remoto.

6 comentarios:

Camilo dijo...

Que buen post juan, me sorprendo de las cosas que puede hacer en python. Que bueno por usted.

Cronopio dijo...

Bueno realmente creo que todos tenemos ese inconveniente en casa.

Mi solución fue DynDNS con el software ddclient del cual hay un paquete para debian.

Esta opción es muy interesante porque es sencilla y rápida de aplicar.

Saludos!!

jpromerobx dijo...

A camilo: Que hubo Pacho. Gracias por su comentario. Espere no más a que veamos Pyrobotics y se va a sorprender !

jpromerobx dijo...

A cronopio: Muchas gracias por el comentario. En realidad son muchas las soluciones que hay a este problema, pero casualmente freedns fue la primera que encontré (por sugerencia de nemqueteba) y me pareció muy sencilla. El servicio de DynDNS se ve muy atractivo y ddclient al ser paquete Debian suena muy atractivo. Lo probaré. Un Saludo

Anónimo dijo...

Hola, de pronto no es del tema pero me gustaría compartir con ustedes este portal de conexiones a bases de datos con SMS. También se pueden hacer encuestas móviles.
Trekton

Miguel Angel Moreno dijo...

Juan muy chévere .....

Pero al tratar de correrlo me mostraba varios errores de codificación .... preguntando por ahi me dijeron que agregara esto al inicio del código código:

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

Además el código no está tabulado. Pero ya solucione los problemas y listo!!!