VPN en servidor Linux y clientes Windows/Linux 2

Tema en 'Manuales' iniciado por janod21, 21 Nov 2014.

  1. janod21

    janod21 Usuario Habitual nvl.3 ★
    132/163

    Registrado:
    9 Ago 2007
    Mensajes:
    7.236
    Me Gusta recibidos:
    305
    [h=2]VPN en servidor Linux y clientes Windows/Linux con OpenVPN + Shorewall 2[/h]


    [​IMG]
    Menú del cliente OpenVPN para efectuar la conexión al servidor VPN


    Cuando intente conectarse al servidor VPN una vez que haya elegido la opción [connect] aparecerá una ventana de notificación en el cual vera los procesos de verificación e intento de conexión al servidor VPN, si todo sale bien, en el icono de notificación del cliente OpenVPN le indicará la correcta conexión y le mostrará el número de IP virtual [tun] que se le fue asignado.
    [​IMG]
    Mensaje de notificación al conectarse al servidor VPN

    [HR][/HR] [h=3]Pruebas de Conexión[/h] Una ves efectuada la conexión al servidor, para asegurarse que estamos dentro del túnel VPN y tenemos conexión al servidor, podemos realizar una búsqueda de dirección IP [Ping], así como también verificar el número IP asignado por el servidor VPN al estar conectarnos en el túnel.
    Para esto utilizaremos el comando [cmd] para hacer llamado al MS-Dos de Windows a través de la aplicación [ejecutar].
    Una ves estando en la consola en modo texto, utilice el comando [ipconfig] para ver que dirección IP se le fue asignado.
    [​IMG]
    Verificación de asignación de dirección IP virtual [tun]


    [​IMG]
    Verificación de conexión de red a través del túnel VPN

    Importante: Deberá desactivar el cortafuego que trae como predeterminado Windows o cual quier otro que este utilizando.


    [HR][/HR] [FONT=Bitstream Vera Sans, sans-serif]Clientes[/FONT] [FONT=Bitstream Vera Sans, sans-serif]Linux[/FONT]
    Para la configuración de clientes Linux con OpenVPN utilizaremos el modo texto [terminal] y el arranque a través de un bash.
    [h=3]Preparativos y configuración[/h] A continuación deberá copiar los siguientes archivos:

    • ca.crt
    • cliente1.crt
    • cliente1.csr
    • cliente1.key
    Estos fueron creados en el directorio /etc/openvpn/easy-rsa/2.0/keys y deberán ser colocados en la máquina cliente dentro del directorio OpenVPN.
    Supongamos que las llaves la tenemos en el directorio /tmp/llaves, debemos copiar estas en el siguiente directorio /etc/openvpn/keys, para esto hay que crearlo antes.


    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]mkdir /etc/openvpn/keys[/FONT][/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]cp -R /tmp/llaves/* /etc/openvpn/keys/[/FONT][/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 100%"] cd /etc/openvpn/
    [/TD]
    [/TR]
    [/TABLE]
    A continuación se creará un archivo de configuración cliente para el OpenVPN dentro del directorio /etc/openvpn/ con el nombre de cliente1-udp-1194.ovpn.
    Tendrá la siguiente configuración:


    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"]
    client
    dev tun
    proto udp
    remote dominio-o-ip.del.servidor.vpn 1194
    float
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    #------ SECCION DE LLAVES --------
    ca ca.crt
    cert cliente.crt
    key cliente.key
    ns-cert-type server
    #---------------------------------
    comp-lzo
    verb 3 [/TD]
    [/TR]
    [/TABLE]

    [h=3]Descripción:[/h] [TABLE="width: 508"]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"]
    [FONT=Bitstream Vera Sans, sans-serif]client : Especifica el tipo de configuración, en este caso tipo cliente OpenVPN.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]Port : Especifica el puerto que será utilizado para que los clientes VPN puedan conectarse al servidor.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]Proto: tipo de protocolo que se empleará en a conexión a través de VPN[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]dev : Tipo de interfaz de conexión virtual que se utilizará el servidor openvpn.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]remote : Host remoto o dirección IP en el cliente, el cual especifica al servidor OpenVPN. [/FONT]
    [FONT=Bitstream Vera Sans, sans-serif]El cliente OpenVPN puede tratar de conectar al servidor con host:port en el orden especificado de las opciones de la opción --remote.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]float : Este le dice a OpenVPN aceptar los paquetes autenticados de cualquier dirección, no solamente la dirección cuál fue especificado en la opción --remote.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]resolv-retry : Si la resolución del hostname falla para -- remote, la resolución antes de fallar hace una re-comprobación de n segundos.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]nobind : No agrega bind a la dirección local y al puerto.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]ca : Especifica la ubicación exacta del archivo de Autoridad Certificadora [.ca].[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]cert : Especifica la ubicación del archivo [.crt] creado para el servidor.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]key : Especifica la ubicación de la llave [.key] creada para el servidor OpenVPN.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]remote : Especifica el dominio o IP del servidor así como el puerto que escuchara las peticiones para servicio VPN.[/FONT]
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]comp-lzo[/FONT] : Especifica los datos que recorren el túnel VPN será compactados durante la trasferencia de estos paquetes.
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]persist-key[/FONT] : Esta opción soluciona el problema por llaves que persisten a través de los reajustes SIGUSR1, así que no necesitan ser releídos.
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]Persist-tun[/FONT] : Permite que no se cierre y re-abre los dispositivos TAP/TUN al correr los guiones up/down
    [/TD]
    [/TR]
    [TR]
    [TD="width: 500, bgcolor: #cccccc"] [FONT=Bitstream Vera Sans, sans-serif]verb : Nivel de información (default=1). Cada nivel demuestra toda la Información de los niveles anteriores. Se recomienda el nivel 3 si usted desea un buen resumen de qué está sucediendo.[/FONT]
    [FONT=Bitstream Vera Sans, sans-serif]0 -- No muestra una salida excepto errores fatales.
    1 to 4 – Rango de uso normal.
    5 -- Salida R y W caracteres en la consola par los paquetes de lectura y escritura, mayúsculas es usada por paquetes TCP/UDP minúsculas es usada para paquetes TUN/TAP
    [/FONT]

    [/TD]
    [/TR]
    [/TABLE]


    [FONT=Bitstream Vera Sans, sans-serif] Ahora necesitamos insertar el módulo [tun] para controlar los interfaces /dev/net/tunX que se necesiten en le sistema para el servicio OpenVPN:[/FONT]
    [FONT=Bitstream Vera Sans, sans-serif]Cargamos el módulo:[/FONT]
    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]modprobe tun[/FONT][/FONT]
    [/TD]
    [/TR]
    [/TABLE]
    [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]y habilitamos el IP forwarding:[/FONT][/FONT]
    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]echo 1 > /proc/sys/net/ipv4/ip_forward[/FONT][/FONT]
    [/TD]
    [/TR]
    [/TABLE]
    [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]Comprobamos que tenemos /dev/net/tun, si no existe lo creamos con:[/FONT][/FONT]
    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]mknod /dev/net/tun c 10 200[/FONT][/FONT]
    [/TD]
    [/TR]
    [/TABLE]
    [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif] Para la ejecución del cliente OpenVPN puede utilizar el siguiente guión y guardarlo con el nombre de [iniciovpncliente], tendrá el siguiente contenido:[/FONT][/FONT]


    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]#!/bin/bash
    #
    #-- Variables --
    RUTACONFIG=”/etc/openvpn/”
    NOMCONFIG=”cliente1-udp-1194.conf”
    #
    #-- Ejecución de la configuración para el servicio OpenVPN
    #
    /usr/bin/openvpn $RUTACONFIG./$NOMCONFIG
    #
    exit 0
    [/FONT]
    [/FONT]

    [/TD]
    [/TR]
    [/TABLE]
    [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]Y damos los permiso de ejecución correspondientes:[/FONT][/FONT]
    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]chmod +x iniciovpncliente[/FONT][/FONT]
    [/TD]
    [/TR]
    [/TABLE]
    [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif] Si desea ejecutar el servicio VPN al inicio del sistema (arranque), puede colocar lo siguiente dentro del archivo /etc/rc.local[/FONT][/FONT]
    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"] [FONT=Courier New, monospace][FONT=Bitstream Vera Sans, sans-serif]#inicia la configuración OpenVPN
    /donde/este/tu/archivo/iniciovpncliente
    [/FONT]
    [/FONT]

    [/TD]
    [/TR]
    [/TABLE]
    [h=3]Pruebas de Conexión[/h] Una ves efectuada la conexión al servidor VPN, para asegurarse que estamos dentro del túnel VPN y tenemos conexión al servidor, podemos realizar una búsqueda de dirección IP [Ping], así como también verificar el número IP asignado por el servidor VPN al estar conectarnos en el túnel.
    Para esto utilizaremos el necesitamos entrar a la terminal de comando, u[FONT=Bitstream Vera Sans, sans-serif]na ves estando en la consola en modo texto, utilice el comando [ifconfig] para ver que dirección IP se le fue asignado.[/FONT]


    [​IMG]
    [FONT=Bitstream Vera Sans, sans-serif]Verificación de asignación de dirección IP [tun] con ifconfig[/FONT]


    [​IMG]
    [FONT=Bitstream Vera Sans, sans-serif]Prueba de conexión con el comando [ping] hacia el servidor VPN[/FONT]
    [​IMG]
    [FONT=Bitstream Vera Sans, sans-serif]Comprobación de conexión hacia el servidor VPN en interfaz gráfica[/FONT]
    Si SELinux está activo en el sistema y se va a utilizar el componente de OpenVPN para NetworkManager (NetworkManager-openvpn) y se van a utilizar certificados almacenados en el directorio del usuario, se debe activar la política openvpn_enable_homedirs.

    [TABLE="width: 85%"]
    [TR]
    [TD="width: 100%"]
    setsebool -P openvpn_enable_homedirs 1[/TD]
    [/TR]
    [/TABLE]