Instalando OpenVPN server en una Raspberry Pi
Algo super util en una Raspberry para poder conectarnos desde donde sea será el montar un servidor VPN, en un documento anterior ya vimos cómo montarlo, pero era con PPTP, algo no muy seguro digamos, en este documento veremos cómo instalar OpenVPN en una Raspberry, os dejo unos apuntes para que podáis montar una VPN segura y os podáis conectar desde cualquier lugar!
OpenVPN nos ofrece una combinación de seguridad a nivel empresarial, seguridad, facilidad de uso y riqueza de características. La seguridad es lograda mediante cifrado del tráfico usando mecanismos SSL/TLS, por lo que en este documento nos desplegaremos además de OpenVPN en sí, nuestra propia CA, generaremos los certificados para los usuarios y daremos sus claves para que se conecten! Si no tenemos una IP pública fija, sería ideal combinarlo con el cliente NO-IP en nuestra Raspberry!!!
Comenzamos con la instalación de OpenSSL:
sudo apt-get install openvpn openssl cd /etc/openvpn sudo su cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa
Editaremos con ‘vim easy-rsa/vars’ y corregiremos la siguiente ruta con el path correcto: ‘export EASY_RSA=“/etc/openvpn/easy-rsa”’
Creamos los certificado del servidor y de un cliente además de la clave, al rellenar la información del certificado con que indiquemos el ‘Common name’ sería suficiente, empezamos:
./easy-rsa/clean-all cd easy-rsa ln -s openssl-1.0.0.cnf openssl.cnf cd .. ./easy-rsa/build-ca OpenVPN ./easy-rsa/build-key-server server (y a todo) ./easy-rsa/build-key client1 ./easy-rsa/build-dh
Creamos nuestro archivo de configuración con ‘vim /etc/openvpn.conf’ y con esta configuración sería suficiente:
dev tun proto udp port 1194 ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh1024.pem user nobody group nogroup server 10.8.0.0 255.255.255.0 persist-key persist-tun status /var/log/openvpn-status.log verb 3 client-to-client push "redirect-gateway def1" #set the dns servers push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" log-append /var/log/openvpn comp-lzo
Ejecutamos lo siguiente para permitir el enrutado a nuestra red, en este ejemplo uso el interfaz Wifi wlan0, si usas ethernet deberías poner eth0; ojo al rango IP por si tu red no es la 192.168.1.0/24 para cambiarlo y por último la 192.168.1.197 es la dirección de mi Raspberry Pi:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o wlan0 -j SNAT --to 192.168.1.197
Editamos ‘vim /etc/sysctl.conf’ y descomentamos’ net.ipv4.ip_forward=1′
Ya podremos arrancar OpenVPN con: ‘/etc/init.d/openvpn start’.
Ya podremos arrancar OpenVPN con: ‘/etc/init.d/openvpn start’.
Crearemos nuestro fichero de configuración OpenVPN para los clientes, ejecutamos ‘vim conexion_vpn.ovpn y poner:
dev tun client proto udp remote NOMBRE_O_DIRECCIÓN_IP_(PUBLICA)_DE_LA_RASPBERRY 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3
Editamos ‘vim /etc/rc.local’ y ponemos al final antes del último exit (ojo al rango IP del ejemplo, interfaz y dirección de la Raspberry Pi:
iptables -t nat -A INPUT -i wlan0 -p udp -m udp --dport 1194 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o wlan0 -j SNAT --to-source 192.168.1.197
Nos copiamos los certificados y los clientes para tenerlos cerca, nos haremos propietarios de los ficheros que entregaremos a los clientes:
cp -rf /etc/openvpn/easy-rsa/keys /home/pi chown pi:pi /home/pi/keys para poder copiarlas con SCP a nuestros PCs sudo chmod 777 /home/pi/keys/client1.key
Copiaremos a los PCs que se quieran conectar los siguientes ficheros: ca.crt, client1.crt y client1.key
Y por último, tendremos que tener en cuenta en abrir los siguientes puertos en nuestros firewalls/routers para permitir el acceso desde Internet a nuestras redes: TCP 443, TCP 943 & UDP 1194.
Comentarios