Professional Documents
Culture Documents
OPENVPN
Bilal Jebari
www.bilaljebari.gq
www.bilaljebari.blogspot.com
Introducción
Esta pequeña guía nos servirá de utilidad para ayudarnos a instalar y configurar un Servidor
VPN en nuestro sistema operativo Linux independientemente de la distribución.
Espero que les sirva de utilidad y si tienen alguna duda, contacten conmigo, les intentaré
ayudar lo máximo posible.
$ nano /etc/network/interfaces
Estos son los valores que debe tener el archivo interfaces (en su caso cambiará dependiendo
de la IP de su red).
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.10.10.220
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
gateway 10.10.10.1
Si estamos usando una versión antigua de Linux, se recomienda actualizar los paquetes.
$ apt-get update
$ apt-get upgrade
Después de la instalación vamos a copiar el contenido que hay en la carpeta easy-rsa que se
encuentra en /etc/share a nuestro directorio easy-rsa dentro del directorio openvpn. La copia
la haremos de forma recursiva.
$ cp -r /etc/share/easy-rsa /etc/openvpn/easy-rsa
En caso de error a la hora de copiar la carpeta, es posible que tengamos que instalar easy-rsa.
Para corregir este error, tenemos que hacer lo siguiente:
$ apt-get install easy-rsa
$ make-cadir /etc/openvpn/easy-rsa
$ cd /etc/openvpn/easy-rsa
$ nano vars
Modificamos las variables export EASY_RSA y export KEY_SIZE por los siguientes valores
consecutivamente.
El siguiente paso es generar los certificados CA. Para ello, estando situados en el directorio
easy-rsa ejecutamos los siguientes comandos.
$ source ./vars
$ ./clean-all
$ ./build-ca
Este último es para generar la entidad certificadora. Podemos dejar los valores por defectos o
cambiarlos. Debemos tener especial atención al common ya que es nuestro nombre del
servidor VPN. Es importante porque en el siguiente paso crearemos el certificado del servidor
y debe tener el mismo nombre.
Después de crear el certificado anterior, vamos a crear un certificado para nuestro Servidor
VPN. Debemos prestar atención y dejar los campos por defecto y verificar que el nombre de
nuestro servidor es el que hemos puesto anteriormente.
Después vamos a crear la clave para el usuario con el nombre que queramos. En mi caso
pondré [bilal]
Nos volverán a aparecer los campos a rellenar, los dejamos en blanco salvo cuando nos pida
una contraseña, ahí debemos poner una que será necesaria para poder conectarse
posteriormente mediante OpenVPN a nuestro servidor VPN.
Bien, después de crear el usuario vamos protegerlo mediante la encriptación des3. Para ello
usamos la siguiente orden dentro del directorio keys.
$ cd keys
$ cd /etc/openvpn/easy-rsa
Ahora vamos a proceder a generar el intercambio de claves Diffie-Hellman, esto permite que
dos entidades permitan intercambio de las claves a través de un servidor público.
$ ./build-dh
$ nano /etc/openvpn/server.conf
A continuación os dejo la configuración que tengo yo, podéis usar esta misma reemplazando
los valores que os interese
dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/[Poner_Nombre_CERT_Servidor].crt
key /etc/openvpn/easy-rsa/keys/[Poner_Nombre_KEY_Servidor].key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig 10.8.0.1 10.8.0.2
push "route 10.8.0.1 255.255.255.255"
push "route 10.8.0.0 255.255.255.0"
push "route 10.10.10.220 255.255.255.0" #Sustituir la IP 10.10.10.220 por la vuestra X.X.X.X
push "dhcp-option DNS 8.8.8.8"
push "redirect-gateway def1"
client-to-client
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher AES-128-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log 20
log /var/log/openvpn.log
verb 1
$ nano /etc/sysctl.conf
net.ipv4.ip_forward=1
$ sysctl -p
El siguiente paso es permitir el tráfico por nuestro túnel VPN, y que los clientes VPN puedan
acceder a redes externas públicas y otras subredes dentro de la red VPN.
nano /etc/rc.local
2ª regla: Permitimos que los paquetes provenientes de 10.8.0.0/24 pueden enviarse o salir por
la interfaz de salida eth0.
3ª regla: Permitimos al servidor OpenVPN que cuando reciba una petición de cualquiera de los
clientes, proceda el mismo a resolverla y enviarla en representación del cliente.
$ reboot
Para ello tenemos que crear un fichero de texto del cual el script leerá la configuración y
generará el usuario .ovpn.
$ nano /etc/openvpn/easy-rsa/keys/Default.txt
client
dev tun
proto udp
remote [IP local, pública o nombre DNS] 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ns-cert-type
server
key-direction 1
cipher AES-128-CBC
comp-lzo
verb 1
mute 20
Dónde pone [IP local, pública o nombre DNS], podemos poner la ip privada, pública, o nombre
dns (eso sí debemos tener abierto el puerto 1194 en nuestro router).
$ nano /etc/openvpn/easy-rsa/keys/MakeOVPN.sh
#!/bin/bash
$ cd /etc/openvpn/easy-rsa/keys
Ejecutamos el Script
$ ./MakeOVPN.sh
Al ejecutar el Script nos pedirá el nombre del usuario creado anteriormente, después nos
aparecerá el siguiente mensaje:
Done! [usuario].ovpn Successfully Created.