Antes de empezar hay que aclarar unos puntos. amos a necesitar un Servidor Ubuntu, yo aconsejo la versión 12.0.4 ya que es la que estoy utilizando, pero posiblemente funcione en versiones anteriores y superiores.
Vamos a instalar el OpenVPN de la siguiente manera, adaptador TAP, que el servidor asigne IP a los clientes del MISMO rango que la de la LAN en la que estamos, de esta manera los clientes podrán ver TODA la red interna y los usuarios de dentro de la red también podrá ver los clientes conectado al VPN, esta conexión es muy útil ya que incluso podemos UNIR dos redes como si se vieran físicamente, pero tiene su desventajas.
Antes de instalar debemos saber que rango está dando nuestro servidor DHCP (Router) EJ: 30 al 80, ya que nuestro servidor OpenVPN debe asignar otro rango de IP (EJ: 200-220) para que no se solapen las IPs y no de IP duplicadas.
En segundo lugar aconsejo cambiar el RANGO de ip de la red que no sea las básicas que tenemos todos… (NO hay que usar las: 172.16.x.x, 192.168.x.x o similares) YA que ocurre lo siguiente:
Si nuestro servidor esta en el rango de 192.168.1.X y vamos a una oficina que tienen el MISMO rango ya que es algo habitúal 192.168.1.X el cliente cuando realice la conexión no sabrá por que Gateway debe de salir ya que tiene 2 tarjetas de red (una virtual y otra física) con el mismo rango de IP. (Básico de redes no puedes tener mas de 1 tarjeta de red en el mismo rango de IP) así que aconsejo utilizar algo como 192.170.X.X y de rango C a ser posible.
Antes de comenzar con la instalación del OpenVPN vamos a modificar algunos datos y instalar alguna herramienta que necesitamos (ejecutamos todo como root):
Instalamos el paquete de bridge.
apt-get update apt-get install bridge-utils apt-get install openvpn
Modificamos la IP estática del servidor:
nano /etc/network/interfaces
auto lo iface lo inet loopback iface eth0 inet manual auto br0 iface br0 inet static bridge_ports eth0 address 192.170.1.10 netmask 255.255.255.0 network 192.170.1.0 broadcast 192.170.1.255 gateway 192.170.1.1
Reiniciamos y verificamos que tengamos IP y conexión con normalidad.
reboot
Creamos 2 scripts para activar y desactivar la tarjeta de red puente de la VPN
nano /etc/openvpn/down.sh
#!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin brctl delif br0 tap0
nano /etc/openvpn/up.sh
#!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin brctl addif br0 tap0 ifconfig tap0 0.0.0.0 up
sudo chmod 755 /etc/openvpn/up.sh /etc/openvpn/down.sh
Procedemos a la instalación, es muy similar al comienzo al dispositivo tipo TUN.
Procedemos a crear los certificados necesarios y archivos de configuración.
mkdir /etc/openvpn/easy-rsa rsync -avP /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
A continuación editamos el fichero vars, para personalizar los parámetros que deseemos:
sudo nano /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="AU" export KEY_PROVINCE=VIC export KEY_CITY=MELBOURNE export KEY_ORG="OpenVPN-EXAMPLECOMPANY" export KEY_EMAIL="admin@example.org"
Y ahora para generar los certificados, desde el directorio easy-rsa, ejecutamos los comandos:
cd /etc/openvpn/easy-rsa source ./vars sh ./clean-all ./build-ca ./build-dh
Te solicitara los datos que hemos introducido ya en vars por defecto, cambia common name por el nombre que tendra la VPN.
Primero generamos el certificado para el servidor:
./build-key-server server
Ahora creamos los certificados y llaves para los clientes
./build-key client1 ./build-key client2
Todos los certificados creados los tienes en /etc/openvpn/easy-rsa/keys solo el root puede acceder
Copiamos los siguientes 4 archivos en /etc/openvpn/ son los necesarios para el servidor.
ca.crt server.crt server.key dh1024.pem
A cada cliente debemos hacerle llegar de forma segura los ficheros más el archivo de configuración para la conexion VPN (client1.ovpn que mas adelante crearemos)
ca.crt client1.crt client1.key client1.ovpn
Vamos a crear los ficheros de configuración, podemos encontrar ficheros de ejemplo en /usr/share/doc/openvpn/examples/sample_config_files los cuales podemos copiar a /etc/openvpn y modificar, o crear uno nuevo directamente. El fichero de ejemplo está bastante bien documentado con comentarios.
Te pongo un fichero de configuración a «pelo» básico apra arrancar:
mkdir /etc/openvpn/logs nano /etc/openvpn/server.conf
#Puerto y protocolo de escucha port 443 proto tcp #Dispositivo tipo y numero dev tap0 #Ubicacion de los certificados 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 #Permite certificados duplicados duplicate-cn #Indica: IP-Servidor - Mascara de red - Asignación de IP (inicio y fin) server-bridge 192.170.1.10 255.255.255.0 192.170.1.160 192.170.1.170 #Para hacer el push de el Gateway y IP si quieres que no sea el Gateway el servidor elimina o comenta la linea siguiente push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" #Permite que los usuarios VPN se vean entre ellos. client-to-client keepalive 10 120 comp-lzo persist-key persist-tun up "/etc/openvpn/up.sh" down "/etc/openvpn/down.sh" #Esto es necesario para que el OpenVPN pueda ejecutar las 2 scripts que hemos generado. script-security 3 system verb 5 mute 20 log /etc/openvpn/logs/log-vpn.log status /etc/openvpn/logs/status-vpn.log
Los siguientes pasos debemos de realizar para que el cliente pueda acceder a internet y a la red del servidor:
En el fichero:
nano /etc/sysctl.conf
Debemos añadir o modificar la línea:
net.ipv4.ip_forward=1
Y reiniciamos el servicio para que los cambios tomen efecto:
/etc/init.d/openvpn restart
Recuerda abrir el puerto 443 apuntando a tu servidor.
Preparamos el archivo de configuración para el usuario, lo mismo el archivo de configuración que os dejo esta a «pelo»:
nano /etc/openvpn/easy-rsa/keys/client1.ovpn
#Indicamos que es conexión de cliente, tipo de dispositovp (TAP) y protocolo (TCP) client dev tap proto tcp #IP y Puerto del servidor Openvpn remote IP_PUBLICA_SERVIDOR_VPN 443 resolv-retry infinite #Intentar conectar continuamente nobind persist-key persist-tun #Ubicación de los certificados ca ca.crt cert client1.crt key client1.key #Compresión de los paquetes comp-lzo #Logs verb 4
Con esto permitirá que puedan traspasar los paquetes de una red a la otra (red VPN a red física del servidor)
Ya tenemos listo nuestro servidor, copiamos los 4 archivos que comentemos anteriormente para el usuario:
ca.crt client1.crt client1.key client1.ovpn
Instalamos el cliente OpenVPN (Windows) de la pagian oficial http://openvpn.net/ segun tú versión de Windows o Ubuntu.
No tiene complicacion la instalación despues copiamos los 4 archivos en C:\Program Files\Openvpn\conf\*creamos carpeta\*aqui
Ejecutamos y conectar y listo ya podreis acceder a internet con la red del servidor acceder a el.
El servidor enruta todas las peticiones de los clientes de su VPN
Nota: Con este tipo de conexión simulamos que estamos dentro de la red del servidor, no hace falta crear reglas de iptables ni enrutamiento.
Así queda la foto:
Cualquier duda preguntad!
Salu2!