Configurar OpenVPN Roadwarrior en Debian 6 y Windows


Vamos a configurar OpenVPN del modo RoadWarrior con PKI (Public Key Infraestructure)
Un claro ejemplo para explicar el modo RoadWarrior: Son 1 o mas clientes que se conectan (autenticándose) de manera remota desde una PC hacia nuestro «linux OpenVPN Server», y utilizando internet como medio de acceso para ingresar de manera segura a los recursos de la empresa, como serian, un servidor de aplicaciones, mail, recursos compartidos, etc.

Comenzamos con la instalacion:

1) Instalamos OpenVPN

# apt-get install openvpn

2)  comenzamos generando los certificados:

01. #  cp -a /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/
02. #  cd /etc/openvpn/easy-rsa/2.0/
03. #  . ./vars
04. #  ./clean-all
05. #  ./build-ca
06. #  ./build-key-server servidor
07. #  ./build-key cliente1
08. #  ./build-dh
09. #  cd keys
10. #  cp ca.crt ca.key servidor.crt servidor.key dh1024.pem  /etc/openvpn/

Explicación paso a paso:
01: Copiamos los scripts con el comando «cp»
02: Nos posicionamos sobre el directorio de scripts
03: Inicializamos variables «. ./vars»
04: blanqueamos el directorio de claves «./clean-all»
05: generamos certificado CA  «./build-ca»

Aquí nos nos preguntara un montón de datos sobre la empresa que utiliza el certificado. Sugiero llenarlo con datos reales. NOTA: Debemos prestar mucha atención en el «Common Name».  Si en Common Name completamos con «TECHNICO» Lo anotamos o recordamos para no repetirlo en los proximos pasos; ya que en las 3 veces que lo generaremos, necesitamos nombres que no se repitan.

06: Creamos las credenciales para el servidor. » ./build-key-server servidor».

Completamos con los datos anteriores, sin repetir «common name» (como mencionamos anteriormente).

07: Creamos las credenciales para el cliente. » ./build-key cliente1″. Esto va a generar «cliente1.key» y «cliente1.crt»
08: Creamos los parámetros con el comando»./build-dh».  *dh: Diffie Hellman (Protocolo Criptografico).
09: nos posicionamos en el directorio donde se generaron los certificados «cd keys».
10: copiamos los certificados a /etc/openvpn/

3) Continuamos con la configuración:
Instalamos el editor VI y luego entramos a editar server.conf

# apt-get install vim
# vi /etc/openvpn/server.conf

USO DEL VI Editor
a) Para editar presionan la letra «i» o la tecla <insert>. Luego para finalizar de editar <esc>
b) para guardar y salir del vi: escriben ‘ : ‘ (dos puntos); aparecera un path para escribir.
c) Escriben ‘wq’ y presionan <Enter> (w de write y q de quit). Con esto ya deberian estar nuevamente en el path de linux.
Archivo server.conf:

port 1194
proto udp
dev tun
persist-tun
ca ca.crt
cert servidor.crt
key servidor.key
dh dh1024.pem

#Direcciones que se asignaran a los clientes, el server es .1
server 10.1.1.0 255.255.255.0

ifconfig-pool-persist ipp.txt

#Routeo para que los clientes alcancen la red local del server (1.0/24)
push .route 192.168.1.0 255.255.255.0.

#Para que los clientes se visualicen entre ellos
#Debe ir junto con la opción routeback en el shorewall
client-to-client

keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 4

4) Configuración de cliente OpenVPN en Windows XP, Vista o Seven.

a) Descargar: openvpn-2.0.9-gui-1.0.3-install.exe y luego instalarlo.
b) Copiar a la carpeta «C:\Program Files\OpenVPN\config» con WinSCP o desde un Sftp los archivos:

  • /etc/openvpn/easy-rsa/2.0/keys/ca.crt
  • /etc/openvpn/easy-rsa/2.0/keys/cliente1.crt
  • /etc/openvpn/easy-rsa/2.0/keys/cliente1.key

c) Creamos un archivo TXT y lo guardamos como cliente1.ovpn en «C:\Program Files\OpenVPN\config». Luego le pegamos lo siguiente:

tls-client
client
dev tun
proto udp
remote 192.168.1.135   # IP o dominio del servidor OpenVPN
float #debido a que la IP de arriba es dinamica
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"  #revisar las comillas luego de copy/paste
cert "C:\\Program Files\\OpenVPN\\config\\cliente1.crt"
key "C:\\Program Files\\OpenVPN\\config\\cliente1.key"
comp-lzo
verb 4

5) Reiniciamos openvpn en Debian

#  /etc/init.d/openvpn restart

Stopping virtual private network daemon: server.
Starting virtual private network daemon: server.

6) Iniciamos OpenVpn en windows. Ver Imagen

Click con boton derecho en el iconito señalado, y luego click en Connect. Si no nos arroja ningún error significa que todo es un éxito.

______________
Nicolas Tech-Nico.com

9 comentarios en “Configurar OpenVPN Roadwarrior en Debian 6 y Windows

  1. Pingback: Configurando OpenVPN entre máquinas Linux e Windows | Blog Seja Livre

  2. Buenisima la nota. Hacía falta un buen articulo como estos.

    Si no molesta, tengo dos preguntas. En la linea

    remote 192.168.1.135

    No debería haber una ip real, para que la maquina clienta encuentre al server?

    La otra pregunta es, se puede utilizar ddns con esta tecnología, es decir, que las computadoras windows conecten a una maquina representada por ejemplo como maquina.no.ip.com?

    Gracias por su aporte 🙂

  3. Hola Sergio: Si; donde dice 192.168.1.135 deberia ir una IP publica o en su defecto un dominio como http://www.tudominio.com o por que no un dominio de dyndns. Deberia funcionar sin ningun inconveniente. En mi caso tengo esa ip privada porque lo probe con mi maquina virtual virtual box. Saludos. Nicolas

  4. hola que tal. soy nuevo en esto de linux… estoy intentando montar este servicio pero cuando coloco ./var me indiga lo siguiente:
    bash: ./var: Permiso denegado
    lo estoy intentando en debian 6 recien instalado, espero me puedas guiar al respecto, saludos…

  5. hola buen tutorial
    soy nuevo en esto de VPN.
    sere preciso…
    al momento de iniciar openvpn en windows, al quererme conectar con mi servidor, me manda el siguiente mensaje…
    » Inactivity timeout (–ping-restart), restarting
    SIGUSR1[soft,ping-restart] received, process restarting
    Re-using pre-shared static key
    LZO compression initialized »

    y se repite otra vez…

    no se como puedo solucionarlo..he buscado y buscado..pero no encuentro la solucion…

    a que se debe este errror y como lo puedo solucionar.. 😀
    gracias !!!

Deja un comentario