Instala Tu Propio Servidor VPN con OpenVPN en Ubuntu 10.04 Server

Instala Tu Propio Servidor VPN con OpenVPN en Ubuntu 10.04 Server

OpenVPN Logo

ATENCIÓN

COMO VEN ESTE POST TIENE MAS DE 1 AÑO, ESTA MUY DESACTUALIZADO, LO ACTUALIZARE NI BIEN PUEDA, MIENTRAS NO PODRE RESPONDER LOS COMENTARIOS.

Luego de un tiempo sin postear les traigo esta guía de como crear su propia VPN en Ubuntu Server,ya sea para conectarse a la pc de casa o para usar internet de forma segura en redes wifi inseguras.

OpenVPN es un Software que hace de cliente y servidor según como lo configuremos, aclaro que hay 2 versiones de este:
* OpenVPN Community Software: Es la versión que utilizaremos y es 100% Open Source
* OpenVPN Access Server: Es la versión de pago, puede usar gratis solo hasta 2 usuarios, los usuarios adicionales son muy económicos, además tiene extras como panel de administración web, es súper fácil de configurar y mas.

Introducción

OpenVPN, es un producto de software creado por James Yonan en el año 2001 y que ha estado siendo mejorado desde entonces.

Ninguna otra solución ofrece una mezcla semejante de seguridad a nivel empresarial, seguridad, facilidad de uso y riqueza de características.

Es una solución multiplataforma que ha simplificado mucho la configuración de VPN’s dejando atrás los tiempos de otras soluciones difíciles de configurar como IPsec y haciéndola más accesible para gente inexperta en este tipo de tecnología.

Supongamos que necesitamos comunicar diferentes sucursales de una organización. A continuación veremos algunas soluciones que se han ofrecido como respuesta a este tipo de necesidades.

En el pasado las comunicaciones se realizaban por correo, teléfono o fax. Hoy en día hay factores que hacen necesaria la implementación de soluciones más sofisticadas de conectividad entre las oficinas de las organizaciones a lo largo del mundo.

Dichos factores son:

* La aceleración de los procesos de negocios y su consecuente aumento en la necesidad de intercambio flexible y rápido de información.
* Muchas organizaciones tienen varias sucursales en diferentes ubicaciones así como también tele trabajadores remotos desde sus casas, quienes necesitan intercambiar información sin ninguna demora, como si estuvieran físicamente juntos.
* La necesidad de las redes de computación de cumplir altos estándares de seguridad que aseguren la autenticidad, integridad y disponibilidad.

Fuente: Wikipedia

El Servidor:

Esta guía es para Ubuntu 10.04 Server, imagino que funciona en otras versiones y distros, tenemos un ubuntu server ya instalado y funcionando.
Instalamos OpenVPN y también OpenSSL, ya que la seguridad se basa en ssl.

sudo apt-get -y install openvpn
sudo apt-get -y install openssl

Configuramos el Demonio de OpenVPN para que No Auto Inicie con el Sistema
Comentamos todo agregando # al comienzo de cada linea.

sudo nano /etc/default/openvpn

tambien eliminar el script de inicio, para evitar que no inicie si configurar

sudo update-rc.d -f /etc/init.d/openvpn remove

Ahora Creamos el Archivo openvpn.conf en /etc/openvpn/

sudo nano /etc/openvpn/server.conf

y colocamos esta configuración

dev tun
proto tcp
port 1194
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/servidor.crt
key /etc/openvpn/keys/servidor.key
dh /etc/openvpn/keys/dh2048.pem
user nobody
group nogroup
server 10.6.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/clients.txt
status /etc/openvpn/status.txt
persist-key
persist-tun
push "redirect-gateway def1"
push "route 192.168.0.0 255.255.255.0"
keepalive 10 120
verb 3
comp-lzo
max-clients 3

como verán se puede personalizar, este es un ejemplo que fue probado

si no quieren usar la vpn para internet seguro, osea no navegar usan internet desde la vpn, quitar la linea «redirect-gateway».

Otros datos que pueden modificar:
* ca, cert, key y dh = son la entidad, el certificados, la llave y la Diffie Hellman del servidor, mas adelante los crearemos.
* server 10.6.0.0 255.255.255.0 = es el rango de ip que usara la vpn, usen otro pero, no usar el mismo que la red real.
* ifconfig-pool-persist ipp.txt = guarda a quien se le asigno cada ip en la vpn
* proto y port = protocolo y puerto, se puede usar tcp y utp, en utp no me dio buenos resultados, el puerto es pueden cambiarlo.
* duplicate-cn = permite que se use el mismo certificado y llave en varios clientes al mismo tiempo, recomiendo no activarlo.
* up /etc/openvpn/openvpn.up = es un script que carga openvpn al iniciar, se usa para el ROUTING y FORWARDING, mas adelante lo creamos.
* client-to-client = es para evitar que los usuario de la vpn se vean entre si, según el caso es útil.
* comp-lzo = compresión, comprime todo el trafico de la vpn.
* verb 3 = aumenta o disminuye los detalles de error en el server.
* max-clients 30 = cantidad máxima de usuarios conectados simultáneamente al servidor, se puede aumentar o disminuir.
* push route = permite ver o estar en la red detras del vpn server, ojo no activar client-to-client.
* push «redirect = oblica al cliente a usar la vpn como gateway.

ahora creamos el script para que configure e inicie el servidor de vpn.

sudo nano /etc/init.d/vpnserver

