Disponer de hardware y que este sin utilizar me da cierto repelús, algo que se diseño, fabrico y llego a mis manos por compra o regalo de alguien merece dar servicio en lugar de ver pasar los días en un cajón hasta el momento que descubres que tienes ese 'algo' ya como un objeto vintaje.
Mi Raspberry Pi, la 1, si, la primera que compré merece y puede dar mejor servicio, así que manos a la obra.
Después de mucho pensar y probar distros he decidido que la mejor utilidad que me puede dar es hacer de servidor de VPN seguro, permitiendo conectarme desde cualquier lugar, con acceso a Internet, a mi red domestica por solamente unos de 5€ de consumo eléctrico al año.
Necesitamos:
- 1 Raspberry Pi (Vale la 1, la 2, 3, etc)
- 1 SD de 8GB o más
- 1 cable de alimentación/cargador de smartphone
- 1 cable de red RJ45
- 1 Lector de tarjetas SD a USB
- Acceso a Internet
- 1 cuenta de no-ip.com o similar (DDNS)
- Acceso a nuestro router de Internet
- 1 Ordenador
En este laboratorio he usado la imagen de OS de Raspian Jessie Lite, sin interface gráfica, solo consola.
https://downloads.raspberrypi.org/raspbian_lite_latest
https://downloads.raspberrypi.org/raspbian_lite_latest.torrent
Flasearemos la imagen del OS descargada, ya sea desde Windows con
win32image, usbutil, o dd desde linux.
Colocar la SD en la Raspberry, conectar el cable Etherenet del router a la Raspberry y por ultimo, mi recomendación el cable de alimentación a un puerto USB del router, en caso de disponer, y nos ahorramos un alimentador. En caso contrario, pues al alimentador y a la Raspberry, que comenzara a arrancar.
Tras esperar un par de minutos, nos conectamos a nuestro router, vía navegador, normalmente http://192.168.0.1 y buscamos en la administración avanzada que IP ha concedido a nuestra Raspberry.
Tras conocer la IP, realizar un ssh contra ella para continuar.
NOTA: También es posible conectar la Raspberry vía cable HDMI y un teclado USB y realizar esta configuración directamente en la Raspberry.
NOTA2: Desde Windows tendremos que usar algún cliente de SSH, como
mRemoteNG.
Nos conectamos con las credenciales iniciales de Raspian:
User: pi
Pass: raspberry
# ssh pi@IP_Raspberry
ejemplo: ssh@192.168.0.15
el primer paso es actualizar nuestra distribución
# sudo apt-get update && sudo apt-get upgrade
Configurar IP fija en RASPBIAN JESSIE LITE
Ahora elegiremos una IP de nuestra red domestica para asignarla como IP fija a nuestro servidor VPN, yo he decidido usar la 192.168.0.6, asi que vamos a poner esta IP como fija.
# sudo vi /etc/network/interfaces
Cambiar por static la linea 'iface eth0 inet', y añadir el resto de lineas con la IP que hemos elegido, asi como la IP de nuestro router (gateway) y los DNS que queramos usar
--------------------------------------------------------
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.0.6/24
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4
--------------------------------------------------------
Guardar y salir de vi con :x
Ahora, tenemos que editar el fichero /etc/dhcpcd.conf
# sudo vi /etc/dhcpcd.conf
--------------------------------------------------------
interface eth0
static ip_address=192.168.0.6/24
static routers=192.168.0.1
static domain_name_servers=8.8.8.8 8.8.4.4
--------------------------------------------------------
Guardar y salir de vi con :x
Reiniciamos.
# sudo shutdown -r now
Y un minuto después, nos volvemos a conectar, ahora a la IP fija que hemos asignado
# ssh pi@192.168.0.6
Ahora, vamos a cambiar la contraseña por seguridad.
# sudo passwd
Nos pedirá la actual, y dos veces la nueva para su confirmación. Elige una contraseña segura para complicar las intrusiones.
Configurar el servidor para usar DDNS
Nos registramos en no-ip.com u otro servicio de DDNS y apuntaremos nuestra dirección de DDNS, para este laboratorio he elegido 'vpn.no-ip.net'
# mkdir noiptemp
# cd noiptemp
# wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
# tar -zxvf noip-duc-linux.tar.gz
# cd noip-2.1.9-1/
# make
# sudo make install
Nos preguntara usuario, etc, rellenamos los la información de los campos.
Para que el proceso se inicie automaticamente en cada reinicio, creamos un script.
sudo vi /etc/init.d/noip2
Y pegar dentro este contenido.
--------------------------------------------------------
### BEGIN INIT INFO
# Provides: noip2
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
#! /bin/sh
# /etc/init.d/noip
# If you want a command to always run, put it here
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting noip"
# run application you want to start
/usr/local/bin/noip2
;;
stop)
echo "Stopping noip"
# kill application you want to stop
killall noip2
;;
*)
echo "Usage: /etc/init.d/noip {start|stop}"
exit 1
;;
esac
exit 0
--------------------------------------------------------
Damos permisos de ejecución al script
# sudo chmod +x /etc/init.d/noip2
# sudo update-rc.d noip2 defaults
Editar el fichero /etc/rc.local
# sudo vi /etc/rc.local
Y agregar /usr/local/bin/noip2
Antes de la última línea, donde pone exit 0.
Instalar OpenVPN
Llegado este momento, ya estamos en disposición de configurar nuestro servidor VPN, he probado varias formas y finalmente me quedo con la indicada en https://www.sitepoint.com , que es esta:
Nos pasamos a root con:
# sudo su
Y ejecutamos la instalación desde Internet.
# curl -L https://install.pivpn.io | bash
Pulsar en 'OK'
Pulsar en 'OK'
Elegimos el adaptador de red que vamos a usar, este sera 'eth0' si hemos puesto el cable RJ45, pudiendo usar también un adaptador Wifi 'wlan0', lo cual no recomiendo para un servidor VPN.
Cambiar con los cursores a eth0 y seleccionar con la tecla 'espacio', pulsar en 'OK'
Confirmaremos que la IP es la que hemos configurado como IP fija del servidor, pulsar 'Yes' si es correcto, o 'No' para cambiarla.
Pulsar en 'OK'
Elegiremos el usuario de Raspbian que vamos a usar, en mi caso no he creado ninguno, asi que sera el usuario 'pi', pulsar en 'OK'
Nos informa de la importancia de tener el sistema actualizado y recomienda activar las actualizaciones automáticas, pulsar en 'OK'
Pulsar 'Yes' para activar las actualizaciones automáticas.
Este proceso llevara su tiempo.
Elegir el puerto que usaremos para la conexión VPN, anotar este puerto para posteriormente abrirlo en el router, podemos dejar el 1194 o cambiarlo, es vuestra decisión. Pulsar en 'OK'
Confirmar el puerto elegido y pulsar 'Yes'
Es el momento de elegir el nivel de cifrado de las comunicaciones, no usar el nivel más basico, siendo recomendable el intermedio, 2048. Pulsar 'Ok'
Pulsar en 'OK'
Para la generación del certificado, podemos cambiar la información del mismo, introduciendo
los datos de país, estado, ciudad, organizaciones, nombre del servidor, NO cambiar Key_Name, y si el email.
Estos datos no son imprescindibles de cambiar, pero las cosas bien hechas, bien están.
Al terminar, pulsar en 'OK'
Pulsar 'Yes' para confirmar la información introducida o 'No' para corregirla.
Pulsar en 'OK' para generar el certificado.
Este proceso llevara su tiempo, y si te atreviste a usar el nivel Paranoid 4096, ya puedes irte a comer.
Terminado de crear el certificado, nos pide que dirección usaran los clientes para conectase. A no se que dispongamos de IP estática, cosa que dudo mucho, haremos uso de nuestra dirección DDNS que nos proporciona no-ip.com u otro servicio similar.
Seleccionar la segunda opción DNS Entry y pulsar 'Ok'
Introducir nuestra direccion DDNS y pulsar 'Ok'.
Finalizando, nos permite seleccionar que DNS usaremos, a nuestro gusto.
Nos indica que en cualquier momento podemos crear usuarios cliente de VPN con el comando 'pivpn add xxxxx', siendo xxxxx el nombre de usuario a crear. Pulsar 'Ok'
Y terminada la instalación, es el momento de reiniciar, pulsar 'Yes'
Mientras reinicia nuestro servidor, nos conectaremos a nuestro router y añadiremos una regla, reenvio de puertos, desde la ip del servidor VPN 192.168.0.6 y el puerto de entrada y salida 1194 u otro si lo hemos indicado durante la instalación.
Ahora, vamos a generar usuarios que pueda conectase via VPN.
volvemos a conectar al servidor VPN
# ssh pi@192.168.0.6
Y creamos el usuario:
# pivpn add usuario1
* cambiar 'usuario1' por un nombre a vuestra elección.
Durante la creación, nos pedira varios datos a rellenar, incluida una contraseña de conexión.
Tras un breve proceso, genera un fichero llamado 'usuario1.ovpn' que nos llevaremos a la maquina que usaremos para conectar.
Descargar desde https://openvpn.net/ el cliente VPN para vuestra plataforma (Windows, Max, etc) y simplemente indicando el fichero 'usuario1.ovpn' que hemos generado, realizaremos la conexión a nuestra red domestica.
¿Y el cliente OVPN para Linux?.
En Devian/Ubuntu es muy fácil, desde la terminal:
# sudo apt-get install openvpn network-manager-openvpn-gnome
Después, crear una conexión nueva, aparecerá la opción VPN, desde fichero, y ya tenemos nuestra VPN configurada.
Enlaces:
Setting up a Home VPN Server | https://www.sitepoint.com/setting-up-a-home-vpn-using-your-raspberry-pi/
Instalar no.ip.com en la Raspberry Pi | http://carlini.es/instalar-no-ip-en-la-raspberry-pi/