1) Qué es una vpn?
2) Conectarse al servidor
3) Instalar openvpn
4) Editar archivo /etc/default/openvpn
5) Crear claves
5.1) Copiar directorio easy-rsa
5.2) Modificar archivo vars
5.3) Ejecutar vars y clean-all
5.4) Instalar openssl
5.5) Crear build-ca
5.6) Crear claves para el servidor
5.7) Crear claves para el cliente
5. Generar parametros para el dh
6.) Configurar cliente
6.1) Debemos instalar el openvpn
6.2) Compar archivos
6.3) Dar permisos
7) Configurar archivos openvpn.conf del cliente y servidor
7.1) Cliente
7.2) Servidor
8.) Configurar IP
9.) Rectificar
10.) Reiniciar
OpenVPN
1.) Que es una VPN?
La Red Privada Virtual (RPV), en inglés Virtual Private Network (VPN), es una red virtual que se crea “dentro” de otra red, como por ejemplo Internet. Generalmente las redes privadas se crean en redes públicas, en las que se quiere crear un entorno confidencial y privado. La VPN nos permitirá trabajar como si estuviésemos en la red local, es totalmente transparente para el usuario.
Como crear una VPN?
Primero crearemos el servidor
Estando en el servidor o bien remotamente por ssh tendremos que instalar y configurar varios archivos, claves, etc.
Si se desea crear la red por ssh tendremos que ejecutar una comanda de mas para establecer la conexion.
( Se recomienda crearla por ssh, ya que asi nos evitaremos tener que ir al servidor y volver al cliente cada vez que tengamos que añadir algo, modificarlo, etc.)
2) conectarse al servidor
#Este paso se puede saltar si se crea des del propio server
La comanda para conectarse al servidor ssh@IP DEL SERVIDOR ( para hacerlo de esta forma se debe tener el ssh instalado en ambos equipos. instalar ssh apt-get install openssh-server )
3) instalar openvpn
Una vez estando connectados al servidor, lo primero que debemos hacer es instalar el programa necesario para poder crear la red. sudo apt-get install openvpn
4) Editar archivo /etc/default/openvpn
En este “archivo” tenemos que comentar todas las líneas en /etc/default/openvpn y añadir:
AUTOSTART=”openvpn”
Con lo que hemos creado ahora, le dice a la OpenVPN que archivo de configuración por defecto usará al iniciar el servicio. Los archivos de configuración se guardan en /etc/openvpn y usan la extensión .conf por lo que la instrucción de arriba le dice a OpenVPN que use /etc/openvpn/openvpn.conf, es un archivo que tendremos que crear en su momento, ahora aún no existe.
# Siempre que se cambie algun fichero, se edite, etc, tendremos que reiniciar el servicio.
sudo /etc/init.d/openvpn restart
5) Crear claves
Ahora procederemos a crear las claves de seguridad de seguridad. Todo esto se hace en el servidor como root. Ejecuta:
Entramos en la carpeta openvpn cd /etc/openvpn/
5.1) Copiar directorio easy-rsa
Ahora copia el directorio easy-rsa a /etc/openvpn:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ .
5.2) modificar archivo vars
Ahora tenemos que editar el archivo vars con algunos de los editores. (podeis usar el vi, nano, gedit o el que tú prefieras):
sudo nano easy-rsa/2.0/vars
Ahora modifica los siguientes parámetros:
export KEY_COUNTRY=ES
export KEY_PROVINCE=BCN
export KEY_CITY=MATARO
export KEY_ORG=”SITE-OPENVPN“
export KEY_EMAIL=”site91.23@gmail.com“
Guarda y cierra el archivo.
5.3) ejecutar vars y clean-all
Ahora debemos ejecutar el vars
. ./vars
Importante: eso es un punto, un espacio y luego otro punto y seguido por /vars.
A continuación:
./clean-all
El siguiente comando crea la autoridad de certificados (CA) usando los parámetros arriba definidos, solo deberás añadir Common Name, yo usé OpenVPN-CA
5.4) instalar openssl
Lo que haremos despues necesitara el OpenSSL y si no lo teneis en el servidor deberias instalarlo
sudo apt-get install openssl
5.5) crear build-ca
Ahora sí: ./build-ca
# Una vez ejecutado el build-ca, nos saldran una serie de “preguntas” a responder todas. Solo es copiar lo que hay entre [] y en caso de no haver nada, habría que poner algo.
( esto nos saldra en las claves del server y del cliente )
5.6) crear claves para el servidor
./build-key-server server
Cuando build-key-server te solicite Common Name escribe server, el mismo parámetro que le diste al comando
Acontinuación, nos saldran dos preguntas a las que responderemos con y “yes”
5.7) crear claves para el cliente
./build-key client1
Debemos usar client1 como Common Name, al igual que el servidor que usamos para build-key.
Si vamos a tener más clientes debemos repetir este último paso para client2, client3, etc.
Acontinuación, como en el servidor nos saldran dos preguntas a las que responderemos con “y” “yes”
5. Generar parametros para el dh
Ahora debemos generar parámetros para el Diffie Hellman:
Para generar los parametros usa ./build-dh
Haviendo hecho los pasos 5.5 5.6 5.7, debemos tener un nuevo directorio con las claves y certificados en tu servidor: /etc/openvpn/easy-rsa/1.0/keys.
6.) Configurar cliente
6.1) Debemos instalar el openvpn
La comanda para instalarlo es apt-get install openvpn
6.2) Compar archivos
Para configurar tu primer cliente copia los siguientes archivos de server al cliente
Los archivos de pueden pasar de muchas formas posibles, por Pen drive, por e-mail, etc. Yo opte por usar sftp lo que vendria a ser lo mismo que el ftp pero mas seguro.
Esto se puede usar de dos formas posibles pero que al fin y al cabo son iguales:
* Conectandose des del cliente al servidor y usas un get para coger los archivos
- Usamos esta comanda para conectarnos
sftp [Tienes que estar registrado y conectado para ver este vínculo] => sftp nombredeusuario@ipdelserver
-Una vez dentro, nos situamos donde queremos guardar los archivos que cogeremos del servidor (/etc/openvpn). Ahora usamos get y los nombres de los archivos.
Con pwd podemos saber donde estamos
* O bien des del servidor y usas un put para pasarle los archivos, ambas formas son igual de seguras, rapidas, etc.
- Usamos esta comanda para conectarnos
sftp [Tienes que estar registrado y conectado para ver este vínculo] => sftp nombredeusuario@ipdelcliente
- usamos pwd para ver donde estamos, vamos al directorio donde se ubican los archivos a pasar
- luego put mas los nombres de los archivos.
Archivos a pasar:
ca.crt
client1.crt
client1.key
6.3) Dar permisos
A los archivos que acavamos de pasar, les tendremos que dar permisos
chmod 755 ca.crt client1.crt client1.key
7) Configurar archivos openvpn.conf del cliente y servidor
7.1) Cliente
Ahora en el cliente tenemos que crear un archivo llamado openvpn.conf en /etc/openvpn y escribe lo siguiente en él:
sudo nano /etc/openvpn/openvpn.conf
#########################
dev tun
client
proto tcp
remote ipdelservidor 1194
resolv-retry infinite
nobind
user nobody
group nogroup
# Try to preserve some state across restarts.
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
# Set log file verbosity.verb 3
#############################
7.2) Servidor
Ahora en el servidor crea un archivo openvpn.conf en /etc/openvpn y escribe lo siguiente en él:
#############################
dev tun
proto tcp
port 1194
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
#status openvpn-status.log
#verb 3
client-to-client
push “redirect-gateway def1″
#log-append /var/log/openvpn
comp-lzo
#############################
En caso de disponer de LAN muy lentas, podeis comentar la comp-lzo con un #
#comp-lzo
8.) Configurar IP
finalmente configura IP forwarding e iptables para NAT en el servidor:
echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Puedes ver y confirmar que la regla fue escrita correctamente con esta comanda:
sudo iptables -L -t nat
9.) Rectificar
En caso de haver cometido algun error podeis remover todas las reglas
sudo iptables -F -t nat
10.) Reiniciar
Ahora debemos reiniciar OpenVPN en ambos equipos ( sudo /etc/init.d/openvpn restart ), cliente y servidor, y deberías estar listo.
Si ahora ejecutas ifconfig y route -n deberíamos ver una nueva interfaz, tun0, en cliente y servidor.
Puedes confirmar que hay conexíon haciendo ping entre el cliente y servidor las IP de las interfaces tun0, por ejemplo:
ping 10.8.0.1