y pegamos este codigo, cambiar el rango de ip según la configuración de paso anterior

#!/bin/sh
#
vpnserver_start()
{
 echo "VPN Server [OK]"
 echo 1 > /proc/sys/net/ipv4/ip_forward
 /etc/init.d/networking restart  > /dev/null
 /sbin/iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o eth0 -j MASQUERADE
 /usr/sbin/openvpn --config /etc/openvpn/server.conf 2>> /etc/openvpn/error.txt 1>> /etc/openvpn/normal.txt &
}
vpnserver_stop()
{
 echo "VPN Server [NO]"
 /usr/bin/killall "openvpn"
 iptables -F
 iptables -X
 /etc/init.d/networking restart > /dev/null
}
vpnserver_restart()
{
  vpnserver_stop
  sleep 1
  vpnserver_start
}
#
case "$1" in
 'start')
   vpnserver_start
  ;;
 'stop')
   vpnserver_stop
  ;;

 'restart')
   vpnserver_restart
  ;;
 *)
  vpnserver_start
 ;;
esac

ahora le asignamos permisos de ejecutable

sudo chmod +x /etc/init.d/vpnserver

tambien y que configurar para que auto inicie con el sistema

sudo update-rc.d vpnserver defaults

bueno ya configuramos OpenVPN, ahora tenemos que activar el modulo TUN en el kernel, con estas lineas, lo cargamos y listo

sudo modprobe tun
sudo echo "tun" >> /etc/modules

como verán no fue tan difícil la configuración, pero ahora viene lo mas lento:

* Crear Diffie Hellman de 2048bits
* Crear la Entidad emisora de certificados.
* Crear los Certificados y llaves del servidor.
* Crear los certificados y llaves de cada usuario.

Copiamos los ejemplo de easy-rsa para crear la entidad, los certificados, llaves y encriptación, que usar OpenVPN,

sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/

ahora hay que entrar en la carpeta donde están las utilidades que copiamos y crear la carpeta keys

sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0
sudo mkdir keys

solo nos queda editar el archivo vars que esta en /etc/openvpn/easy-rsa/2.0

sudo nano /etc/openvpn/easy-rsa/2.0/vars

y modificamos estos valores

export KEY_DIR="$EASY_RSA/keys"

por

export KEY_DIR="/etc/openvpn/easy-rsa/2.0/keys"

es para genere si o si en /etc/openvpn/easy-rsa/2.0/keys
seguimos, también modificamos los parámetros para Diffie Hellman de 2048bits

export KEY_SIZE=1024

por

export KEY_SIZE=2048

solo nos faltan los datos para la entidad emisora

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

modifica cada valor por los de tu país, provincia, ciudad, empresa y correo
un ejemplo

export KEY_COUNTRY="AR"
export KEY_PROVINCE="SF"
export KEY_CITY="Armstrong"
export KEY_ORG="LAGA-Systems"
export KEY_EMAIL="info@lagasystems.com.ar"

Como ven AR = Argentina, SF = Santa Fe (mi provincia) y los demas se entienden.
bueno ahora estamos preparados para comenzar, seguir estos pasos al pie de la letra, porque un error y se arruina todo.

ejecutamos

source ./vars

y nos pide que limpiemos por si hay entidades, certificados y llaves, lo hacemos con gusto

./clean-all

ahora generamos la seguridad Diffie Hellman de 2048bits

./build-dh

ahora generamos la entidad emisora de certificados les pedirá los mismos datos que en el archivos vars recomiendo completar cada uno, aunque ya están, no importa

./build-ca

ya estamos para poder generar lo certificados y llaves primero el servidor, cambiar server por el nombre que gusten,les pedirá los mismos datos que en el archivos vars recomiendo completar cada uno, aunque ya están, no importa.

./build-key-server servidor

ya tenemos los certificados y llaves de servidor ahora el cliente, cambiar cliente por el nombre que gusten,
les pedirá los mismos datos que en el archivos vars recomiendo completar cada uno, aunque ya están, no importa.

./build-key cliente

este paso se debe repetir para cada cliente o usuario que quiere conectar a la vpn ya tenemos todo para funcionar, no, falta copiar los archivos que generamos al lugar que configuramos en openvpn.conf
ya que copiar la carpeta keys a /etc/openvpn/

sudo cp -R /etc/openvpn/easy-rsa/2.0/keys /etc/openvpn/

ahora comprobamos que este todo en su lugar, entramos en la carpeta /etc/openvpn/keys

cd /etc/openvpn/keys

y con un ls miramos si están los archivos
ahora generamos un archivo mas, este lo genera openvpn

sudo openvpn --genkey --secret ta.key

Solo falta copiar los archivos ca.crt, cliente.crt, cliente.key, si creaste mas clientes copia los crt y key de cada un pendrive u otro medio no usar email para enviarlos, es como darle la llave de tu casa a un desconocido.

Listo ya esta todo en el servidor, ahora lo iniciamos para probar que todo esta correcto

sudo /etc/init.d/vpnserver start

Si no hay errores ya tenemos nuestra vpn funcionando, solo falta el cliente.

El Cliente:

Esta guía es para Ubuntu 10.04 Desktop, imagino que funciona en otras versiones y distros, tenemos un ubuntu ya instalado y funcionando.
Instalamos OpenVPN y también OpenSSL, ya que la seguridad se basa en ssl
y como usaremos el Network Manager de Ubuntu hay que instalar el plugins para OpenVPN

