OpenVPN en la Raspberry

Por seguridad he querido instalar un servidor Openvpn en la Raspberry para poder acceder a contenidos. Y a los diferentes dispositivos de la red.

Para poder utilizarlo debemos antes, instalar algún paquete con apt-get.

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install openvpn openssl

cd /etc/openvpn

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa

vi easy-rsa/vars

Una vez dentro del fichero debemos cambiar el valor:

export EASY_RSA=”`pwd`”  a –>   export EASY_RSA=”/etc/openvpn/easy-rsa”

Para guardar los cambios, ya lo sabeis    :wq

Ahora deemos crear los certificados y demas. Para ello, empezamos con;

./easy-rsa/clean-all

cd easy-rsa

ln -s openssl-1.0.0.cnf openssl.cnf

cd ..

El siguiente paso es crear los ficheros del servidor y del cliente.

Lo más sencillo es dejar los datos tal y como te los da en el ejemplo. SI no, podéis cambiarlos pero luego tenedlos en cuenta a la hora de generar los del cliente.

./easy-rsa/build-ca OpenVPN

./easy-rsa/build-key-server server

./easy-rsa/build-key client1

./easy-rsa/build-dh

Este comando, que genera el diffie-hellman puede tardar varios minutos..

Ahora crearemos el fichero de configuración de nuestra VPN.

vi openvpn.conf

Lo creamos con el siguiente contenido:

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

Guardamos los cambios con  :wq

Siguiente comando:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT –to [ipaddress rpi]

cd ..

vi  sysctl.conf  

Descomentar la línea;     #net.ipv4.ip_forward=1

Es decir, quitar el comodín y dejarlo;  net.ipv4.ip_forward=1

Como siempre, guardamos con un :wq

cd ..

sudo /etc/init.d/openvpn start

Ahora creamos el fichero de configuración del lado del cliente:

vi mi.ovpn

Y ponemos el contenido:

dev tun
client
proto udp
remote YOUR.RASPBERRYPI.IPADRESS 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

Para guardar  wq

vi nano /etc/rc.local

Y añade estas líneas justo debajo del “exit 0”

iptables -t nat -A INPUT -i eth0 -p udp -m udp –dport 1194 -j ACCEPT

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT –to-source RASPBERRY.PI.IP.ADRESS

:wq para guardar.

Ahora necesitamos copiar los certificados de /etc/openvpn/easy-rsa/keys a otra carpeta. No importa a cual mientras sepamos donde las dejamos 🙂 Por ejemplo en /etc/openvpn

cp -rf present/directory /desire/directory

Copia los siguientes ficheros en el equipo desde donde vayas a conectarte a la VPN:

ca.crt, client1.crt, client1.key y mi.ovpn

Recuerda que si vas a utilizar esta conexión VPN desde fuera de tu red, debes configurar el router para permitir la entrada al puerto 1194 UPD. Por comentar… 🙂

Para poder comprobar si el puerto está escuchand, puedes hacerlo con nmap.

#nmap -p 1194 -sU openvpn.server.ip

Si el resultado es:

11194/udp closed unknown

El puerto está cerrado

Y si aparece:

1194/udp open|filtered unknown

El puerto está abierto y escuchando 🙂

:wq

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s