Titulo : explicacion breve sobre la instalacion de openvpn en plataformas linux fecha : 8 - 1 - 2003 autor : zgor@int80h.net Introduccion ------------ En este pequeño documento pretendo explicar sin entar mucho en detalle los pasos a seguir para instalar y configurar el software OpenVPN (http://openvpn.sourceforge.net) en plataformas linux OpenVPN se distribuye bajo la licencia GPL , nos permite crear un tunnel cifrado PtP(1 a 1) a traves de redes inseguras como puede ser Internet. Existen muchas otras alternativas como vpnd , tunnelvision , ... La verdad es que solo he probado vpnd y openvpn y me quedo con la esta ultima por la flexibilidad y a la vez sencillez de uso. Mediante estos tuneles podriamos enlazar varias redes locales a traves de internet. La verdad, la razon que me empujó a hacer este documento es Bilbowireless(htttp://www.bilbowireless.net , www.redlibre.net), una iniciativa para crear una red libre en bilbao y demas poblaciones (redlibre) , utilizando tecnologia inalambrica 802.11b para los clientes(clientes de red) , los nodos que esten aislados del resto se comunican con los demas a traves de internet , usando tuneles. Instalacion ------------ -Requisistos: Es necesario disponer del driver tun/tap integrado en el kernel o como módulo.Al compilar el kernel, esta la seccion NetworkDevice Support(al principio) Una vez tengamos el driver , tendremos que configurarlo: mknod /dev/net/tun c 10 200 (mkdir /dev/net sino lo tenemos) Añadimos al fichero /etc/modules.conf: alias char-major-10-200 tun cargamos el driver : modprobe tun activamos el routing : echo 1 > /proc/sys/net/ipv4/ip_forward (estos pasos vienen descritos en el README , INSTALL del paquete openvpn) Es necesario tambien disponer de la libreria LZO(para temas de compresion), esta disponible en : http://www.oberhumer.com/opensource/lzo/ , en Debian, los nombres de los paquetes son : liblzo-dev, liblzo1. Necesitamos tambien la libreria OpenSSL , paquete debian : libssl-dev En lo que respecta a temas de conexiones, necesitamos tener abierto un puerto udp por cada tunel que queramos levantar en nuestro firewall/router , por defecto openvpn usa el 5000 udp -Instalación: Las pruebas que he podido hacer han sido sobre equipos corriendo Debian Woody y Debian Unstable. En el caso de la unstable, es ligeramente mas sencillo, ya que el paquete openvpn se encuentra disponible para descargar con el apt En los demas casos, lo primero que tenemos que hacer es descargar la ultima version de OpenVPN de http://openvpn.sourceforge.net(.tar.gz). En concreto la version que utilizo yo es la 1.3.2. Si utilizas una distribucion compatible con rpm , puedes optar por bajarte los binarios precompilados. Descomprimimos el paquete : tar zxvf openvpn-1.3.2.tar.gz ./configure make make install si todo ha ido bien, ya tenemos el binario instalado -Configuracion(debian): El paquete .deb crea el directorio /etc/openvpn con una configuracion base. En el caso generico , tenemos que seguir estos pasos : crear el directorio /etc/openvpn Dentro del directorio openvpn-1.3.2/ , tenemos ejemplos de configuracion, los scripts que nos interesan son openvpn-shutdown.sh y openvpn-startup.sh. Los podemos copiar a /sbin por ejemplo si queremos Editamos el scipt openvpn-startup.sh de tal forma que se adapte a nuestras necesidades, lo que tenemos que cambiar son las tres ultimas lineas : openvpn --cd $dir --daemon --config vpn1.conf openvpn --cd $dir --daemon --config vpn2.conf openvpn --cd $dir --daemon --config vpn2.conf Si tenemos un solo tunel , comentamos las 2 ultimas lineas y si nos hace falta alguna linea mas la añadimos con vpn3.conf o el fichero que que sea. El parametro --daemon es para que openvpn corra como demonio. El siguiente paso es generar las claves para el cifrado o copiarlas a /etc/openvpn/ si ya las tenemos, para generarlas : openvpn --genkey --secret /etc/openvpn/clave1.key (por ejemplo) Ahora tenemos que crear en /etc/openvpn/ los ficheros de configuracion para nuestros tuneles Para el primer tunel, editamos /etc/openvpn/vpn1.conf El contenido tipico podria ser el siguiente : dev tun remote ip.remota.del.otro.extremo (ip publica remota) ifconfig ip.privada.origen ip.privada.destino netmask mascara (ejemplo : ifconfig 172.16.0.1 172.16.0.2 netmask 255.255.255.252) up ./tunnel1.up (script que se ejecuta al levantar el tunel) secret clave1.key (la clave de cifrado) rport 5000 (puerto remoto del tunnel) lport 5000 (puerto local del tunnel) port 5000 (puerto del tunel, un poco redundante pero bueno) ping 15 (esta opcion fuerza openvpn a generar trafico cada 15 segundos,soluciona problemas con algunos firewalls/routers) verb 5 En el otro extremo del tunnel , la configuracion seria identica (cambiando el valor de remote y en ifconfig invertir origen y destino) El script /etc/openvpn/tunnel1.up nos puede servir si queremos añadir alguna ruta estatica y tal Por el momento bastaria con crearlo o quitar la linea del vpn1.conf Uso ----- Cuando ejecutemos openvpn-startup.sh, se nos cargara el modulo tun y tendremos levantados tantos interfaces tun como tuneles configurados Podemos probar a hacer un ping a la ip virtual de destino a ver si ha salido todo bien (ping 172.16.0.2 por ejemplo) Conclusiones ------------ Bueno, espero que aunque sea sirva para que la gente se anime a empezar con el tema de los tuneles y tal. Para informacion detallada recomiendo visitar la web oficial http://openvpn.sourceforge.net. Si os interesa probar vpnd, teneis un texto de MadridWireless en http://madridwireless.net/vpnd.shtml En http://www.txipinet.com/ssh.php , podeis encontrar informacion tuneles cifrados usando ssh Para cualquier duda,sugerencia,critica, .... podeis enviarme un email a zgor@int80h.net zgor@int80h.net http://zgor.int80h.net