sudo apt-get -y install openvpn
sudo apt-get -y install openssl
sudo aptitude -y install network-manager-openvpn

Ahora ya estamos en condiciones de configurar nuestro cliente un ejemplo de configuración:

Con un editor de texto, gedit puede ser, pegan este código

client
dev tun
proto tcp
remote IP-DEL-SERVIDOR PUERTO
resolv-retry infinite
nobind
#user nobody
#group nobody
persist-key
persist-tun
ca ca.crt
cert cliente.crt
key cliente.key
comp-lzo
tun-mtu 1500
keepalive 10 120
verb 4

Modifican los datos, IP-DEL-SERVIDOR este es el ip publico o de internet del servidor y PUERTO por el que asignaron en el servidor, los archivos ca.crt, cliente.crt y cliente.key son los que generamos y copiamos antes en un pendrive o en lo que sea.

Si Tiene IP Publico Dinámico, les recomiendo usar algún servicio de DDNS (DyDNS, NO-IP, CDMon), y no se olvide de abrir y redirigir el puerto 1194 o el que eligieron para el servidor.

Guardan el el código con el nombre que quieran pero con extensión .conf y en la misma carpeta de los archivos ca.crt, cliente.crt y cliente.key

Ahora abre el Network Manager de Ubuntu y en la pestaña VPN hay un botón Importar, buscan el archivo .conf que guardamos antes y ya esta todo.

espero que les ayude, ya que para hacer funcionar openvpn me recorrí todas la guías y manuales que encontré.

Gracias por sus Comentarios, Si hay algún ERROR es producto de su imaginación, jajajaj


