Si realizamos una búsqueda rápida en Google, usando las claves

Ubuntu + VPN + howto
Encontraremos una infinidad de respuesta :) Pero, además de encontrar muchas respuestas, veremos también que hay mucha diversidad entre las mismas... Algunos proponen "recetas" cortas y "mágicas", otros ofrecen extensas explicaciones y usan herramientas y artilugios medio esotéricos... Lo cierto es que, entre tanta información disponible, no es fácil encontrar alguna referencia confiable y que se sepa funciona bien en un escenario similar al que uno dispone para armar la VPN.

Con este panorama previo, antes de comenzar a trabajar en el armado de la VPN consulté a mi Comunidad de Confianza: la Lista Ubuntu-ar!! Desde allí obtuve la información necesaria que me permitió realizar de manera exitosa la actividad prevista ;)
Final de la introducción. Vamos a los hechos. Mediante una VPN, pretendo conectar un servidor (que aloja un website y varios servicios más) con alguna de las PCs que tengo en mi casa.
El servidor al que me quiero conectar forma parte de una LAN pequeña, la cual sale a Internet usando un router sencillo, con una IP pública fija. Las PCs clientes forman parte de otra LAN (la LAN de mi casa ;)) y salen a Internet por un router, el cual posee una IP privada variable (dhcp), entregada por el ISP que tengo contratado en mi casa.
La herramienta de software usada es OpenVPN, ya que es libre, moderna, mantenida en la actualidad y está en los repositorios de Ubuntu ;)
En el servidor tengo corriendo Ubuntu Server 8.04 de 32 bits y en los clientes tengo, en uno, Ubuntu UNR 9.10 de 32 bits ,y en el otro, Ubuntu Desktop 8.04 de 64 bits.
El primer paso, idéntico en todas las PCs, es instalar la herramienta:
$ sudo aptitude install openvpn
Luego pasamos a la configuración. Para esta etapa, me he guiado por la documentación oficial de OpenVPN; si bien no es específica de Ubuntu, no he tenido problemas con ella. El inicio del proceso está aquí.
Una vez levantada y establecida la VPN, no se interrumpe el actual servicio de conexión a Internet (el que sea que se tenga en ese momento), sino que se establece una nueva ruta para el tráfico, desviándose a la VPN las solicitudes dirigidas al servidor remoto (usando la IP privada que se colocó en la configuración del servidor)
En mi caso particular, usando la VPN, puedo ingresar al servidor remoto por ssh, puedo trabajar sobre el servidor web que allí corre y algunas otras tareas más, propias de las que se realizan en una LAN, pero físicamente, NO estoy en la LAN de ese servidor ;)
Una maravilla OpenVPN!! Para este tipo de escenario, muy recomendable ;)
Créditos: Esto no podría haber llegado a buen puerto si no hubiese sido por los aportes y sugerencias de la Comunidad Ubuntu-ar Muchas gracias!!
Con este panorama previo, antes de comenzar a trabajar en el armado de la VPN consulté a mi Comunidad de Confianza: la Lista Ubuntu-ar!! Desde allí obtuve la información necesaria que me permitió realizar de manera exitosa la actividad prevista ;)
Final de la introducción. Vamos a los hechos. Mediante una VPN, pretendo conectar un servidor (que aloja un website y varios servicios más) con alguna de las PCs que tengo en mi casa.
El servidor al que me quiero conectar forma parte de una LAN pequeña, la cual sale a Internet usando un router sencillo, con una IP pública fija. Las PCs clientes forman parte de otra LAN (la LAN de mi casa ;)) y salen a Internet por un router, el cual posee una IP privada variable (dhcp), entregada por el ISP que tengo contratado en mi casa.
La herramienta de software usada es OpenVPN, ya que es libre, moderna, mantenida en la actualidad y está en los repositorios de Ubuntu ;)
En el servidor tengo corriendo Ubuntu Server 8.04 de 32 bits y en los clientes tengo, en uno, Ubuntu UNR 9.10 de 32 bits ,y en el otro, Ubuntu Desktop 8.04 de 64 bits.
El primer paso, idéntico en todas las PCs, es instalar la herramienta:
$ sudo aptitude install openvpn
Luego pasamos a la configuración. Para esta etapa, me he guiado por la documentación oficial de OpenVPN; si bien no es específica de Ubuntu, no he tenido problemas con ella. El inicio del proceso está aquí.
- Primera parte: configuración del lado del servidor (localmente o por ssh):
- Copiar los archivos de configuración a la ubicación de uso:
$ sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn - Entrar a ese directorio y correr los siguientes comandos:
$ sudo . ./vars
$ sudo ./clean-all
$ sudo ./build-ca
(ojo con el primer comando: es "punto", "espacio", "punto", "barra inclinada",... - Crear un certificado y una clave privada para el servidor (server):
$ sudo ./build-key-server server - Luego, se crean tantos certificados y claves como clientes se van a conectar a ese servidor:
$ sudo ./build-key cliente1
$ sudo ./build-key cliente2
Aquí, las palabras "cliente1" y "cliente2" son los nombres con los que se identificará cada cliente, dentro de la infraestructura de la VPN. Se puede usar cualquier palabra: netbook, gatagris, compu58, etc... - A continuación, se generan los parámetros Diffie Hellman:
$ sudo ./build-dh
(este paso demora un rato...) - Final de la creación de claves y certificados. En este momento, en el servidor tenemos un nuevo directorio (/etc/openvpn/keys) que contiene todas las claves y certificados generados. Este directorio es el que hay que compartir entre el servidor y los clientes desde los cuales queremos ingresar; para ser coherentes con los conceptos de seguridad, este directorio debe ser pasado desde el servidor hacia los clientes usando un medio seguro: un pendrive, un CD-R, una sesión ssh... No tiene sentido enviarlo como adjunto por email, no porque no se pueda, sino porque ese medio es extremadamente inseguro...
- Puesta a punto del archivo de configuración en el servidor. Toda la configuración de esta herramienta se realiza editando un único archivo: server.conf
Se usará el archivo de ejemplo que provee la herramienta, aquí:
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
Se descomprime ese archivo y se guarda en /etc/openvpn
Se edita y se colocan en él los datos específicos de nuestro servidor: globalmente, los parámetros por default están correctos; en mi caso, sólo tuve que colocar la ruta absoluta hacia ca, cert, key y dh y no mucho más (el resto quedó como estaba...) - Fin de la configuración, del lado del server. Además, en mi caso particular, tuve que abrir el puerto de OpneVPN en el firewall del servidor y forwardear el mismo en el router.
El servicio se inicia con el siguiente comando:
$ sudo openvpn --config /etc/openvpn/server.conf (suponiendo que la ruta real al archivo de configuración es esa)
Listo. OpenVPN está corriendo en el servidor, esparando conexiones :) - Segunda parte: clientes:
- Para cada cliente, el proceso es muy simple: se copia el directorio /etc/openvpn/keys que se trajo del servidor en la misma ubicación, pero en la PC cliente. Luego se copia a /etc/openvpn el archivo de configuración client.conf que está aquí:
/usr/share/doc/openvpn/examples/sample-config-files/client.conf
Hay que editar ese archivo; allí hay que colocar los mismos valores de protocolo, puerto y demás que se usaron en el servidor (si dejamos los valores por defecto esto ya se cumple) y agregar los datos específicos del servidor en la línea "remote": la dirección IP pública del servidor (o un FQDN válido) y el puerto en el que éste escucha, las rutas correctas a ca, cert y key y no mucho más... - Configuración del cliente terminada. Arrancamos el servicio con
$ sudo openvpn --config /etc/openvpn/client.conf (la ruta al archivo de configuración debe ser la correcta) - Si no hubo errores, luego de unos instantes (en que se realiza la conexión en sí misma), tendremos una nueva interfaz lógica (tun0), con una IP privada, que se conecta p-t-p hacia el servidor, y tendremos también modificada la tabla de ruteo del kernel, usando esa nueva interfaz para el tráfico con destino a la red privada que se acaba de levantar.
Una vez levantada y establecida la VPN, no se interrumpe el actual servicio de conexión a Internet (el que sea que se tenga en ese momento), sino que se establece una nueva ruta para el tráfico, desviándose a la VPN las solicitudes dirigidas al servidor remoto (usando la IP privada que se colocó en la configuración del servidor)
En mi caso particular, usando la VPN, puedo ingresar al servidor remoto por ssh, puedo trabajar sobre el servidor web que allí corre y algunas otras tareas más, propias de las que se realizan en una LAN, pero físicamente, NO estoy en la LAN de ese servidor ;)
Una maravilla OpenVPN!! Para este tipo de escenario, muy recomendable ;)
Créditos: Esto no podría haber llegado a buen puerto si no hubiese sido por los aportes y sugerencias de la Comunidad Ubuntu-ar Muchas gracias!!

No hay comentarios.:
Publicar un comentario