Saber siempre tu IP/WAN

Aveces queremos acceder a nuestros ordenadores de casa desde el exterior bien sea porque tienes algún archivo en uno de tus discos duros locales, deseas conectar remotamente con uno de tus ordenadores o cualquier otra cosa similar, por ejemplo en este caso me he montado una Rapsberry Pi 2 en casa para montar en ella un Media Center y así dejar de compartir el contenido multimedia desde mi portátil principal hacia la consola, con lo cual necesitaba tener aparte de el portátil encendido y operativo y aparte encender la consola, esto aunque no parezca a diario puede tener un resultado no muy positivo a nivel de la factura de la luz sin hablar que es obviamente todo mucho mas tedioso.

Lo que he hecho ha sido montar una Rapsberry Pi 2 con RapsBMC al cual he conectado mis discos duros externos y me he instalado el Transmission-Daemon entre otras cosas, el tema es saber constantemente la IP WAN tomando en cuenta que tengo una IP dinámica con mi ISP.

20150213_204743.jpg 20150213_204818.jpg 20150213_205011.jpg 20150213_205139.jpg 20150213_205203.jpg 20150213_205333.jpg 20150213_212253_HDR.jpg 20150213_212254.jpg

Algunos servicios como NO-IP.COM, DynDNS entre otros suelen ofrecer gratuitamente por un determinado tiempo la instalación de una App en el ordenador/servidor para que constantemente se sincronice con el servicio y de esa forma puedas traducir tu IP mediante una DNS que ellos te ofrecen al puro estilo de un sub-dominio como por ejemplo test.no-ip.org o cualquier otro, el problema con estos servicios es que hoy en día luego de unos 15 días al vencer te solicitan que pagues el servicio o en todo caso notificaciones para que renueves constantemente el servicio lo cual se hace tedioso.

Yo como no me quiero complicar demasiado la vida lo que he pensado hacer es un crond que se ejecute a diario y me envié un archivo de texto a una carpeta FTP de mi servidor dedicado con el numero IP de mi servicio de Internet de casa, de esta forma el dia que note que no puedo acceder a mis recursos en casa sera tanto como entrar a mi directorio FTP y comprobar el ultimo archivo cargado y conocer la IP actual.

Ahora ¿como lo he hecho?
Fácil!, teniendo en marcha el Rapsberry y tomando en cuenta que la distro instalada esta basada en Debian simplemente nos instalamos curl con el siguiente comando:

apt-gt install curl

Teniendo curl instalado desde la consola podemos ejecutar el siguiente comando:

curl ifconfig.me

Esto nos devolverá la IP publica, el problema es que la unica forma de saberla de esta forma es conectandome via SSH al Rapsberry y si no conozco la IP publica sera obviamente complicado, con lo cual instalamos expect con el siguiente comando:

apt-get install expect

Ahora creamos un pequeño script en bash con el siguiente contenido:

#!/bin/bash/expect -f 
ip=$(curl ifconfig.me) #Variable de extracción de la IP WAN 
fecha=$(date +”%m_%d_%Y”) #Variable de fecha 
archivo=”/root/$ip._$fecha.txt” #Directorio y nombre del archivo 
echo $ip > “$archivo” #Imprimimos el archivo 
lftp -u [user],[password] ip « EOF #Abrimos conexión FTP 
set ssl:verify-certificate no #Para evitar validación de SSL en caso de tenerla 
set ftp:ssl-force true #Forzar el SSL 
set ftp:ssl-protect-data true #Habilitar la protección de datos 
put $archivo #Subimos el archivo 
bye #Finalizamos 
EOF #Cerramos la conexión   
rm -rf $archivo #Para no dejar archivos en local lo eliminamos.

Ya lo tenemos! lo guardamos como archivo con extensión .sh y lo ejecutamos, yo por ejemplo lo he llamado getip.sh, lo ejecuto con el siguiente comando:

sh getip.sh

Durante el progreso puedes ver lo que va haciendo, una ves terminado y para comprobar si ha funcionado sera solo mirar nuestro directorio FTP y comprobar que el archivo esta cargado allí.

Ahora simplemente editamos el crontab para que se ejecute de forma automática, yo por ejemplo lo he configurado para que lo ejecute cada dia a las 10:00 horas. Editamos el arachivo /etc/crontab y al final del archivo añadimos la siguiente linea: 

00 10 * * * sh /root/getip.sh

Y woala!, ya lo tenemos, todos los días a las 10 de la mañana el archivo .sh se ejecutara enviando a nuestro FTP un archivo de texto con nuestra IP publica como nombre y con ella como contenido de texto, así que en el momento en que vea que la IP publica habitual deja de funcionar solo tendré que entrar al FTP y ver el ultimo archivo creado para conocerla.

Espero que a quien me lea le sea de provecho!