Túneles VPN con OpenVPN
Por David Castañón, @the_preack
Las conexiones VPN son un medio para enlazar dos puntos remotos entre sí, como principal característica se tiene que el flujo de datos va de forma cifrada. Existen diversos medios para crear tuneles VPN, software privativo bastante costosos, hardware especializado, etc.
En este caso vamos a hablar sobre OpenVPN, un Software Open Source bastante potente y con muchas funcionalidades.
Aunque OpenVPN esta disponible para GNU/Linux y Windows, nos enfocaremos al primero, todo esto en un Centos 6.3 como servidor. Open VPN no está disponible en los repositorios por default de Centos, por lo que se debe de instalar los repositorios de rpmforge:
Cómo root se ejecuta:
rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
yum install openvpn
Esto instalará OpenVPN con sus dependencias necesarias.
Nos cambiamos a la ruta /etc/openvpn
Primero hay que crear un archivo llave, el cual tanto el servidor como el cliente deben de tener y se usa para la autentificación de pares.
Creamos la llave:
/usr/sbin/openvpn –genkey –secret tallerweb_openvpn.key
Una vez que tengamos la llave hay que crear el archivo de configuración del servidor.
vim tallwerweb_openvpn.conf
float
dev tun
proto udp
comp-lzo
port 1194
ifconfig 10.8.0.1 10.8.0.2
route 10.8.0.0/24 255.255.255.0 10.8.0.1
cipher AES-128-CBC
persist-tun
persist-key
log /var/log/openvpn.log
secret tallerweb_openvpn.key
verb 4
mute 10
float: Indica que los clientes se conectarán desde una IP no fija.
dev tun: La interfaz de red que creará OpenVPN.
proto udp: Se utilizarán paquetes tipo UDP
comp-lzo: Tipo de compresión LZO
port 1194: El puerto en el que se establecerá el tunel.
ifconfig 10.8.0.2 10.8.0.2: La asignación de IP’s, la primera corresponde al servidor y la segunda al cliente.
route 10.8.0.0/24 255.255.255.0 10.8.0.1: Estableceremos la ruta para las direcciones del segmento 10.8.0.0 (tomará como salida la interfaz con la dirección 10.8.0.1).
cipher AES-128-CBC: El tipo de cifrado, AES de 128 bits
persist-tun: La interfaz será persistente.
persist-key: La llave será persistente.
log /var/log/openvpn.log: La ruta y el archivo donde se guardarán los logs.
secret tallerweb_openvpn.key: La ruta y nombre de la llave, si están al mismo nivel se omite ruta.
verb 4: Nivel de información que se grabará en el archivo log.
mute 10: Graba a lo mas 10 mensajes de la misma categoría en el log.
Con esto podemos iniciar el servicio.
service openvpn start
Nos debe de salir [ OK ]
Esto quiere decir que el servidor está arriba y esperando conexiones de clientes. Podemos verificar que la interfaz tun está arriba.
La instalación del lado del cliente es exactamente igual, el archivo llave debe ser el mismo que se creó anteriormente lo puedes descargar de tu servidor con un SCP.
Configurando del lado del cliente:
remote xxx.xxx.xxx.xxx
port 1194
dev tun
comp-lzo
ifconfig 10.8.0.2 10.8.0.1
route 10.8.0.0/24 255.255.255.0 10.8.0.2
secret eltallerweb_openvpn.key
cipher AES-128-CBC
persist-tun
persist-key
verb 4
mute 10
log /var/log/openvpn.log
Exactamente lo mismo, sólo cambia lo siguiente:
remote xxx.xxx.xxx.xxx: la direccion ip del servidor, donde xxx.xxx.xxx.xxx es la ip destino
ifconfig 10.8.0.2 10.8.0.1: las IP’s están en orden inverso con respecto a la configuración del servidor, ya que el cliente tomará la IP 10.8.0.2 y el remoto es 10.8.0.1
Iniciamos el servicio:
service openvpn start
y comprobamos que todo funcione:
Como se puede observar el servidor nos responde el ping.
Generalidades:
- Debes de abrir el puerto que vayas a usar en iptables.
- Si deseas que el servicio arranque al inicio del sistema deberás ejecutar chkconfig openvpn on.
- Estos túneles te permiten realizar conexiones lan to lan o lan to road warrior.
- OpenVPN tiene configuraciones más avanzadas, se pueden encontrar en la red sin ningún problema.
- Ésta configuración te permite opciones avanzadas, como: ruteo, forwarding, dns, nat, etc.
Enlaces:
http://www.pello.info/filez/firewall/iptables.html
(Gracias por el conocimiento que otros me han aportado)