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!

raspberry-openvpn-00-bujarra

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’.

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.

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!

Últimos Posts de: Héctor Herrero (ver todos)