31 marzo 2014

Acceder a un Linux desde internet

Ya vimos como conectar remotamente a una máquina en Raspberry Pi Instalación de NOOBS y primeros pasos. Sin embargo esto era sólo para equipos en la misma red local. Si queremos acceder desde qualquier sitio de internet primero hay que hacer dos cosas.

  • El primero desactivar el DHCP de nuestro router para que siempre la Raspberry (en este caso, pero vale para cualquier equipo) tenga siempre la misma IP. Depende de cada router por ejemplo para el mio sería así.
  • Este paso no hace falta hacerlo siempre ya que muchas veces la raspberry nos quedará ya configurada pero por si no fuese así aquí tenéis un enlace donde se explica
  • Acto seguido hay que abrir el puerto 22 para esta IP tambien en el router. Es fácil, fácil, facil.
  • Finalmente para acceder desde internet, necesitaremos nuestra IP pública, para conocerla simplemente en un navegador navegamos hasta icanhazip.com. Esta web simplemente devuelve nuestra ip pública. El problema suele ser que nuestro ISP (telefonica, vodafone, etc...), normalmente no nos da una IP estática, eso quiere decir que nos cambia constantemente nuestra IP segun va teniendo IPs disponibles. En este caso, o bien nos registramos en un servicio que nos vaya dando nuestra ip publica constantemente o bien programar un pequeño script. Yo voy a optar por la segunda opción ya que tengo un hosting web (podéis obtener uno en hostinger.com, por ejemplo) al cual podre subir mi ip pública cada cierto tiempo.
#!/bin/bash
# Este archivo lo llamamos ipp.sh
a=$(curl -s icanhazip.com)
sleep 30
echo $(date) "ipp" $a >> ipp.txt
lftp -u user,pass ftp.website.com <<EOF
cd /public_html/raspi/
lcd /home/pi/
put ipp.txt
quit 0
EOF

Nota: Hay que instalar lftp para usar este script.

Una vez hecho el script, añadimos permiso de ejecución
chmod u+x ipp.sh
y lo programamos en nuestro cron, recordemos que para hacerlo debemos editar el archivo crontab, para hacerlo simplemente escribimos:
crontab -e
se nos abrirá el archivo con nuestro editor de textos predeterminado al final del archivo añadimos la frecuencia de ejecucion con el formato 
m h dom mon dow command


cron se ejecuta cada minuto, si pusiesemos 
* * * * * /home/pi/ipp.sh
se ejecutaría todos los minutos de todas las horas de todos los dias (el símbolo * equivale a todos). Para más información podéis visitar esta página de Linux Total


En nuestro caso bastará con
0 * * * * /home/pi/ipp.sh

Guardamos y listo.

Ahora ya podremos acceder a la raspberry con putty como haciamos en local pero desde cualquier parte, solo hay que sustituir la IP local por la publica.