86 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Emilio dijo

    Muy buena guía! Siempre quise instalar una VPN pero nunca me salía. Gracias!

    1.    Luciano Lagassa dijo

      gracias, te cuento que tambien tenia ese problema con la vpn’s, pero por trabajo me puse investigar.
      por si alguno le intersa hay otro metodo para montar una vpn, super sencillo con ssh.

      1.    Valo dijo

        Me interesa ese metodo!!!

      2.    oliver dijo

        podrias pasar el dato XD

  2.   george dijo

    Hi,

    If you are looking for a VPN, you can find a VPN Providers List on this website
    http://www.start-vpn.com/

  3.   over dijo

    woww, voy aprobar todos estos paso es justo lo q handaba buscando, bueno espero q me salga todo esto y pues aver si peudes comentar tambien elproces por ssh q esaria tambien genial y si tienes mas documentacion acerca de opsvpn para seguirle moviendo a esto, te comento despues q es lo q ocurio y gracias por tu aporte

    1.    Luciano Lagassa dijo

      hola, perfecto, tengo unas modificaciones que hacer, ya actualise el post, hay cambios y mejoras.

  4.   koke dijo

    lo intente pero no me jenera las llaves o no se si hace falta algún paso en el post

    me interesa mucho este tema le ruego me conteste pronto uso ubuntu 10.04 (soy nuevo en esto)

    1.    Luciano Lagassa dijo

      hola, seguiste bien los pasos, porque si te saltas alguno o lo hacer mal no se generan los certificados y las llaves, fijate si editaste bien el archivo vars y cuando generes respeta los valores, no uses carateres extraños y/o asentos o eñes, esto le pasaba a un amigo en otro foro. cualquier cosa me avisas

      hola, ya pudiste hacer algo o seguis sin poder generar los sertificados y llaves, avisame asi te ayudo.

  5.   Juan Martin dijo

    En esta linea

    ./build-key-server servidor

    donde dice que se cambie el nombre del server por el que quiera por ejemplo:

    ./build-key-server pepito

    (al menos a mi) me produce un error que se refleja en el archivo normal.txt donde dice que no se encontro llave servidor y tampoco me levanta el tun.
    vuelvo y creo la llave

    ./build-key-server servidor

    con ese nombre y anda joya.
    Lo he probado en dos servidores diferentes
    Al alguien mas le paso?

    1.    Luciano Lagassa dijo

      hola, si cambias el nombre al general el certificado tenes que cambialor en el archivos de configuración, porque els ervidor no va a encontrar el archivo si no le espesificas como se llama.

      1.    Juan Martin dijo

        AAhh, listo, muchas gracias, apenas pueda lo pruebo.

  6.   Joni dijo

    Hola para configurar el cliente en windows como o donde copio los certificados?

    1.    Joni dijo

      Solucionado;)
      Descargué el cliente incorrecto. De la web openvpn.net el cliente OpenVPN Community Software Windows Client, ya explica como hacerlo en la instalación en un README.
      Gracias por el tutorial.
      Saludos

  7.   Mariana dijo

    Hola, recien estoy empezando con esto del linux y tengo que montar una VPN para una red de area local, y he seguido tu tutorial y he llegado hasta la parte de la instalacion en el server y el cliente……pero despues de eso, no se como hacer las pruebas para ver si hay la conexion, si es que lo he implementado bien.

  8.   Jaime dijo

    Hola Gracias por la información
    Tengo un servidor con un openvpn funcionando, el servidor es linux-fedora, tengo también una instalación en Windows 7 funcionando, es decir tengo comunicación de linux-fedora a Windows 7.
    Mi problema ahorita es que quiero instalar openvpn como cliente en ubuntu 10.04 lucid y no he podido, he seguido la información que proporcionas usando el manejador gráfico Network-connections, pero no parece responder, ¿Tienes alguna idea?
    Gracias de antemano
    Jaime

  9.   Jesus Gascon Gomez dijo

    Hola,

    Tengo un problema al intentar conectarme desde el cliente Linux. No se logra conectar, dándome este error en el syslog:

    Feb 3 21:50:06 jesus NetworkManager[1298]: Starting VPN service ‘org.freedesktop.NetworkManager.openvpn’…
    Feb 3 21:50:06 jesus NetworkManager[1298]: VPN service ‘org.freedesktop.NetworkManager.openvpn’ started (org.freedesktop.NetworkManager.openvpn), PID 2931
    Feb 3 21:50:06 jesus NetworkManager[1298]: VPN service ‘org.freedesktop.NetworkManager.openvpn’ exited with error: 1
    Feb 3 21:50:06 jesus NetworkManager[1298]: Policy set ‘Auto eth0’ (eth0) as default for IPv4 routing and DNS.
    Feb 3 21:50:11 jesus NetworkManager[1298]: VPN service ‘org.freedesktop.NetworkManager.openvpn’ did not start in time, cancelling connections
    Feb 3 21:50:33 jesus kernel: [ 119.324287] lo: Disabled Privacy Extensions

    He intentado esto pero tampoco funciona:

    http://sergiodeluz.wordpress.com/2010/06/21/openvpn-fallo-porque-no-habia-secretos-vpn-validos-solucion/

    Alguna idea de donde poder mirar?

  10.   Isai dijo

    Hola! he seguido tus instrucciones al pie de la letra hasta ejecutar «source ./vars», como lo indicas me pide hacer el «./clean-all», pero al hacerlo me dice que no puede hacer el rm por permiso denegado ni el mkdir porque ya existe el archivo; sigo adelante y en el «./build-dh» y despues de muchas lineas de . y +, termina con: /etc/openvpn/easy-rsa/2.0/keys/dh2048. pem:Permission denied.

    Y lo mismo para «./build-ca», writing new private key to ‘ca.key’, ca.key: Permission denied.

    Supuse que tendría que hacerlo con privilegios de super usuario, pero en todos los casos me dice que me cerciore que he ejecutado «source ./vars»… estoy atorado.

    Muchas por tu tiempo!

    1.    Isai dijo

      Me responderé a mi mismo, hasta ahora pude continuar haciendo un «chmod 777» a la carpeta 2.0 y parece que ahora si voy a seguir adelante…

  11.   Itziar dijo

    Cómo puedo conocer la IP del servidor para asignarla al cliente VPN? Muchas gracias Luciano por tu ayuda y tu post! 100101001

  12.   gabrielcz dijo

    GRACIAS, GRACIAS, GRACIAS, por fin un tuto que haces «simplemente esto» y FUNCIONA.
    Bien, hasta ahi vamos.. ahora tengo el siguiente problema, que seguramente es por que son gilipollas .. 😉
    explico: He seguido la GUIA perfectamente, he descargado un cliente para MAC de openvpn, y leyendo tu configuracion del cliente, he configurado el mio y ME CONECTÉ.

    te cuento la infraesrtuctura primero.

    servidor: ubuntu 10.4
    eth0= 192.168.1.40
    (el fichero de configuracion de OPENVPN lo he dejado EXACTAMENTE igual que tu sugieres, lo que NO ENTIENDO, es…
    A mi equipo (mac cliente) se le asigno la ip 10.6.0.5 y si hago un ping a 10.6.0.1 LLEGO sin problemas.

    Lo que NO entiendo, es que yo necesito un VPN para acceder a mi LAN de la oficina, y la LAN de la oficina mia es 192.168.1.x (al igual que en mi casa, que también tengo 192.168.1.x)

    Oficina:
    Servidor OPENVPN: 192.168.1.40
    Servidor desarrollo web: 192.168.1.107

    mi pregunta es… que tendría que cambiar para que desde mi casa, me pueda conectar al servidor OPENVPN para que me de una ip de la subred adecuada para poder entrar a mi servvidor de desarrollo web.. ???

    me da, quizá que en el server.cfg de open vpn tengo que reemplazar 10.6.x.x por algo adecuado a 192.168.1.x y cambiar la subred de mi casa, para que SEA OTRA EJEMPLO: 10.0.X.X para que no se peguen entre las 192.168.x.x de mi casa y de la oficina?

    JEJEJEJEJEJ perdona, pero he intentado exponer mi duda de la forma mas entendible posible, pero quiazá por que no sepa bien como preguntarlo, o que, pero lo he releído y madre mia, ni yo me entiendo, pero bueno, a ver que opinas, si me entiendes un poquito y me ayudas. 😉

    Saludos,

    1.    gabrielcz dijo

      Bien, hasta ahi vamos.. ahora tengo el siguiente problema, que seguramente es por que son gilipollas .. 😉

      QUISE PONER QUE SOY, SOY YO GILIPOLLAS 😉 jejejeej NO MAL INTERPRETAR PORFAVOR.

    2.    seres dijo

      Hola.. solucionaste tu impase? a mi em pasa lo mismo y no se como solucionarlo… me colaboras porfis¿¿ Gracias

  13.   gabrielcz dijo

    Hola, estimados,
    Para decirle que navegando un poquito llegue a responderme a mi mismo y ya resolví mi problema, es mas, en está GENIAL guía ya estaban respondiendome ! 🙂

    Lo dicho por todos, la mejor guía de openvpn que he leído, con la que me animé y con la que estoy funcionando perfectamente,
    GRACIAS Y FELICIDADES.

    PD: Algún día se podría ampliar con la interfaz web de conexion y configuración! 🙂

  14.   jorge dijo

    Que tal alguien que pueda orientarme ya que si tengo muchas dudas como dice gabrielcz SOY UN GILIPOLLAS

  15.   Alexander dijo

    Hola Luciano, muchas gracias por el tutorial, Excelente!, parce si le parece bien lo complementa agregando estas lineas:
    1. Reiniciar OpenVPN en ambos equipos, cliente y servidor, para ejecutar los cambios
    pendientes.
    2. Ejecutar ifconfig y route -n en la terminal para comprobar si existe una nueva interfaz,
    tun0, en el cliente y en el servidor.
    3. Comprobar la conexión haciendo ping a las IP de las interfaces tun0, (cliente y
    servidor). Digitas en la terminal: ping 10.8.0.1, si recibes una respuesta como:
    PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
    Entonces felicitaciones, el cliente está conectado al servidor a través de OpenVPN y ya
    puede navegar en forma segura.

    Saludos a todos desde Colombia.

  16.   Alexander dijo

    Hola, en la última parte del tutorial donde se indica que debes crear y editar un archivo con extensión .conf y completar la IP-DEL-SERVIDOR PUERTO, coloque: 192.168.0.0: 1194
    y el archivo lo salve con el nombre: llaveConfiguracionCliente1.conf

    Uso una conexión ADSL para el servicio de internet y la IP que maneja es dinámica.

    Tengo entendido que para conectar un cliente a la VPN se usa el siguiente comando:
    root@usuario ~#openvpn nombrellave.conf, en mi caso sería:
    root@usuario ~# openvpn llaveConfiguracionCliente1.conf

    Después de ejecutar este comando se muestra el siguiente mensaje:
    «Options error: remote: bad protocol associated with host 192.168.0.0: 1194
    Use –help for more information.»

    Puedes por favor orientarme de forma clara como corregir este fallo, gracias.

    1.    ulises dijo

      en la conf del cliente tienes que poner el ip del servidor. Si tu Servidor tiene ip dinamico tendrias que hacerte una cuenta en dyndns o no-ip para trasformar la ip del servidor en un «miservidor.dnsalias.net» cuestion de configurar el cliente con esta ultima direccion.
      Saludos

    2.    Luciano Lagassa dijo

      hola ya te respondio ulises, si tenes ip dinamico tenes que usar algun ddns (DynDNS, NoIP, el que quieras), te comento que hace un mes le cree un servidor vpn para un amigo pero en winbugs y como usaba adsl usamos noip, quedo perfecto, los pasos son los mismo, solo recurden abrir y redirigir el puerto 1194 o el que elijan en el router donde este conectado el servidor, ademas tengan en cuenta que con un adsl mucho no se puede hacer, porque al ser adsl es asincronico osea que tiene mas bajada que subida y un servidor usa ambos pero mas el de subida.

  17.   ulises dijo

    Luciano gracias por este tutorial la verdad uno de los mas claros que he leido. pude conectar cliente1 con servidor y cliente2 con servidor pero cliente1 y cliente2 no se ven. tienes alguna idea? Nuevamente gracias

    1.    Luciano Lagassa dijo

      hola, si este metodo es asi no hay contacto entre clientes, pero se puede modificar para que si se puedan interactuar, por seguridad es mejor que no ya que es una red como cualquier otra y si un individuo o un software intervienen pueden generar grandes daños. gracias

  18.   Alexander dijo

    Gracias caballeros por las respuestas, saludo.

  19.   luis eduardo dijo

    hola mira soy novato en las vpn , como hago para cambiar de direcciones en el adactador tun0
    y de como crear una ip publica en la vpn gracias

    1.    Luciano Lagassa dijo

      hola, la interface «tun» se crea tanto en el servidor como en el cliente, el servidor siempre va a tener la misma ip en tun porque la asigna openvpn, el cliente se puede aser que tengas siempre la misma si en la config del server y del cliente pones «persist-tun» eso asegura que los ips en cada cliente.
      la ip publica la tenes siempre, pero si es dinamica podes usar algun ddns, tipo no-ip, dydns o cdmon, esos servicios te dan un subdominio que apunta a tu ip y con un soft o desde una web le actualizas el ip y listo, claro que esto va solo en el server, y tenes que abrir el puerto en el router.

  20.   federico dijo

    Luciano: muy bueno el tutorial. Una pregunta, por favor, ¿puedes confirmarme que una VPN puede ser montada también desde un router y no instalando este programa en mi servidor ubuntu?. Si es así, que ventajas tiene hacerlo con OpenVPN respecto a que me compre un router con OS (claro esta, mi pregunta va más allá del precio). Me refiero a ventajas de seguridad y otros funcionamientos. Te cuento que quiero instalar una VPN para acceder y levantar multiples escritorios simultaneamente para manejar las aplicaiones locales de mi servidor Ubuntu. Puedes explicarme como hago esto de los escritorios remotos y que relación tiene con la VPN? . Gracias

    1.    Luciano Lagassa dijo

      hola, la verdad yo harme vpn con cliente en routers pero son von ipsec cisco, esto es otra cosa, creo que en alguno de los firmware tipo tomate, openwrt y otros tiene el openvn integrado, yo no lo usaria porque es mas seguro que cada equipo tenga el cliente y asi no le das pn a toda la red y ademas tenes un ip de vpn por cada equipo.

  21.   Marcelo Más dijo

    Hola Luciano excelente tu Tutorial, la verdad que me sirvio muchisimo y me funciono todo hasta que llegue a la parte de importar el archivo .conf en el caso del servidor el archivo «server.conf» que creamos, el problema es que cuando elijo el archivo luego de hacer click en «importar» pongo en aceptar y me lanza un cartel que me dice lo siguiente:
    «No se puede importar la conexión VPN»
    No se pudo leer el archivo «server.conf» o no contiene información de conexión VPN que se pueda reconocer
    Error: unknown error.

    Bueno la cosa es que ya intente con una solución que era buscando el archivo ejemplo en «/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > server.conf» este es el archivo ejemplo que brinda openvpn que es el que tiene el formato correcto, modifique el archivo con la configuración que se muestra en el tutorial pero cuando voy a cargar me da el mismo error, luego probé lo que dice el link que dejo «Jesus Gascon Gomez »
    es decir la solucion que muestra esta pagina «http://sergiodeluz.wordpress.com/2010/06/21/openvpn-fallo-porque-no-habia-secretos-vpn-validos-solucion/»
    pero me sigue pasando lo mismo no se que puede ser! si sabes o alguien me puede dar una mano con esto le estaría infinitamente agradecido ya que necesito establecer una vpn por cuestiones de trabajo muy importantes, desde ya muchas gracias

  22.   Luciano Lagassa dijo

    Hola, esto es para quienes no pueden importar la config en el cliente, si usan ubuntu recuerden instalar el soportee de openvpn en network-manager, de lo contrario no funcionara, esta detallado en el post. Gracias

  23.   wilmar dijo

    gracias la vpn mefuncione al 100%

    seria bueno ver la configuracion para un cliente windos

  24.   Chelo dijo

    Hola Luciano, me aparece lo siguiente en consola cuando voy a activar el «tun»:
    chelo@chelodromo:~$ sudo modprobe tun
    chelo@chelodromo:~$
    chelo@chelodromo:~$ sudo echo «tun» >> /etc/modules
    bash: /etc/modules: Permiso denegado
    hasta acá llego con el tutorial hasta resolver esto no quiero seguir con los pasos siguientes
    a que crees que se deba?
    mi SO es Ubuntu 10.04.2 (LTS) desktop
    desde ya gracias

    1.    Luciano Lagassa dijo

      hola, por lo que veo no te toma el sudo, puede que no tengas permisos para usar sudo, proba de entrar como root (sudo su) y hace los pasos de la guia.
      Si, es algo que todos ya tendrian que saber pero no esta demas,

  25.   seres dijo

    Hola, he seguio los pasos de la guia y se conecta bien, pero no tengo acceso a los equipos locales de la red, osea no hago ping a 192.168.1.1 y no se donde ubicarlo para que tome ese segmento. Otra pregunta? si tengo varias VLAn en la ren como configuro a cual debe conectarse y cual no???…. Agradeceria su respuesta¡¡Gracias

    1.    Luciano Lagassa dijo

      hola, yo aclare que la configuración de esta guia es para una vpn si contacto por la red lan del servidor, para eso hay que cambiar el esquema, lo que si podes es usar ip tables para redirigir puertos a la red lan. yo uso esa opcion, para no exponer la red.

  26.   Chelo dijo

    Ayuda cuando hago del lado del cliente el siguiente comando para corroborar la conexión
    sudo openvpn client.conf

    me sale el siguiente mensaje

    Options error: In [CMD-LINE]:1: Error opening configuration file: client.conf
    Use –help for more information.

    curiosamente e podido conectar bien un cliente con ubuntu de 32 bits pero esto me sucede con clientes que tiene ubuntu de 64 bits, tendra algo que ver? desde ya gracias

  27.   Jorge dijo

    Muy buena guia, muchas gracias me ahorraste horas de documentacion

  28.   Francisco Molinero dijo

    Lo primero gracias por la guía.
    He realizado los pasos varias veces sin que me dieran errores y al final siempre llego al mismo problema. Al intentar conectar la VPN me sale le mensaje:
    La conexión de red «vpn al servidor» ha fallado porque el servicio VPN se interrumpió inesperadamente.
    ¿Me podrías decir qué hago mal?

  29.   hugo dijo

    hola me guie sobre tu manual y me parecio excelente la primera parte me quedo bien pero la segunda que sobre el cliente estoy usan dos servidores la segunda sobre el cliente es modo consola como el aria creo un archivo para cliente y dentro de ese archivo escribo la segunda parte del codigo y como sabre si funcionas que ago gracias

    1.    Luciano Lagassa dijo

      hola, aclara bien donde te trabas y como siempre les digo, sigan los pasos al pie de la letra y si se traban revisen, porque se pueden saltar algun paso y despues no funciona

  30.   Francisco Javier dijo

    Buenas tardes!!
    Simplemente felicitar al autor de este blog, pues, me ha funcionado al 100% en mi nuevo servidor que he comprado.

    Ahora podré conectarme desde iPhone, iPad o cualquier PC !!
    Gracias desde España 🙂

  31.   Francisco Javier dijo

    Mi segundo comentario en la tarde.
    Yo el servidor, lo he instalado bajo ubuntu server 11.04

    Ahora bien, el cliente, lo he instalado en Windows, y simplemente tienes que tener en el archivo conf, la ruta correcta hacia los .key y .crt.

    Solo me surge una duda…. quiero crear para mas clientes ( ./build-key cliente2 ) y… me dice el siguiente mensaje:

    root@ubuntu:/etc/openvpn/easy-rsa/2.0# ./build-key cliente2
    Please edit the vars script to reflect your configuration,
    then source it with «source ./vars».
    Next, to start with a fresh PKI configuration and to delete any
    previous certificates and keys, run «./clean-all».
    Finally, you can run this tool (pkitool) to build certificates/keys.

    ¿es necesario tener que generar de nuevo los ficheros de servidor para generar otro cliente? seria una locura….

    1.    Luciano Lagassa dijo

      hola, para generar mas certificados hay que hacer los mismo pero saltando la parte del servidor, te pongo un ejemplo:
      cd /etc/openvpn/easy-rsa/2.0
      source ./vars
      ./clean-all
      ./build-key cliente
      sudo cp -R /etc/openvpn/easy-rsa/2.0/keys /etc/openvpn/

      es mas yo uso algo similar e incluso tengo un servidor vpn que tiene los certificados creados en otro equipo, asi tengo vpn redundante.

  32.   Iñigo dijo

    Hola a todos, lo primero de todo dar las gracias por este manual. Me he puesto a hacerlo en mi ubuntu server 10.04 pero tengo este error,
    «admin@ks:~$ sudo modprobe tun
    [sudo] password for admin:
    FATAL: Could not load /lib/modules/2.6.38.2-grsec-xxxx-grs-ipv6-64/modules.dep: No such file or directory»

    Me pueden ayudar,

    1.    Francisco Javier dijo

      Buenas Iñigo,

      Yo desde hace 3 dias, lo instalé sobre ubuntu-server 11.04 y NINGUN PROBLEMA. Todo a la primera.¿Porque no pruebas con el 11.04 ?Parece que la 10.04 no tiene el modulo que intenta cargar.

      Al autor del tutorial, tengo una pregunta. ¿Es posible restringir en el servidor para que únicamente pueda conectarse el cliente desde un host en concreto? ( mediante IP o un host dyndns.org por ejemplo )
      Si no es posible, ¿Como configuro para que, independientemente de que el cliente necesite los certificados, cuando conecte le pida en una ventana login (user&password) ? Es posible esto ultimo?

      Gracias.

  33.   Francisco Javier dijo

    Buenas a todos de nuevo 🙂

    Despues de varias semanas conectandome al servidor VPN, he notado que no me dá DNS.

    Me conecto, accedo a los recursos escribiendo la IP privada, pero, automaticamente, dejo de navegar por la web.
    Si hago un ipconfig , me dá IP, GW, pero falta la DNS.
    ¿Podria añadirlo en el fichero de configuracion del demonio openvpn, o bien en la config del cliente?

    Gracias.

  34.   Migue dijo

    Muchísimas gracias por el tuto!!! va genial!!!

    Lo único que no he conseguido es poder navegar sin que pase todo el trafico por el servidor.

    Quiero poner 30 maquinas en la vpn para mover ficheros de forma segura, pero si la navegación (web, mail, etc etc) de los clientes pasa toda por el server creare un cuello de botella e ira lento.

    Como dices en el manual he quitado la linea
    push «redirect-gateway def1»

    Reinicio la vpn y el trafico sigue pasando por el server…

    Muchas gracias de antemano por la ayuda!!!!

    1.    Francisco Javier dijo

      ME encuentro con el mismo problema que tu tienes, he leido foros y webs, pero nada de lo que encuentro me funciona.

      Todo trafico pasa por el servidor VPN.
      Haber si alguien nos ilumina 🙂

      Un saludo

      1.    Migue dijo

        He dado con la solución, muy poco ortodoxa y muy poco profesional. Pero ami me ha resuelto el problema….

        Como también tenia problemas para conectarme usando las redes que vienen con Ubuntu, gogleé sobre gui y openvpn y me encontré con KVpnc (esta en los repositorios) y ahí con cargar el fichero de configuración (no recuerdo como, pero me pareció muy muy fácil) conectó a la primera (aunque el trafico seguía pasando por el túnel)

        Cambiando solamente en settings-configure KVpnc-Network-Routes

        seleccione: Keep default route. en el 2º desplegable

        Espero que te sea útil.

  35.   Roberto dijo

    ola excelente guía pero tengo un problema, hizo todo cual esta, creer el archivo del cliente y lo pegue dentro de la carpeta /etc/openvpn/keys/ donde también pegue los archivos de ca .crt y etc …, bueno luego de importar eso al network manager me sale el siguiente mensaje :

    The VPN conecction ‘usuario’ failed because there were no valid VPN secrets.

    Espero me puedan ayudar. muchas gracias de antemano

  36.   mattias dijo

    hola spero me puedas ayudar sigo todo al pie de la letra pero a la otra de editar esta parte me marca gran error
    root@ubuntu:/etc/openvpn/easy-rsa/2.0# source ./vars
    bash: ./vars: línea 68: EOF inesperado mientras se buscaba un `»‘ coincidente
    bash: ./vars: línea 69: error sintáctico: no se esperaba el final del fichero
    root@ubuntu:/etc/openvpn/easy-rsa/2.0# ./clean-all
    Please source the vars script first (i.e. «source ./vars»)
    Make sure you have edited it to reflect your configuration.

    que puedo hacer

  37.   sesin dijo

    hola no conosco mucho de redes pero deseo ayudar a mi cuñado en cuba el trabaja en una empresa como especialista de redes o algo asi
    lo cierto es que me ha pedido que instalara un proxy en
    mi PC para armar una VPN y conectarse a traves de mi
    no entiendo de esto por favor si me pudieras explicar e iluminarme en cuanto esto te lo agradeceria mucho

    1.    Ubunlog dijo

      sesin no soy el autor del post ni tengo idea del tema, pero entiendo que el tutorial de este post sería el que tienes que seguir para hacer eso que quieres hacer
      Saludos

    2.    Luciano Lagassa dijo

      hola, la verdad para hacer lo que nos cuentas, tienes que poseer conocimientos de informatica y de redes. siguendo la guia al pie de la letra podras crear un servidor y un cliente vpn pero igualmente nose si podran saltarse el bloqueo que tiene dicho pais, espero que si pero no puedo asegurar que puerto podra pasar. muy probable que tengas que usar el puerto 80 para simular una web.

  38.   sesin dijo

    muchas gracias luciano por tu respuesta
    y si me imagino que no sera facil sortear el bloqueo informatico de mi pais pero creo que lo intentare,
    profundizare mas en este mundo de las redes informaticas asi que espera nuevas inquietudes de mi parte,
    por favor espero que tengas paciencia
    una vez mas gracias

    <> Albert Einstein

  39.   sesin dijo

    No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela.
    Albert Einstein

  40.   pablo dijo

    Tengo unas preguntas. La primera. Hace falta utilizar network manager? realmente nunca me gusta. Imagino que debe de haber otras cosas mejores. La otra, En mi caso tengo que usar una cuenta noip. El tema es que en ese mismo servidor ya tengo corriendo un ssh con una cuenta de no ip. Como es la mano ahí, tengo que instalarme de nuevo el mismo programa que usa el no-ip o directamente tengo que sacar otro dns de esos de noip. Y en cuanto a los puertos que usa. Tengo que habilitarlos con un iptable?

  41.   pablo dijo

    ahora entiendo por que no me funciona. En la parte que mencionas

    «»
    * up /etc/openvpn/openvpn.up = es un script que carga openvpn al iniciar, se usa para el ROUTING y FORWARDING, mas adelante lo creamos.
    «»

    No esta. Se ve que me esta faltando eso.

  42.   usua dijo

    no se en que carpeta estan dichos archivos ..ca.crt, cliente.crt y cliente.key ..he seguido los pasos del manual me podrias ayudar con eso ?

  43.   diego Alfredo Morales Morales dijo

    como me conecto desde windows xp al servidor

  44.   Daniel dijo

    MUCHAS Gracias !

  45.   Fabian dijo

    Hola Luciano,
    Muy buen post. instale la vpn y jalo bien. desde un celular hacia mi pc. El problema ahora es que, ya no tengo red en la pc. el modulo eth0 ya dejo de funcinar. creo que el problema fue ocasionado por el script para iniciar la vpn al inicio.
    tendras alguna obseracion al respecto?
    Gracias.

    1.    Fabian dijo

      Luciano, nuevamente, logre arrancar con el comando dhclient eth0 la red. Como ves tengo dhcp en el servidor vpn. En tu script se le puede añadir el dhclient para que vuelva a tomar el eth0? que recomiendas? cada vez que se pare la vpn me va a desconectar el eth0. y lo tendre q arrancar manual….? saludos…

  46.   mga informatica dijo

    Me gustaría saber como conectarme desde un Windows 7 al servidor ubuntu por medio de vpn

  47.   Daniel P Z dijo

    Tengo la misma duda que «mga informatica » , y tambien como ago para q se conecnt 3 amigos mios mas a la misma VPN, pero, desde windows claro, y elegir q dose se intercambien archivos entre ellos, y el otro con otro mas mas no con los dos primeros…

  48.   alex dijo

    consejos antes de elegir una VPN es comparar el proveedor diferente para tomar la decisión correcta (http://lavpn.es ) . Yo sólo puedo aconsejar que utilice esta comparación de precios

  49.   MArcoS dijo

    El mejor VPN que yo conozco es el VPN ninja,y lo pueden descargar desde http://www.vpnninja.com,espero que les sirva!

  50.   Berlina dijo

    Les dejo el website del vpn que utilice cuando vivia en china, es vpn ninja, es el que mejor funciona, http://www.vpnninja.com

  51.   tumacho dijo

    hjp no vale ni mierdas te contradices

  52.   Dpons3 dijo

    me pierdo cuando llogo a esta aprtado me dice que el archiivo no exitse nose que pasa no me funciona 

  53.   tano dijo

    Estimado queria consultarte como puedo poner un segundo pool de direcciones, ya que se me esta terminando el pool de 254 host, y los clientes siguen aumentando.

    Muchas Gracias!!

  54.   Jose dijo

    me perdi en source ./var como lo ejecuto, cuando lo coloco asi tal cual no funciona, sera que antes va un sudo o algo por el estilo

  55.   letty lorenzo dijo

    ola yo tengo errores en este paso
    nano /etc/default/openvpn

    se supone que me debe de salir codigo e, cual debo de comentar pero no me aparece nada

    creo k es por k no se encuentra en la carpeta pero en este caso como le debo de hacer
    🙁

  56.   Martin "Negro" Arreola dijo

    Oye amigo, vengo del futuro y tu post ya no funciona para las versiones posteriores de Ubuntu, ¿alguna solución?, te juro que el error no es imaginario…

  57.   Mario Ochoa dijo

    Hola, estoy en el 2018, aun funciona este tuto?

  58.   Tijeras Gabriel dijo

    Yo igual vengo del futuro, mi estimado Negro Arreola, y ya no funciona para versiones posteriores a linux 10