Problema: Queremos conectarnos remotamente a nuestro equipo sin tener que consultar antes su IP
Solución: Configurar una IP estática para la red LAN, obtener una IP estática en internet a través de un servicio externo (no-ip) y/o automatizar una notificación para que se nos avise cada vez que cambie la IP
A) IP fija en la red local
1- Definimos la IP que queremos usar:
pi@bot ~ $ sudo nano /etc/network/interfaces
interfaces
ANTES:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Comentamos la linea 4 para deshabilitar la IP dinámica y añadimos las lineas de la 6 a la 9 para configurar nuestra IP estática siendo 192.168.1.69 el valor elegido.
interfaces
DESPUES:
auto lo
iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.69
netmask 255.255.255.0
gateway 192.168.1.1
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
2- Configuramos el servidor DNS
pi@bot ~ $ sudo nano /etc/resolv.conf
Si en él ya aparece un "nameserver" entonces no es necesario editarlo, en caso contrario hay que añadir un servidor DNS (el 8.8.8.8 de Google, la del router - "DNS Server Configuration" en http://192.168.1.1 - o la de tu ISP) para que quede, por ejemplo, así:
domain Home
search Home
nameserver 87.216.1.65
nameserver 87.216.1.66
B) IP fija en internet
1- Registrar una cuenta en noip.comy añadir un Host a nuestra cuenta.
Menú -> Hosts/Redirects -> Add a Host
2- Instalar el paquete NO-IP en Raspberry Pi
pi@bot ~ $ wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
...
pi@bot ~ $ tar -zxf noip-duc-linux.tar.gz
pi@bot ~ $ cd noip-2.1.9-1/
pi@bot ~/noip-2.1.9-1 $ make
...
pi@bot ~/noip-2.1.9-1 $ sudo make install
...
Please enter the login/email string for no-ip.com nuestro_usuario_noip
Please enter the password for user 'nuestro_usuario_noip' ******
Una vez instalado, si necesitas repetir la configuración del paquete NO-IP (por ejemplo, porque has añadido nuevos dominios a tu cuenta) ejecuta:
pi@bot ~ $ sudo /usr/local/bin/noip2 -C
3- Configurar arranque automático de no-ip
Creamos el archivo noip2 con el contenido detallado más abajo
pi@bot ~ $ sudo touch /etc/init.d/noip2
pi@bot ~ $ sudo chmod +x /etc/init.d/noip2
pi@bot ~ $ sudo nano /etc/init.d/noip2
#! /bin/bash
### BEGIN INIT INFO
# Provides: Servicio No-IP
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: arranque automatico para no-ip
# Description:
#
### END INIT INFO
sudo /usr/local/bin/noip2
Le damos permisos de ejecución y lo ponemos en la cola de ejecución y reiniciamos
pi@bot ~ $ sudo update-rc.d noip2 defaults
pi@bot ~ $ sudo reboot
Nota: Algunos routers no permiten acceder a la red local desde ellos mismos pasando por internet (NAT Loopback), es decir, si parece que tu dirección no-ip no funciona prueba a usarla desde una conexión a internet distinta a la del router al que estas intentando acceder.
C) Notificar IP real cada vez que cambie
1- Crear comando que nos devuelva nuestra ip
pi@bot ~ $ sudo touch /usr/local/bin/getip
pi@bot ~ $ sudo chmod 777 /usr/local/bin/getip
pi@bot ~ $ sudo nano /usr/local/bin/getip
#!/bin/sh
IP=$(curl -s icanhazip.com)
if [ -z "$IP" ]; then
IP=$(curl -s ifconfig.me)
fi
if [ -z "$IP" ]; then
exit 1
fi
echo "$IP"
exit 0
2- Crear script en /etc/network/if-up.d/
pi@bot ~ $ sudo touch /etc/network/if-up.d/sendip
pi@bot ~ $ sudo chmod +x /etc/network/if-up.d/sendip
pi@bot ~ $ sudo nano /etc/network/if-up.d/sendip
#!/bin/sh
IP=$(getip)
if [ -z "$IP" ]; then
exit 1
fi
if [ -f /tmp/lastip ]; then
LAST=$(cat /tmp/lastip)
if [ "$LAST" = "$IP" ]; then
exit 0
fi
fi
echo "$IP" > /tmp/lastip
say "$IP"
exit 0
Nota: El comando “say” es el implementado en “Notificaciones xmmp desde linux” y podría ser sustituido por algún otro método de notificación que deseemos, por ejemplo mandarnos un mail
BONUS: Si queremos que nuestro equipo este disponible contra viento y marea quizá nos interese que sea capaz de reconectar automáticamente en caso de caida.
Fuentes del punto c: antonio-mario.com, www.mathworks.es