Configurar una VPN con OpenVPN (servidor y cliente)

icon_vpnAl precio que están los servidores virtuales (VPS) es más práctico contar con tu propio servidor de VPN que contratar los servicios de una VPN.  Hay dos motivos principales, uno es que las IPs de los servicios de VPN podrían ser traceadas por los servicios de streaming, el otro es que cuando utilizamos un servicio, estamos compartiendo el ancho de banda con mucahos otros usuarios, lo cual repercute en la calidad del servicio.

Una vez tenemos contratado el VPS con la distribución de Linux que prefiráis (yo he elegido CentOS 6), procedemos a instalar el servidor OpenVPN:

  1. Desde el panel de control de tu VPS, comprueba que tienes activado TUN/TAP.
  2. Descarga OpenVPN para tu distribución aquí e instálalo. (Puedes obtener el enlace con el botón derecho y descargarlo en tu VPS con wget, para CentOS 6 sería):
    [server] # wget http://swupdate.openvpn.org/as/openvpn-as-2.1.4-CentOS6.x86_64.rpm
    [server] # rpm -i openvpn-as-2.1.4-CentOS6.x86_64.rpm
  3. Pon una contraseña al usuario openvpn
    [server] # passwd openvpn
  4. Añadimos el usuario que usaremos para conectarnos a la VPN:
    [server] # useradd vpnuser
    [server] # passwd vpnuser
  5. Comprobamos que el servicio de VPN está escuchando:
    [server] # netstat -nlp | grep openvpn
    tcp 0 0 5.4.12.14:443 0.0.0.0:* LISTEN 835/openvpn-openssl 
    udp 0 0 5.4.12.14:1194 0.0.0.0:* 862/openvpn-openssl
  6. Tenemos dos puertos escuchando, el 1194 en UDP y el 443 en TCP.  Nos aseguramos de que no hay ningún firewall bloqueando el acceso a esos puertos y que el nombre asignado se resuelve correctamente (si no tenemos que usar la IP), para eso, desde nuestro cliente:
  7. [client] $ host vpn.ejemplo.com
    vpn.ejemplo.com has address 5.4.12.14
    [client] $ nc -vzu vpn.ejemplo.com 1194
    Connection to vpn.ejemplo.com 1194 port [udp/openvpn] succeeded!
    [client] $ nc -vz vpn.ejemplo.com 443
    Connection to vpn.ejemplo.com 443 port [tcp/https] succeeded!
    [client] $ nc -vz vpn.ejemplo.com 943
    Connection to vpn.ejemplo.com 943 port [tcp/*] succeeded!
  8. Ahora ya podemos conectarnos al panel de control desde un navegador de nuestro cliente:  https://vpn.ejemplo.com:943/admin

    openvpn1

  9. Añade tu usuario ‘vpnuser’

    openvpn2

  10. Pulsa el botón “Update Running Server” para aplicar los cambios.
  11. Accede para descargar el fichero de configuración que necesitas para conectarte desde el cliente:   https://vpn.ejemplo.com:943/  Valídate con el usuario ‘vpnuser’.openvpn3.png
  12. Pulsa en Yourself (autologin profile), eso te descargará un fichero client.ovpn con la configuración y los certificados que necesitas.
  13. Con esto ya podrías conectarte desde la línea de comandos, en mi caso, el cliente es un debian/ubuntu, así que:
    [client] $ sudo apt-get install openvpn
    [client] $ sudo openvpn --config ~/Downloads/client.ovpn

 

Conexión desde el Network Manager (GUI)

La parte complicada viene si queremos conectarnos desde el Network Manager, ya que la importación del fichero client.ovpn no funciona correctamente.  Para esto yo he tenido que hacer los siguientes pasos:

  1. Verifico que tengo todos los paquetes instalados:
    [client] $ sudo apt-get install network-manager-openvpn-gnome
    [client] $ sudo apt-get install network-manager-openvpn 
    [client] $ sudo apt-get install network-manager-vpnc
    [client] $ sudo apt-get install easy-rsa
    [client] $ sudo /etc/init.d/networking restart
  2. Debemos extraer los certificados del fichero client.ovpn, para ello editamos el fichero y copiamos pegamos en otros ficheros.
    Todo lo que está entre <ca> y </ca> lo guardamos en un fichero ca.crt
    Todo lo que está entre <cert> y </cert> en client.crt
    Entre <key> y </key> en client.key
    Y entre <tls-auth> y </tls-auth> en ta.key
  3. Ahora ya podemos crear una nueva VPN desde el Network Manager del tipo OpenVPN

    openvpn4.png

  4. Estas son las opciones de configuración necesarias:
    Connection name: OpenVPN
    VPN/Authentication type: Password with Certificates (TLS)
    VPN/User: vpnuser
    VPN/Password: ***********
    VPN/User Certificate: client.crt
    VPN/CA Certificate: ca.crt
    VPN/Private Key: client.key
    Advanced/General/Use custom gateway port: 443
    Advanced/General/Use LZO data compression: ON
    Advanced/General/Use a TCP connection: ON
    Advanced/TLS Authentication/Use Additional Authentication: ON
    Advanced/TLS Authentication/Key File: ta.key
    Advanced/TLS Authentication/Key direction: 1
  5. Ya podemos conectarnos a la VPN desde el Network Manager.  Esta conexión también puede ser invocada desde la línea de comandos y no requiere sudo, ya que el Network Manager ya tiene los privilegios necesarios:
    [client] $ nmcli con up id OpenVPN

openvpn5

Anuncios

0 Responses to “Configurar una VPN con OpenVPN (servidor y cliente)”



  1. Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




La Máquina Diferencial en Twitter

Add to Technorati Favorites
Creative Commons License
Esta obra está bajo una licencia de Creative Commons

Archivos

Wikio – Top Blogs – Linux

Introduce tu dirección de email para suscribirte al blog y recibir notificaciones de nuevos posts en tu email.

Únete a otros 394 seguidores


A %d blogueros les gusta esto: