Você está na página 1de 8

Cmo configurar una red privada virtual VPN con OpenVPN

junio 3, 2008
Las conexiones VPN (Virtual Private Network) pueden servir para una gran variedad de escenarios en las redes informticas de hoy en da, ofreciendo una gran flexibilidad y seguridad a la hora de planificarlas y administrarlas, como por ejemplo conectar varias oficinas separadas geogrficamente como si fuera slo una red de una forma segura o permitir una conexin segura a la red interna de la empresa a trabajadores que normalmente estn trabajando remotamente como por ejemplo comerciales. El escenario que voy a utilizar en la configuracin lo podis ver en el siguiente dibujo:

Utilizo como servidor VPN un servidor linux Fedora core 6 y como cliente vpn un porttil con Windows XP Sp2. Lo primero que tenemos que hacer es instalar openvpn, en el servidor fedora, utilizando el comando: # yum install openvpn Esto instalar todo el paquete rpm de OpenVPN y cualquier otro mdulo que necesite para su funcionamiento. Una vez instalado OpenVPN podemos empezar a configurar el servidor, creamos el master Certificate Authority (CA) y la key que utilizaremos para la autenticacin Servidor-cliente. Ir al directorio: /usr/share/openvpn/easy-rsa/2.0 donde encontraremos los ejecutables para crear los certificados y llaves. Editar el fichero vars y cambiar los datos siguientes por vuestros datos:

export KEY_COUNTRY=ES( el cdigo de tu pas) export KEY_PROVINCE=TG( la iniciales de tu provincia) export KEY_CITY=Tuciudad export KEY_ORG=Tuempresa export KEY_EMAIL=tuemail@tuemail.ccom Despus ejecuta los siguientes comandos: #source ./vars #./clean-all #./build-ca (crea el certificate Authority (CA)) y rellena los siguientes campos o deja el sealado por defecto cuando te lo pregunte: Country Name (2 letter code) [ES]: State or Province Name (full name) [TG]: Locality Name (eg, city) [Tuciudad]: Organization Name (eg, company) [Empresa]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your servers hostname) [server]: ( nombre de tu servidor) Email Address [tuemail@email.ccom]: A continuacin crearemos el certificado y la llave privada para el servidor: #./build-key-server server Y ahora crearemos el certificado y la llave privada para los clientes: #./build-key portatil1 #./build-key portatil2 #./build-key portatil3 Una vez creado los certificados y llaves correspondientes generaremos los parmetros llamados Diffie Hellman con el siguiente comando: #./build-dh Al final se nos ha creado un conjunto de certificados y llaves, en el directorio /usr/share/openvpn/easy-rsa/2.0/key

de todos los archivos creados tenemos que copiar al ordenador cliente los ficheros ca.crt, portatil1.crt y portatil1.key ( al ordenador portatil1) y lo mismo para los otros ordenadores clientes si los hubiera. podemos utilizar para copiarlo winscp. Ahora configuraremos el fichero server.conf del servidor que en fedora se encuentra en el directorio: /usr/share/doc/openvpn-2.1/sample-config-files/ La configuracin final del fichero server.conf es: proto udp dev tun ca /usr/share/openvpn/easy-rsa/2.0/ca.crt # ponemos el directrorio donde estan creadas las llaves cert /usr/share/openvpn/easy-rsa/2.0/server.crt key /usr/share/openvpn/easy-rsa/2.0/server.key dh /usr/share/openvpn/easy-rsa/2.0/dh1024.pem server 10.8.0.0 255.255.255.0 # la red VPN ifconfig-pool-persist ipp.txt push route 192.168.0.0 255.255.255.0 # cambiar esta direccin de red a la red privada que se encuentra tu servidor client-to-client # si quieres que los clientes vpn se vean entre ellos keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3 Ahora vamos a configurar el ordenador cliente: Una vez descargado openvpn para la versin windows e instalado, ir al directorio: C:\Archivos de programa\OpenVPN\config editar el fichero client.ovpn y poner lo siguiente:

client dev tun dev-node mytap # el nombre del adaptador virtual que se ha creado en conexiones de red proto udp remote 87.34.3.22 1194 # La ip pblica del router de la empresa resolv-retry infinite nobind persist-key persist-tun ca ca.crt # ruta donde has copiado el fichero ca.crt en el ordenador cliente cert portatil1.crt # ruta donde has copiado el fichero portatil1.crt key portatil1t1.key # ruta donde has copiado el fichero portatil1.key ns-cert-type server comp-lzo verb 3 Una vez configurado todo esto podemos comprobar si la conexin VPN se realiza con xito, para ello ejecutaremos el siguiente comando en el servidor: #openvpn server.conf y veris algo parecido a: Mon Jun 2 17:53:41 2008 OpenVPN 2.1_rc2 i386-redhat-linux-gnu [SSL] [LZO2] [EPOLL] built on Mar 3 2007 Mon Jun 2 17:53:41 2008 Diffie-Hellman initialized with 1024 bit key Mon Jun 2 17:53:41 2008 TLS-Auth MTU parms [ ] Mon Jun 2 17:53:41 2008 TUN/TAP device tun0 opened Mon Jun 2 17:53:41 2008 TUN/TAP TX queue length set to 100 Mon Jun 2 17:53:41 2008 /sbin/ip link set dev tun0 up mtu 1500 Mon Jun 2 17:53:41 2008 /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2

Mon Jun 2 17:53:41 2008 /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 Mon Jun 2 17:53:41 2008 Data Channel MTU parms [ ] Mon Jun 2 17:53:41 2008 Socket Buffers: R=[110592->131072] S=[110592->131072] Mon Jun 2 17:53:41 2008 UDPv4 link local (bound): [undef]:1194 Mon Jun 2 17:53:41 2008 UDPv4 link remote: [undef] Mon Jun 2 17:53:41 2008 MULTI: multi_init called, r=256 v=256 Mon Jun 2 17:53:41 2008 IFCONFIG POOL: base=10.8.0.4 size=62 Mon Jun 2 17:53:41 2008 IFCONFIG POOL LIST Mon Jun 2 17:53:41 2008 client1,10.8.0.4 Mon Jun 2 17:53:41 2008 Initialization Sequence Completed Ahora en el ordenador cliente ejecutaremos el siguiente comando: openvpn client.ovpn Y veris algo parecido a: Mon Jun 02 17:42:13 2008 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006 Mon Jun 02 17:42:13 2008 LZO compression initialized Mon Jun 02 17:42:13 2008 Control Channel MTU parms [ ] Mon Jun 02 17:42:13 2008 Data Channel MTU parms [ ] Mon Jun 02 17:42:13 2008 Local Options hash (VER=V4): 41690919 Mon Jun 02 17:42:13 2008 Expected Remote Options hash (VER=V4): 530fdded Mon Jun 02 17:42:13 2008 UDPv4 link local: [undef] Mon Jun 02 17:42:13 2008 UDPv4 link remote: 87.34.3.22:1194 Mon Jun 02 17:42:13 2008 TLS: Initial packet from 87.34.3.22:1194, sid=af133203 12cvf073 Mon Jun 02 17:42:13 2008 VERIFY OK: depth=1, /C=ES/ST=TG/L=Tuciudad/O=Tucompaia/OU=information_technology/CN=server/emailAddress=tue mail@tuemail.ccom Mon Jun 02 17:42:13 2008 VERIFY OK: nsCertType=SERVER

Mon Jun 02 17:42:13 2008 VERIFY OK: depth=0, /C=ES/ST=TG/L=tuciudad/O=tucompaa/OU=information_technology/CN=server/emailAddress=tuem ail@tuemail.ccom Mon Jun 02 17:42:13 2008 Data Channel Encrypt: Cipher BF-CBC initialized with 128 bit key Mon Jun 02 17:42:13 2008 Data Channel Encrypt: Using 160 bit message hash SHA1 for HMAC authentication Mon Jun 02 17:42:13 2008 Data Channel Decrypt: Cipher BF-CBC initialized with 128 bit key Mon Jun 02 17:42:13 2008 Data Channel Decrypt: Using 160 bit message hash SHA1 for HMAC authentication Mon Jun 02 17:42:13 2008 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA Mon Jun 02 17:42:13 2008 [server] Peer Connection Initiated with 87.34.3.22:1194 Mon Jun 02 17:42:14 2008 SENT CONTROL [server]: PUSH_REQUEST (status=1) Mon Jun 02 17:42:14 2008 PUSH: Received control message: PUSH_REPLY,route 192.168.0.0 255.255.255.0,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5 Mon Jun 02 17:42:14 2008 OPTIONS IMPORT: timers and/or timeouts modified Mon Jun 02 17:42:14 2008 OPTIONS IMPORT: ifconfig/up options modified Mon Jun 02 17:42:14 2008 OPTIONS IMPORT: route options modified Mon Jun 02 17:42:14 2008 TAP-WIN32 device [mytap] opened: \\.\Global\{87A3A26E-2E66-4AFE-95502567642AAE89}.tap Mon Jun 02 17:42:14 2008 TAP-Win32 Driver Version 8.4 Mon Jun 02 17:42:14 2008 TAP-Win32 MTU=1500 Mon Jun 02 17:42:14 2008 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.6/255.255.255.252 on interface {87A3A26E-2E66-4AFE-9550-2567642AAE89} [DHCP-serv: 10.8.0.5, lease-time: 31536000] Mon Jun 02 17:42:14 2008 Successful ARP Flush on interface [65541] {87A3A26E-2E66-4AFE-95502567642AAE89} Mon Jun 02 17:42:14 2008 TEST ROUTES: 0/0 succeeded len=2 ret=0 a=0 u/d=down Mon Jun 02 17:42:14 2008 Route: Waiting for TUN/TAP interface to come up Mon Jun 02 17:42:15 2008 TEST ROUTES: 0/0 succeeded len=2 ret=0 a=0 u/d=down

