Escolar Documentos
Profissional Documentos
Cultura Documentos
OpenVPN es una implementacion de VPN SSL la cual usa las extensiones OSI layer 2 3 para asegurar redes la cual usa los protocolos SSL/TLS, soporta diferentes medios de autenticacion como certificados, smart cards, y/o usuarios/contraseas, y permite politicas de control de acceso para usaurios o grupos usando reglas de firewall aplicadas a las interfaces virtuales de la VPN. OpenVPN 2.0 permite multiples clientes conectar a un solo servidor (proceso) OpenVPN sobre un simple puerto TCP o UDP. Para seguir este documento se requieren conocimientos basicos de redes TCP/IP como , direcciones IP, DNS, netmasks, subnets, IP routing, routers, interfaces de red, LANs, gateways, y reglas de firewall. Formas de trabajo del OpenVPN Aunque OpenVPN es muy sencillo de configurar e instalar, podemos dividir su forma de trabajo en 3 tipos: 1. Host a Host: Es el mtodo ms simple, nos permite encriptar la comunicacin entre dos PC las cuales debern solamente tener conexin; es decir: ambas PC deben poderse enviar paquetes directamente ya sea porque estn conectadas en la misma red local, o porque ambas estn conectadas a la internet y sean alcanzables entre s. 2. Road Warrior: Es una de las formas ms utilizadas y solicitadas por los estudiantes. Es el permitir que una mquina de alguien que est fuera de nuestra red (de forma temporal o permanente) pueda comunicarse con el servidor OpenVPN de nuestra red y una vez autenticado pueda entrar a ver y acceder los recursos de nuestra red local. En verdad es un caso especial de la conexin Red a Red que a continuacin mencionamos: 3. Red a Red: Uno de los mtodos ms usados. Mediante sta forma dos redes separadas en el espacio pueden comunicarse como si estuvieran unidas por un cable virtual (de ahi la V de VPN); la comunicacin entre ambas redes viajar encriptada una vez salgan de los servidores de openvpn y hasta que lleguen a su otro extremo.
OpenVPN es un sistema de creacin y uso de vpn muy modesto y fcil de utilizar que nos permite implementar vpn que de otras formas sera muy molesto o dificultoso de realizar. Las implementaciones IPSec, aunque supuestamente mejor elaboradas y soportadas por el kernel de linux, son muy difciles de implementar en mquinas con Windows. En el caso de OpenVPN existen clientes y servidores tanto para linux como para windows y su implementacin para redes o sistemas multiplataformas es muy sencilla de llevar a cabo.
Instalacin del OpenVPN Instalar OpenVPN en nuestro linux CentOS es realmente fcil. Solamente debemos tener instalado el EPEL y emitir el comando:
yum install openvpn
Despus de unos minutos, tendremos listo el paquete de OpenVPN Una vez instalado, podemos proceder a la creacin de las claves de encriptacin en el servidor y cliente. Activando OpenVPN Aunque todava no es el momento de activarlo, cuando hayamos configurado el openvpn podemos activarlo con:
service openvpn start chkconfig openvpn on
Con estos dos simples comandos podemos arrancar el openvpn en ambos extremos. Si necesitramos reiniciarlo (para que lea de nuevo la configuracin por ejemplo) podramos hacerlo con:
service openvpn restart
Este archivo "secret.key" tiene que ser copiado hacia el directorio /etc/openvpn del cliente y del servidor.
scp /etc/openvpn/secret.key IPDELCLIENTE:/etc/openvpn/
Configuracin Host a Host En la configuracin host a host, lo que lograremos es que el intercambio de paquetes entre dos mquinas se realice de forma encriptada. Para esto le indicaremos en el archivo de configuracin que al arrancar openvpn se crear automticamente una interfaz virtual con una IP privada en cada extremo: * 10.8.0.1 para el servidor * 10.8.0.2 para el cliente Y cualquier paquete que circule entre el cliente y el servidor va esas direcciones IP, viajar encriptado.
En este caso lo fundamental es que estamos indicndole al servidor que escuche en su puerto usuario (1194/udp) y que la IP que tomar la interfaz de vpn (tun) ser 10.8.0.1 y le dar al cliente la 10.8.0.2
Antes de configurar el cliente, en este caso el cliente 1, debemos traer del servidor el archivo /etc/openvpn/secret.key hacia el directorio /etc/openvpn del cliente. Esto lo hicimos ms arriba en este mismo documento. El archivo /etc/openvpn/client1.conf quedara como sigue:
# IP publica del servidor, poner IP real de su servidor! remote 200.100.50.25 # puerto port 1194 # dispositivo tunel dev tun # usamos ifconfig ipdelcliente ipdelservidor tun-mtu 1500 ifconfig 10.8.0.2 10.8.0.1 # clave privada, client1.key para ste ejemplo, recuerde cada usuario debe #tener su propia .key generada. El ejemplo de win esta comentado. #secret "c:\program files\company branded vpn\config\key.txt" secret /etc/openvpn/secret.key # ping cada 10 segs
ping 10 # compresin lzo comp-lzo # verbose moderado, callar mas de 10 mensajes iguales verb 4 mute 10
Podemos verificar en /var/log/messages que todo haya ido ok. Una vez levantemos los demonios en ambos lados, podemos hacer ping hacia la interfaz tun (10.8.0.1 en el servidor 10.8.0.2 en el cliente): desde el servidor:
ping 10.8.0.2
desde el cliente:
ping 10.8.0.1
Si el ping responde, todo est bien. Sino, sugerimos revisar en /var/log/messages para verificar qu fue mal.
uso en ese servidor! as que elimin el mod_ssl y puse al openvpn a escuchar por ah. Casi nadie puede bloquearte el 443 sin que reciba quejas! Trabajo en el servidor: borrando mod_ssl en el servidor:
rpm -e mod_ssl service httpd restart
listo, ya liber el 443, ahora voy a cambiar la configuracin del server.conf de openvpn con el fin de hacerme pasar como una conexin TCP a un servidor ssl:
vi /etc/openvpn/server.conf
la linea que dice port 1194 la elimino Entonces al final agrego esto:
port 443 proto tcp-server
Por favor tampoco olvides comentar las dos lneas del usuario y grupo:
#user nobody #group nobody
pues para trabajar con puertos bajos hace falta ser root. reinicia openvpn
service openvpn restart
y tambin comento la lnea que se refiere al puerto 1194 Entonces al final pongo:
port 443 proto tcp-client
y reinicio el servicio:
service openvpn restart
la vpn debe conectarse felizmente. Esto lo he probado hasta en Cuba, en el caso de Cuba recuerdo que tuve que usar un equipo con el puerto 80 sin usar y ah puse a escuchar el openvpn. Volvemos al servidor, instalacin de squid: Bueno, aqu regreso al servidor, e instalo el squid:
yum install squid service squid start chkconfig squid on
En el squid.conf debes autorizar la red 10.8.0.0/24: en mi caso, andaba de apuro, as que busqu, descoment y modifiqu dos lneas que decan as:
acl our_networks src 10.8.0.0/24 http_access allow our_networks service squid reload
Y ya configur mi firefox para que se conectara a 10.8.0.1 en el puerto 3128 y navegu!! bien, ya no tena restricciones. Tambin configur mi chat para que usara el mismo proxy pero para el caso de ciertos protocolos del chat, tuve que autorizar el uso de conexiones encriptadas en ciertos puertos, en el squid.conf modifiqu la lnea SSL_ports para que dijera:
#esta linea normalmente slo tiene el puerto 443 #los otros dos puertos son para chat acl SSL_ports port 443 5050 1863
2- Configuracin de RoadWarrior
Si usted ya configur y prob algn tipo de conexin openVPN anteriormente, por ejemplo la conexin host a host, no olvide borrar los contenidos del directorio /etc/openvpn especialmente los archivos .key y .conf puesto que nos pueden molestar o confundir para la siguiente configuracin. Consideraciones preliminares En el servidor de openvpn no te olvides de activar el ip_forwarding. Edita /etc/sysctl.conf y cambia ip_forwarding a 1 (est normalmente en 0). Entonces ejecuta:
sysctl -p
De olvidar lo anterior la vpn no har ping hacia la red interna! Ahora lo lento: En el servidor openvpn necesitamos crear una serie de claves y certificados iniciales, para poder autenticar y encriptar la informacin que transitar desde/hacia el servidor/clientes Contamos con una serie de scripts en el directorio /usr/share/openvpn*/easy-rsa los cuales nos ayudarn mucho a ejecutar sta tarea inicial. Como primer paso, sugerimos copiar ese directorio (easy-rsa) hacia /etc/openvpn y cambiarnos a ese directorio:
cp -a /usr/share/openvpn*/easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa/2.0
Creando el CA Una vez dentro de ste directorio procedemos a ejecutar los siguientes pasos:
. vars sh clean-all sh build-ca
Con ellos lo que haremos es: * Inicializar variables de ambiente para poder trabajar con los siguientes scripts de shell para generar las variables * Inicializamos el directorio de las claves (borrando potenciales archivos viejos) * build-ca: procedemos a generar el certificado CA En ste ltimo paso se nos pedir una serie de informacin sobre nuestra red/empresa que debemos llenar lo ms fielmente posible:
Generating a 1024 bit RSA private key ....................................................................................... .... .................................++++++.....................++++++ writing new private key to 'ca.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [KG]:EC State or Province Name (full name) [NA]:Pichincha Locality Name (eg, city) [BISHKEK]:Quito Organization Name (eg, company) [OpenVPN-TEST]:EcuaLinux Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:ecualinux Email Address [me@myhost.mydomain]:info@ecualinux.com
La variable que debemos explcitamente llenar (no dejar en blanco!) es: Common Name. Generacin del certificado y de la clave de encriptacin para el servidor Siguiente a la generacin del Certificado de autoridad, procedemos a crear el certificado del servidor y de su clave de encriptacin:
sh build-key-server server Generating a 1024 bit RSA private key ......................++++++ .........................++++++ writing new private key to 'server.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [KG]:EC State or Province Name (full name) [NA]:Pichincha
Locality Name (eg, city) [BISHKEK]:Quito Organization Name (eg, company) [OpenVPN-TEST]:EcuaLinux Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:server Email Address [me@myhost.mydomain]:info@ecualinux.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'EC' stateOrProvinceName :PRINTABLE:'Pichincha' localityName :PRINTABLE:'Quito' organizationName :PRINTABLE:'EcuaLinux' organizationalUnitName:PRINTABLE:'IT' commonName :PRINTABLE:'server' emailAddress :IA5STRING:'info@ecualinux.com' The stateOrProvinceName field needed to be the same in the CA certificate (Pichincha) and the request (Pichincha)
En ste paso, tambin se nos pedir nuevamente informacin sobre el certificado propio del servidor. En ste caso por favor, escoger en Common Name un nombre diferente al anteriormente escogido. En mi caso escog: server Este paso nos generar dos archivos en el directorio /etc/openvpn/easy-rsa/keys/ que se copiarn dentro del mismo servidor hacia /etc/openvpn, ellos son: * server.crt * server.key Generando certificados y claves privadas para los clientes Cada cliente debe tener su propio certificado y clave de seguridad, para cara cliente que tengamos deberemos repetir el siguiente paso. Los archivos obtenidos debemos copiarlos hacia el directorio /etc/openvpn/ de los clientes! En el caso de que nuestros clientes sean en windows, debemos copiarlos hacia c:\program files\openvpn\ Para generar el certificado y claves privadas ejecutamos en nuestro servidor, dentro del directorio /etc/openvpn/easy-rsa/
sh build-key client1 Generating a 1024 bit RSA private key ....................................................................................... ........++++++ ......++++++ writing new private key to 'client1.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [KG]:EC State or Province Name (full name) [NA]:Pichincha Locality Name (eg, city) [BISHKEK]:Quito Organization Name (eg, company) [OpenVPN-TEST]:EcuaLinux Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:client1 Email Address [me@myhost.mydomain]:info@ecualinux.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'EC' stateOrProvinceName :PRINTABLE:'Pichincha' localityName :PRINTABLE:'Quito' organizationName :PRINTABLE:'EcuaLinux' organizationalUnitName:PRINTABLE:'IT' commonName :PRINTABLE:'client1' emailAddress :IA5STRING:'info@ecualinux.com' Certificate is to be certified until Nov 24 05:25:40 2016 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
Debemos hacer notar que al ejecutar el programa sh build-key, le pasamos como parmetro el nombre del cliente (client1 en el ejemplo anterior) el cual debe ser diferente para cada cliente. En el common name ponemos el nombre del cliente (client1 en ste ejemplo) tal y como le pasamos de parmetro. Se pueden generar tantas claves como sean necesarias:
sh build-key client2 sh build-key client3
Esto nos generar dos claves y certificados ms, para client2 y client3, por favor, en common name debemos poner client2 client3 para cada caso. Generando parmetros de Diffie-Hellman El parmetro de Diffie-Hellman debemos generarlo as:
sh build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time ......................+...............................+...........
Archivos a copiar al servidor Hacia el directorio /etc/openvpn del servidor copiamos los siguientes archivos: * ca.crt * ca.key * server.key * server.crt * dh1024.pem Estos archivos estn presentes en: /etc/openvpn/easy-rsa/keys Archivos a copiar al cliente Hacia el directorio /etc/openvpn de cada cliente copiamos los siguientes archivos: * ca.crt * clientX.crt * clientX.key Tenga en cuenta que X es un nmero que se corresponde con el cliente (para el cliente 2 sera: client2.crt y client2.key por ejemplo). Estos 3 archivos deben copiarse de forma segura hacia el cliente, quiz mediante scp o algn medio magntico seguro. No deben enviarse por mail puesto que contienen la clave (.key) de encriptacin del cliente! Estos archivos estn presentes en: /etc/openvpn/easy-rsa/keys del servidor.
Para la configuracin en modo roadwarrior las configuraciones del cliente y el servidor varan un poco: Configuracin del servidor: El archivo /etc/openvpn/server.conf quedar as:
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem #Direcciones que se asignaran a los #clientes, el server es .1 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt #Ruta para que los clientes alcancen la red local del server (56.0/24) push "route 192.168.56.0 255.255.255.0" keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun status openvpn-status.log verb 4
Como podemos ver, hay nuevos parmetros, los ms importantes son: * un push de la ruta hacia la red local interna del servidor. Esa ruta estdica permitir que el road warrior vea a las mquinas de la red interna * server: Indica el rango de direcciones que se asignar a los clientes que se conecten, deben ser direcciones no similares a las de la red local. Configuracin del cliente: En el caso del cliente, as quedara el archivo de configuracin:
client dev tun proto udp remote 201.219.41.38 1194 resolv-retry infinite nobind #Las dos siguientes opciones no van en windows user nobody group nobody persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 4
* Client: indica que algunas configuraciones las tomar del servidor. * nobind: que no acte como servidor, que solamente vaya como cliente. * Recordar que cert y key deben ser nicas para cada cliente Si se fijan, el orden en que van los parmetros no importa mucho, he notado que el openvpn es muy noble en el cmo pones los parmetros, le da igual (mayormente).
El road warrior, con la configuracin antes explicada puede perfectamente ver las mquinas de la LAN (192.168.1.0/24) Pero qu tal que pusiramos una red detrs del roadwarrior?, quedara algo as:
LAN1 (192.168.1.0/24) --|LINUX1|-- INTERNET ----|Linux2|---- (LAN2: 192.168.2.0/24)
Fjense, es IMPERIOSO que ambas redes tengan diferente numeracin, es decir, que sean dos redes IPs diferentes, en ste caso lo son. Mediante OpenVPN podemos hacer que ambas redes puedan verse. Es decir, por ejemplo, que podamos hacer ping entre mquinas de la LAN1 y de la LAN2 (por ejemplo: 192.168.1.6 haciendo ping a 192.168.2.78 sin inconveniente alguno). Configuracin inicial: Como bien indiqu anteriormente, es una configuracin muy parecida al roadwarrior. El RoadWarrior sera Linux2 y el servidor sera Linux1. Hay que configurar entonces linux1 para ser el servidor, con todas las de la ley anteriormente explicado Hay que configurar linux2 para que acte como un cliente (road warrior) con todas las de la ley anteriormente explicados. Adiciones a la configuracin:
Asumamos que el ejemplo anterior aplica. Es decir, la subred del cliente (linux2) es la 192.168.2.0/24 el cliente le llamaremos client2 (de acuerdo a los certificados y claves generados como road warrior). Cambios en el servidor: Hay que crear el directorio ccd:
mkdir /etc/openvpn/ccd
Dentro de ste directorio creamos un archivo con el nombre del cliente (client2) que contiene la siguiente linea:
iroute 192.168.2.0 255.255.255.0
Aqu lo que le indicamos al servidor es que al conectarse client2 (este cliente remoto que es un linux con una red detrs) que por favor cree una ruta hacia la red 192.168.2.0/24 que vaya hacia ese cliente remoto. Con eso logramos que las mquinas de la red del servidor puedan ver a las del cliente. Despus hay que agregar esta linea a /etc/openvpn/server.conf
client-config-dir ccd route 192.168.2.0 255.255.255.0 client-to-client push "route 192.168.2.0 255.255.255.0"
La directiva client-config-dir permitir al servidor buscar dentro del directorio ccd configuraciones especiales segn el cliente (en este caso client2). Por qu tantas veces directivas de route? Sinceramente: no lo entiendo pero as es. Tenga cuidado, en este segundo caso no la agregamos en ccd/client2 sino en el archivo de configuracin del servidor (server.conf en mi caso) Cambios en el cliente En el cliente simplemente tenemos que poner en 1 el ip_forwarding, esto se hace tal y como se realiz en el servidor: editando el archivo /etc/sysctl.conf y despus ejecutando:
sysctl -p
debe salirte:
net.ipv4.ip_forward = 1
Ya, con esto las mquinas de una red podrn ver a las de la otra red. Si tuvieras varias redes remotas (client2 y client3 por ejemplo) entonces debes crear un archivo llamado client3 dentro de ccd con la configuracin propia de esa red. Y agregar las lineas de las rutas (route y push "route...") en el server.conf No te olvides de reiniciar los clientes. Me funciona.. pero si notas algo que falta o que sobre, bienvenido el comentario.
Configurarlo es fcil, lo que me tom y lo juro una madrugada fue el hecho de relacionarlo con iptables. Si tienes un iptables medio jodn, se te arma un lo. Mira que perd tiempo... la idea es que hay que habilitar el trfico hacia las interfaces TUN/TAP pues sino no se conectan las mquinas. El mejor sntoma es que hayas seguido todas mis indicaciones aqui y no te trabaje.. por supuesto te recomiendo siempre mirar dentro de los logs: /var/log/messages de ambos extremos pues puede que el problema que tengas sea otro (typos o errores al escribir). Ahora, si ests seguro de que la openvpn est bien, te sugiero bajar el iptables (flush) en ambos extremos, para que verifiques si funciona el openvpn sin el firewall. Si te funcion con el iptables abajo, entonces debes agregar estas lneas en el servidor (quiz en el cliente tambin):
iptables iptables iptables iptables iptables iptables iptables -A -A -A -A -A -A -A INPUT -i tun+ -j ACCEPT FORWARD -i tun+ -j ACCEPT FORWARD -o tun+ -j ACCEPT OUTPUT -o tun+ -j ACCEPT INPUT -i tap+ -j ACCEPT FORWARD -i tap+ -j ACCEPT INPUT -p udp --dport 1194 -j ACCEPT
Con ellas lo que logras es abrir el puerto 1194/UDP para que entre la conexin de los clientes. Y adems acceptar conexiones tun/tap. Aunque realmente con las tun basta pues son las que usamos en estos ejemplos. Un firewall que ya tengo preparado para esto es el rc.firewall modificado por mi, aqui lo tienes listo para ser usado: http://cursos.ernestoperez.com/rc.firewall Busca la palabra openvpn dentro de este script ahi estn comentadas las lneas, slo tienes que descomentarlas y reiniciarlo.
5- OpenVPN y windows
OpenVPN puede trabajar tanto como cliente cuanto como servidor en mquinas windows y linux. Es decir puede quedar cualquier combinacin: windows windows, windows linux, linux windows o la mejor: linuxlinux. Te sugiero que comiences linux-linux pues tenemos ms herramientas para trabajar y verificar. Yo lo que hice fue, una vez configurado bien un cliente en linux, mov los archivos de /etc/openvpn hacia la mquina de windows y listo me trabaj. En el caso de windows los archivos de configuracin deben ir en c:\program files\openvpn\config Te sugiero que una vez muevas los archivos de configuracin de cliente linux al cliente windows, borres estos archivos del cliente linux. Recuerda que los archivos de configuracin y claves deben ser particulares para cada cliente, no debes usarlos en dos clientes, por eso pido que los borres del cliente linux.
En el caso de windows hay dos parmetros de configuracin que no aplican y no se pueden poner en las configuraciones son: user y group Ellos dos permiten degradar los privilegios a un usuario diferente del de administrador, pero en windows esto no se puede hacer, openvpn corre como administrador.
As que el primer da me sali todo mal, lo dej intentando hacer connect al 1194 y el proxy no me dejaba. As que como no poda convencerles de abrir el 1194, opt por usar lo que brindaban, el 563, yo tena el 563 sin uso en ese servidor remoto as que le d uso. Configuracin del servidor para aceptar conexiones desde un proxy: Al servidor hay que indicarle que la conexin ser en tcp:
proto tcp port 563
Por qu comentarlas? Porque el puerto que usaremos ser el 563, es un puerto bajo, menor a 1024 y requiere de acceso de root por eso no se puede disminuir privilegios Atencin: Recuerda abrir el puerto 563/tcp en tu iptables!!!
Configuracin del cliente para hacer conexiones a travs de un proxy: En el el archivo .conf del cliente agregar:
#reintentar hasta que se pueda, y conectarse al servidor proxy: 192.168.1.1 en el puerto 3128 http-proxy-retry http-proxy 192.168.1.1 3128
En el cliente adems hay que indicarle que el servidor de destino corre en el puerto 563 y en tcp.
proto tcp port 563
Aqui cruzas los dedos, reinicias el cliente y el servidor y debe funcionarte. Los problemas tipicos son relacionados con los privilegios de root (dejar el user y el group) y con el puerto que el squid est dispuesto a aceptar, sugiero el 563 pues tipicamente lo permiten.
Me gusta el arnos-iptables-firewall, aqui puedes encontrar el rpm http://centos5.centos.ec 3- La ruta por defecto de ambas redes trata de que sea el servidor de openvpn, verificalo con route print. Si el servidor openvpn no es el mismo servidor que sirve de gateway para tu red, debes crear una ruta esttica en el servidor de gateway para enviar los paquetes con destino a la red remota hacia el servidor openvpn. 4- Estn encendidos ambos servidores de openvpn? 5- En los servidores aparece una ruta esttica? route -n, verificar que haya una ruta hacia la red LAN contraria que vaya por la interfaz tun0, por ejemplo as:
192.168.2.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
6- Apaga el NetworkManager.. que haces usando ambiente grfico en un servidor? Apaga el servicio messagebus, apaga el avahi-daemon!! Vete a modo texto.. apaga cualquier otro servicio que no utilices por si acaso.
service NetworkManager stop chkconfig NetworkManager off service avahi-daemon stop chkconfig avahi-daemon off service messagebus stop chkconfig messagebus off
7- Est bien puesta la hora de la mquina? Esta fue otra que me hizo perder, tiempo. Los certificados se generan desde una fecha/hora hasta otra fecha/hora (aunque no definas esto manualmente)... la fecha/hora de inicio es la hora del servidor.. si la tienes mal en uno de ambos servidores, entonces el cert no tomar hasta que la hroa no se cumpla.. si el drift entre ambos es muy grande, entonces te tomar aos. Actualiza la hora con ntpdate antes de crear los certs
Si usas otro firewall y ests desesperado porque no te funciona openvpn, puedes descartar problemas de firewall instalando este simple firewall.. y una vez que ya logres configurar y probar openvpn, puedes regresar a tu firewall si deseas. Lo he usado para instalar conexiones openvpn y es excelente. Me permite hacer NAT y adems por supuesto la OpenVPN. Instalacion Bajar el rpm de nuestro repo.
Escoger y bajar la ultima versin que tengas. Si puedes bjalo con wget. En mi caso hice:
wget http://centos5.centos.ec/i386/arno-iptables-firewall-1.8.8o-1.noarch.rpm rpm -Uvh arno-iptables-firewall-1.8.8o-1.noarch.rpm
En mi caso supondr que mi interfaz externa es eth0 y la interna es eth1 con la red LAN 192.168.0.0/24 Buscar y cambiar las siguientes lineas (por favor no dejarles el signo de # al inicio!)
EXT_IF="eth0" EXT_IF_DHCP_IP=0 INT_IF="eth1" INTERNAL_NET="192.168.0.0/24" NAT=1 TRUSTED_IF="tun+" # esta es opcional, slo si tienes transparent proxy HTTP_PROXY_PORT="3128" #esta del 22 es opcional, para que puedas ssh a ambos servidores) OPEN_TCP="22" OPEN_UDP="1194"
Te debe funcionar el NAT y la VPN por el puerto 1194/UDP.. asi como el ssh por el puerto 22/TCP