Mon Jun 02 17:42:15 2008 Route: Waiting for TUN/TAP interface to come up Mon Jun 02 17:42:16 2008 TEST ROUTES: 0/0 succeeded len=2 ret=0 a=0 u/d=down Mon Jun 02 17:42:16 2008 Route: Waiting for TUN/TAP interface to come up Mon Jun 02 17:42:17 2008 TEST ROUTES: 0/0 succeeded len=2 ret=0 a=0 u/d=down Mon Jun 02 17:42:17 2008 Route: Waiting for TUN/TAP interface to come up Mon Jun 02 17:42:18 2008 TEST ROUTES: 0/0 succeeded len=2 ret=0 a=0 u/d=down Mon Jun 02 17:42:18 2008 Route: Waiting for TUN/TAP interface to come up Mon Jun 02 17:42:19 2008 TEST ROUTES: 2/2 succeeded len=2 ret=1 a=0 u/d=up Mon Jun 02 17:42:19 2008 route ADD 192.168.1.0 MASK 255.255.255.0 10.8.0.5 Mon Jun 02 17:42:19 2008 Route addition via IPAPI succeeded Mon Jun 02 17:42:19 2008 route ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.5 Mon Jun 02 17:42:19 2008 Route addition via IPAPI succeeded Mon Jun 02 17:42:19 2008 Initialization Sequence Completed Mon Jun 02 17:42:35 2008 TCP/UDP: Closing socket Mon Jun 02 17:42:35 2008 route DELETE 10.8.0.0 MASK 255.255.255.0 10.8.0.5 Mon Jun 02 17:42:35 2008 Route deletion via IPAPI succeeded Mon Jun 02 17:42:35 2008 route DELETE 192.168.0.0 MASK 255.255.255.0 10.8.0.5 Mon Jun 02 17:42:35 2008 Route deletion via IPAPI succeeded Mon Jun 02 17:42:35 2008 Closing TUN/TAP interface Mon Jun 02 17:42:35 2008 SIGTERM[hard,] received, process exiting Para comprobar la conexin podemos hacer un ping a la ip privada del servidor ping 192.168.0.1 Haciendo ping a 192.168.0.1 con 32 bytes de datos: Respuesta desde 192.168.0.1: bytes=32 tiempo<1m TTL=64 Respuesta desde 192.168.0.1: bytes=32 tiempo<1m TTL=64 Respuesta desde 192.168.0.1: bytes=32 tiempo<1m TTL=64

Respuesta desde 192.168.0.1: bytes=32 tiempo<1m TTL=64 y comprobamos que la conexin est funcionando, ahora tenemos una conexin VPN al servidor de la empresa. Algunas consideraciones:

Para que la conexin funcione hay que redirigir el puerto 1194 del router de la empresa al servidor vpn. Hay que tener en cuenta que para unir dos redes separadas a travs de una VPN, el rango de ip privadas tienen que ser diferente subnet para que funcione, no pueden pertenecer a la misma como por ejemplo las dos a 192.168.0.0 255.255.255.0.

Si quisiramos tener tambin conexin con los dems ordenadores de la empresa, tenemos que comprobar que Ip Forwarding est activado en el servidor vpn, para activarlo se ejecuta el siguiente comando: echo 1 > /proc/sys/net/ipv4/ip_forward Adems tendramos que configurar en el router de la empresa una ruta que indique que la forma para llegar a la red de la vpn cliente es a travs del servidor VPN. Bueno como podis comprobar configurar un servidor VPN con OpenVPN no es tan difcil, aunque esta configuracin es muy sencilla, se puede complicar un poco ms dependiendo del nmero de redes a unir, y diferentes configuraciones para cada una. Un saludo, Arturo La Mc crory CSSA Certified Sonicwall Security Administrator ACE Acronis Certified Engineer

Você também pode gostar